diff --git a/src/blenderbim/blenderbim/bim/module/model/opening.py b/src/blenderbim/blenderbim/bim/module/model/opening.py index 6849f4593b..7b98ad075c 100644 --- a/src/blenderbim/blenderbim/bim/module/model/opening.py +++ b/src/blenderbim/blenderbim/bim/module/model/opening.py @@ -782,13 +782,12 @@ class EditOpenings(Operator, tool.Ifc.Operator): if opening_obj: if tool.Ifc.is_edited(opening_obj): tool.Geometry.run_geometry_update_representation(obj=opening_obj) + blenderbim.core.geometry.edit_similar_opening_placement(tool.Geometry, opening, similar_openings) elif tool.Ifc.is_moved(opening_obj): blenderbim.core.geometry.edit_object_placement( tool.Ifc, tool.Geometry, tool.Surveyor, obj=opening_obj ) - - blenderbim.core.geometry.edit_similar_opening_placement(opening, similar_openings) - #TODO delete also the old placement + blenderbim.core.geometry.edit_similar_opening_placement(tool.Geometry, opening, similar_openings) building_objs.update(self.get_all_building_objects_of_similar_openings(opening)) #NB this has nothing to do with clone similar_opening tool.Ifc.unlink(element=opening, obj=opening_obj) diff --git a/src/blenderbim/blenderbim/core/geometry.py b/src/blenderbim/blenderbim/core/geometry.py index 4a706d641b..8677152284 100644 --- a/src/blenderbim/blenderbim/core/geometry.py +++ b/src/blenderbim/blenderbim/core/geometry.py @@ -204,10 +204,11 @@ def get_similar_openings_building_objs(ifc, similar_openings): building_objs.append(ifc.get_object(similar_opening.VoidsElements[0].RelatingBuildingElement)) return building_objs -def edit_similar_opening_placement(opening = None, similar_openings = None): +def edit_similar_opening_placement(geometry, opening = None, similar_openings = None): if not opening or not similar_openings: return for similar_opening in similar_openings: + old_placement = similar_opening.ObjectPlacement similar_opening.ObjectPlacement = opening.ObjectPlacement - + geometry.delete_opening_object_placement(old_placement) diff --git a/src/blenderbim/blenderbim/core/tool.py b/src/blenderbim/blenderbim/core/tool.py index bbd0bbc91a..71410e8c77 100644 --- a/src/blenderbim/blenderbim/core/tool.py +++ b/src/blenderbim/blenderbim/core/tool.py @@ -397,6 +397,7 @@ class Geometry: def should_generate_uvs(cls, obj): pass def should_use_presentation_style_assignment(cls): pass def unresolve_type_representation(cls, representation, element): pass + def delete_opening_object_placement(cls, opening): pass @interface diff --git a/src/blenderbim/blenderbim/tool/geometry.py b/src/blenderbim/blenderbim/tool/geometry.py index eb7a129775..cc23440c89 100644 --- a/src/blenderbim/blenderbim/tool/geometry.py +++ b/src/blenderbim/blenderbim/tool/geometry.py @@ -875,3 +875,8 @@ class Geometry(blenderbim.core.tool.Geometry): ) shape_aspect.ShapeRepresentations = shape_aspect.ShapeRepresentations + (shape_aspect_representation,) return shape_aspect_representation + + @classmethod + def delete_opening_object_placement(cls, placement): + model = tool.Ifc.get() + ifcopenshell.util.element.remove_deep2(model, placement)