mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-20 06:58:56 +00:00
See #4481. Faster implementation of object hiding and toggline viewport visibility.
This commit is contained in:
@@ -1716,15 +1716,20 @@ class Drawing(blenderbim.core.tool.Drawing):
|
|||||||
|
|
||||||
filtered_elements = cls.get_drawing_elements(drawing) | cls.get_drawing_spaces(drawing)
|
filtered_elements = cls.get_drawing_elements(drawing) | cls.get_drawing_spaces(drawing)
|
||||||
filtered_elements.add(drawing)
|
filtered_elements.add(drawing)
|
||||||
|
# Hide everything first, then selectively show. This is significantly faster.
|
||||||
|
with bpy.context.temp_override(area=next(a for a in bpy.context.screen.areas if a.type == "VIEW_3D")):
|
||||||
|
bpy.ops.object.hide_view_set(unselected=False)
|
||||||
|
bpy.ops.object.hide_view_set(unselected=True)
|
||||||
|
|
||||||
# hide non-filtered elemenets
|
|
||||||
for view_layer_object in bpy.context.view_layer.objects:
|
for view_layer_object in bpy.context.view_layer.objects:
|
||||||
element = tool.Ifc.get_entity(view_layer_object)
|
element = tool.Ifc.get_entity(view_layer_object)
|
||||||
if not element or element.is_a("IfcTypeProduct"):
|
if not element or element.is_a("IfcTypeProduct"):
|
||||||
continue
|
continue
|
||||||
hide = element not in filtered_elements
|
if element in filtered_elements:
|
||||||
view_layer_object.hide_set(hide)
|
view_layer_object.hide_set(False)
|
||||||
view_layer_object.hide_render = hide
|
view_layer_object.hide_render = False
|
||||||
|
elif view_layer_object.hide_render is not True:
|
||||||
|
view_layer_object.hide_render = True
|
||||||
|
|
||||||
subcontexts: list[ifcopenshell.entity_instance] = []
|
subcontexts: list[ifcopenshell.entity_instance] = []
|
||||||
target_view = cls.get_drawing_target_view(drawing)
|
target_view = cls.get_drawing_target_view(drawing)
|
||||||
|
|||||||
Reference in New Issue
Block a user