mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-20 06:58:56 +00:00
Clone opening now deletes also old opening placement
This commit is contained in:
@@ -782,13 +782,12 @@ class EditOpenings(Operator, tool.Ifc.Operator):
|
|||||||
if opening_obj:
|
if opening_obj:
|
||||||
if tool.Ifc.is_edited(opening_obj):
|
if tool.Ifc.is_edited(opening_obj):
|
||||||
tool.Geometry.run_geometry_update_representation(obj=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):
|
elif tool.Ifc.is_moved(opening_obj):
|
||||||
blenderbim.core.geometry.edit_object_placement(
|
blenderbim.core.geometry.edit_object_placement(
|
||||||
tool.Ifc, tool.Geometry, tool.Surveyor, obj=opening_obj
|
tool.Ifc, tool.Geometry, tool.Surveyor, obj=opening_obj
|
||||||
)
|
)
|
||||||
|
blenderbim.core.geometry.edit_similar_opening_placement(tool.Geometry, opening, similar_openings)
|
||||||
blenderbim.core.geometry.edit_similar_opening_placement(opening, similar_openings)
|
|
||||||
#TODO delete also the old placement
|
|
||||||
|
|
||||||
building_objs.update(self.get_all_building_objects_of_similar_openings(opening)) #NB this has nothing to do with clone similar_opening
|
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)
|
tool.Ifc.unlink(element=opening, obj=opening_obj)
|
||||||
|
|||||||
@@ -204,10 +204,11 @@ def get_similar_openings_building_objs(ifc, similar_openings):
|
|||||||
building_objs.append(ifc.get_object(similar_opening.VoidsElements[0].RelatingBuildingElement))
|
building_objs.append(ifc.get_object(similar_opening.VoidsElements[0].RelatingBuildingElement))
|
||||||
return building_objs
|
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:
|
if not opening or not similar_openings:
|
||||||
return
|
return
|
||||||
for similar_opening in similar_openings:
|
for similar_opening in similar_openings:
|
||||||
|
old_placement = similar_opening.ObjectPlacement
|
||||||
similar_opening.ObjectPlacement = opening.ObjectPlacement
|
similar_opening.ObjectPlacement = opening.ObjectPlacement
|
||||||
|
geometry.delete_opening_object_placement(old_placement)
|
||||||
|
|
||||||
|
|||||||
@@ -397,6 +397,7 @@ class Geometry:
|
|||||||
def should_generate_uvs(cls, obj): pass
|
def should_generate_uvs(cls, obj): pass
|
||||||
def should_use_presentation_style_assignment(cls): pass
|
def should_use_presentation_style_assignment(cls): pass
|
||||||
def unresolve_type_representation(cls, representation, element): pass
|
def unresolve_type_representation(cls, representation, element): pass
|
||||||
|
def delete_opening_object_placement(cls, opening): pass
|
||||||
|
|
||||||
|
|
||||||
@interface
|
@interface
|
||||||
|
|||||||
@@ -875,3 +875,8 @@ class Geometry(blenderbim.core.tool.Geometry):
|
|||||||
)
|
)
|
||||||
shape_aspect.ShapeRepresentations = shape_aspect.ShapeRepresentations + (shape_aspect_representation,)
|
shape_aspect.ShapeRepresentations = shape_aspect.ShapeRepresentations + (shape_aspect_representation,)
|
||||||
return 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)
|
||||||
|
|||||||
Reference in New Issue
Block a user