From b9e34a107bdbc25c9b5b36e31e2df731d2c4fc30 Mon Sep 17 00:00:00 2001 From: Kristoffer Date: Fri, 13 Nov 2020 14:45:08 +0100 Subject: [PATCH] Prepare for pull request --- src/ifcblenderexport/blenderbim/__init__.py | 1 + .../blenderbim/bim/export_ifc.py | 6 +-- .../blenderbim/bim/import_ifc.py | 18 +-------- .../blenderbim/bim/operator.py | 40 +++++-------------- src/ifcblenderexport/blenderbim/bim/prop.py | 21 ---------- src/ifcblenderexport/blenderbim/bim/ui.py | 7 +--- 6 files changed, 14 insertions(+), 79 deletions(-) diff --git a/src/ifcblenderexport/blenderbim/__init__.py b/src/ifcblenderexport/blenderbim/__init__.py index 2abfc7c739..e26493b051 100644 --- a/src/ifcblenderexport/blenderbim/__init__.py +++ b/src/ifcblenderexport/blenderbim/__init__.py @@ -18,6 +18,7 @@ import site cwd = os.path.dirname(os.path.realpath(__file__)) site.addsitedir(os.path.join(cwd, "libs", "site", "packages")) + # main import from .bim import * diff --git a/src/ifcblenderexport/blenderbim/bim/export_ifc.py b/src/ifcblenderexport/blenderbim/bim/export_ifc.py index c2cd93bcb6..811bffcb1e 100644 --- a/src/ifcblenderexport/blenderbim/bim/export_ifc.py +++ b/src/ifcblenderexport/blenderbim/bim/export_ifc.py @@ -983,7 +983,6 @@ class IfcParser: pl = representation["presentation_layer"] if pl.name == '': continue - print("Presentation load: ", pl.name) self.presentation_layer_assignments.setdefault(pl.name, []).append(representation) def load_representations(self): @@ -3248,10 +3247,7 @@ class IfcExporter: return results def relate_spaces_to_boundary_elements(self): - for ( - relating_space_index, - relationships, - ) in self.ifc_parser.rel_space_boundaries.items(): + for (relating_space_index, relationships,) in self.ifc_parser.rel_space_boundaries.items(): for relationship in relationships: relationship["attributes"]["GlobalId"] = ifcopenshell.guid.new() relationship["attributes"]["RelatedBuildingElement"] = self.ifc_parser.products[ diff --git a/src/ifcblenderexport/blenderbim/bim/import_ifc.py b/src/ifcblenderexport/blenderbim/bim/import_ifc.py index 442da19e84..3b493438dc 100644 --- a/src/ifcblenderexport/blenderbim/bim/import_ifc.py +++ b/src/ifcblenderexport/blenderbim/bim/import_ifc.py @@ -1321,29 +1321,13 @@ class IfcImporter: pl.layer_frozen = f.LayerFrozen if f.LayerFrozen is not None else False pl.layer_blocked = f.LayerBlocked if f.LayerBlocked is not None else False - if pl.name not in bpy.context.scene.view_layers.keys(): - vl = bpy.context.scene.view_layers.new(pl.name) - else: - vl = bpy.context.scene.view_layers[pl.name] - - if pl.name not in bpy.data.collections.keys(): - coll = bpy.data.collections.new(pl.name) - else: - coll = bpy.data.collections[pl.name] - - if pl.layer_on is False: - # vl.objects.data.layer_collection.collection.hide_viewport = True - # bpy.context.window.view_layer.layer_collection.children[pl.name].exclude = True - coll.hide_viewport = True - for item in f.AssignedItems: guid = item.OfProductRepresentation[0].ShapeOfProduct[0].GlobalId for obj in bpy.context.selectable_objects: global_id = obj.BIMObjectProperties.attributes.get("GlobalId") if global_id and global_id.string_value == guid: obj.BIMObjectProperties.presentation_layer.name = pl.name - # vl.objects.data.layer_collection.collection.objects.link(obj) - coll.objects.link(obj) + obj.hide_set(not pl.layer_on) def clean_mesh(self): obj = None diff --git a/src/ifcblenderexport/blenderbim/bim/operator.py b/src/ifcblenderexport/blenderbim/bim/operator.py index 3ffb6a59c8..0a8dc72571 100644 --- a/src/ifcblenderexport/blenderbim/bim/operator.py +++ b/src/ifcblenderexport/blenderbim/bim/operator.py @@ -4324,15 +4324,12 @@ class AddToPresentationLayer(bpy.types.Operator): def execute(self, context): presentation_layer = bpy.context.scene.BIMProperties.presentation_layers[self.index] - vl = bpy.context.scene.view_layers[presentation_layer.name] - - for el in bpy.context.selected_objects: - el.BIMObjectProperties.presentation_layer.name = presentation_layer.name - elem_name = el.BIMObjectProperties.attributes["Name"].string_value - - # TODO: I want to add the selected elements to a view layer. But how do you append objects to a view_layer? - # vl.objects.append(el) + # vl = bpy.context.scene.view_layers[presentation_layer.name] + for obj in bpy.context.selected_objects: + obj.BIMObjectProperties.presentation_layer.name = presentation_layer.name + elem_name = obj.BIMObjectProperties.attributes["Name"].string_value + obj.hide_set(not presentation_layer.layer_on) print(f'Adding "{elem_name}" to View/Presentation Layer "({self.index} - {presentation_layer.name})"') return {"FINISHED"} @@ -4374,9 +4371,6 @@ class RemovePresentationLayer(bpy.types.Operator): index: bpy.props.IntProperty() def execute(self, context): - pl = bpy.context.scene.BIMProperties.presentation_layers[self.index] - if pl.name not in bpy.context.scene.view_layers.keys(): - bpy.context.scene.view_layers.remove(pl.name) bpy.context.scene.BIMProperties.presentation_layers.remove(self.index) return {"FINISHED"} @@ -4384,29 +4378,15 @@ class RemovePresentationLayer(bpy.types.Operator): class UpdatePresentationLayer(bpy.types.Operator): bl_idname = "bim.update_presentation_layer" - bl_label = "Update Presentation Layer" + bl_label = "Hide/Show selected Presentation Layer" index: bpy.props.IntProperty() - pl_name = bpy.props.StringProperty() - pl_description = bpy.props.StringProperty() - pl_identifier = bpy.props.StringProperty() - pl_layer_on = bpy.props.BoolProperty() - pl_layer_frozen = bpy.props.BoolProperty() - pl_layer_blocked = bpy.props.BoolProperty() def execute(self, context): pl = bpy.context.scene.BIMProperties.presentation_layers[self.index] - pl.name = self.pl_name - pl.description = self.pl_description - pl.identifier = self.pl_identifier - pl.layer_on = self.pl_layer_on - pl.layer_frozen = self.pl_layer_frozen - pl.layer_blocked = self.pl_layer_blocked - - if pl.name not in bpy.context.scene.view_layers.keys(): - new = bpy.context.scene.view_layers.new(pl.name) - # if pl.layer_on is False: - # bpy.context.scene.view_layers - + for obj in bpy.context.scene.objects: + if obj.BIMObjectProperties.presentation_layer.name == pl.name: + set_status = obj.hide_get() + obj.hide_set(not obj.hide_get()) return {"FINISHED"} diff --git a/src/ifcblenderexport/blenderbim/bim/prop.py b/src/ifcblenderexport/blenderbim/bim/prop.py index 6aa3f6f59f..04cd1963d9 100644 --- a/src/ifcblenderexport/blenderbim/bim/prop.py +++ b/src/ifcblenderexport/blenderbim/bim/prop.py @@ -259,26 +259,6 @@ def refreshBoundaryConditionAttributes(self, context): new_attribute.name = attribute["name"] -def getPresentationLayerClasses(self, context): - return [ - (c, c, "") - for c in [ - "IfcPresentationLayerAssignment", - "IfcPresentationLayerWithStyle", - ] - ] - - -def refreshPresentationLayerAttributes(self, context): - while len(context.active_object.BIMObjectProperties.presentation_layer.attributes) > 0: - context.active_object.BIMObjectProperties.presentation_layer.attributes.remove(0) - for attribute in schema.ifc.elements[context.active_object.BIMObjectProperties.presentation_layer.name][ - "complex_attributes" - ]: - new_attribute = context.active_object.BIMObjectProperties.presentation_layer.attributes.add() - new_attribute.name = attribute["name"] - - def refreshActiveDrawingIndex(self, context): bpy.ops.bim.activate_view(drawing_index=context.scene.DocProperties.active_drawing_index) @@ -1705,7 +1685,6 @@ class BIMObjectProperties(PropertyGroup): qto_name: EnumProperty(items=getQtoNames, name="Qto Name") has_boundary_condition: BoolProperty(name="Has Boundary Condition") boundary_condition: PointerProperty(name="Boundary Condition", type=BoundaryCondition) - active_presentation_layer_index: IntProperty(name="Active Presentation Layer Index") presentation_layer: PointerProperty(name="Presentation Layer", type=PresentationLayer) structural_member_connection: PointerProperty(name="Structural Member Connection", type=bpy.types.Object) representation_contexts: CollectionProperty(name="Representation Contexts", type=Subcontext) diff --git a/src/ifcblenderexport/blenderbim/bim/ui.py b/src/ifcblenderexport/blenderbim/bim/ui.py index 646d74948b..153011899e 100644 --- a/src/ifcblenderexport/blenderbim/bim/ui.py +++ b/src/ifcblenderexport/blenderbim/bim/ui.py @@ -1003,12 +1003,7 @@ class BIM_PT_presentation_layers(Panel): op = layout.row().operator("bim.update_presentation_layer") op.index = props.active_presentation_layer_index - op.pl_name = pres_layer.name - op.pl_description = pres_layer.description - op.pl_identifier = pres_layer.identifier - op.pl_layer_on = pres_layer.layer_on - op.pl_layer_frozen = pres_layer.layer_frozen - op.pl_layer_blocked = pres_layer.layer_blocked + else: layout.label(text="Presentation Layer is invalid")