From 4aa91cfa7fb9e9a299dd079be7c36f8381981742 Mon Sep 17 00:00:00 2001 From: Jesusbill Date: Wed, 13 Apr 2022 18:28:48 +0200 Subject: [PATCH] add feature to toggle wireframe visibility for linked models - no testcases --- .../blenderbim/bim/module/project/__init__.py | 1 + .../blenderbim/bim/module/project/operator.py | 21 +++++++++++++++++++ .../blenderbim/bim/module/project/prop.py | 1 + .../blenderbim/bim/module/project/ui.py | 2 ++ 4 files changed, 25 insertions(+) diff --git a/src/blenderbim/blenderbim/bim/module/project/__init__.py b/src/blenderbim/blenderbim/bim/module/project/__init__.py index 9ef8ba8b394..7898d1ddf01 100644 --- a/src/blenderbim/blenderbim/bim/module/project/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/project/__init__.py @@ -28,6 +28,7 @@ operator.UnlinkIfc, operator.UnloadLink, operator.LoadLink, + operator.ToggleLinkVisibility, operator.SelectLibraryFile, operator.ChangeLibraryElement, operator.RefreshLibrary, diff --git a/src/blenderbim/blenderbim/bim/module/project/operator.py b/src/blenderbim/blenderbim/bim/module/project/operator.py index f536698149d..17ddfdc7bc4 100644 --- a/src/blenderbim/blenderbim/bim/module/project/operator.py +++ b/src/blenderbim/blenderbim/bim/module/project/operator.py @@ -685,10 +685,31 @@ def execute(self, context): continue bpy.data.scenes[0].collection.children.link(child) link = context.scene.BIMProjectProperties.links.get(filepath) + link.collection_name = child.name link.is_loaded = True return {"FINISHED"} +class ToggleLinkVisibility(bpy.types.Operator): + bl_idname = "bim.toggle_link_visibility" + bl_label = "Toggle Link Visibility" + bl_options = {"REGISTER", "UNDO"} + bl_description = "Toggle visibility between SOLID and WIREFRAME" + collection_name: bpy.props.StringProperty() + + def execute(self, context): + collection_name = self.collection_name + objs = filter(lambda obj: "IfcOpeningElement" not in obj.name, bpy.data.collections[collection_name].all_objects) + for i,obj in enumerate(objs): + if i == 0: + if obj.display_type == "WIRE": + display_type = "TEXTURED" + else: + display_type = "WIRE" + obj.display_type = display_type + return {"FINISHED"} + + class ExportIFC(bpy.types.Operator): bl_idname = "export_ifc.bim" bl_label = "Export IFC" diff --git a/src/blenderbim/blenderbim/bim/module/project/prop.py b/src/blenderbim/blenderbim/bim/module/project/prop.py index c04121aea88..fe497384329 100644 --- a/src/blenderbim/blenderbim/bim/module/project/prop.py +++ b/src/blenderbim/blenderbim/bim/module/project/prop.py @@ -85,6 +85,7 @@ class FilterCategory(PropertyGroup): class Link(PropertyGroup): name: StringProperty(name="Name") + collection_name: StringProperty(name="Collection Name") is_loaded: BoolProperty(name="Is Loaded", default=False) diff --git a/src/blenderbim/blenderbim/bim/module/project/ui.py b/src/blenderbim/blenderbim/bim/module/project/ui.py index 271ce2de553..e90c818113b 100644 --- a/src/blenderbim/blenderbim/bim/module/project/ui.py +++ b/src/blenderbim/blenderbim/bim/module/project/ui.py @@ -286,6 +286,8 @@ def draw_item(self, context, layout, data, item, icon, active_data, active_propn row = layout.row(align=True) if item.is_loaded: row.label(text=item.name) + op = row.operator("bim.toggle_link_visibility", text="", icon="HIDE_OFF") + op.collection_name = item.collection_name op = row.operator("bim.unload_link", text="", icon="UNLINKED") op.filepath = item.name else: