mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-20 06:58:56 +00:00
Added tool.Blender.Modifier.has_mirrored_type and set_mirrored_type.
This commit is contained in:
committed by
Ryan Schultz
parent
bd5102b4bb
commit
900fdfc51c
@@ -694,10 +694,10 @@ class TrueMirrorElements(bpy.types.Operator, tool.Ifc.Operator):
|
|||||||
|
|
||||||
def _execute(self, context):
|
def _execute(self, context):
|
||||||
for obj in context.selected_objects:
|
for obj in context.selected_objects:
|
||||||
self.change_obj_swing_direction(obj)
|
self.mirror_obj(obj)
|
||||||
return { "FINISHED" }
|
return { "FINISHED" }
|
||||||
|
|
||||||
def change_obj_swing_direction(self, obj):
|
def mirror_obj(self, obj):
|
||||||
element = tool.Ifc.get_entity(obj)
|
element = tool.Ifc.get_entity(obj)
|
||||||
if not element:
|
if not element:
|
||||||
return
|
return
|
||||||
@@ -781,33 +781,16 @@ class TrueMirrorElements(bpy.types.Operator, tool.Ifc.Operator):
|
|||||||
else:
|
else:
|
||||||
self.invert_general_object(element)
|
self.invert_general_object(element)
|
||||||
|
|
||||||
def get_inverted_type(self, type_element):
|
|
||||||
inverted_pset = ifcopenshell.util.element.get_pset(type_element, "BBIM_InvertedSwingType", "Data")
|
|
||||||
if not inverted_pset:
|
|
||||||
return None
|
|
||||||
|
|
||||||
data = json.loads(inverted_pset)
|
|
||||||
if "inverted_swing_type" in data:
|
|
||||||
return tool.Ifc.get_entity_by_id(int(data["inverted_swing_type"]))
|
|
||||||
return None
|
|
||||||
|
|
||||||
def set_inverted_type(self, type_element, inverted_type_element):
|
|
||||||
inverted_pset = tool.Pset.get_element_pset(type_element, "BBIM_InvertedSwingType")
|
|
||||||
if not inverted_pset:
|
|
||||||
inverted_pset = ifcopenshell.api.pset.add_pset(tool.Ifc.get(), type_element, "BBIM_InvertedSwingType")
|
|
||||||
|
|
||||||
ifcopenshell.api.pset.edit_pset(tool.Ifc.get(), inverted_pset, "BBIM_InvertedSwingType", { "Data": json.dumps({ "inverted_swing_type": inverted_type_element.id() }) })
|
|
||||||
|
|
||||||
def assign_inverted_type(self, element):
|
def assign_inverted_type(self, element):
|
||||||
type_element = ifcopenshell.util.element.get_type(element)
|
type_element = ifcopenshell.util.element.get_type(element)
|
||||||
|
|
||||||
inverted_type = self.get_inverted_type(type_element)
|
inverted_type = tool.Blender.Modifier.has_mirrored_type(type_element)
|
||||||
if not inverted_type:
|
if not inverted_type:
|
||||||
old_to_new, _ = tool.Geometry.duplicate_ifc_objects([ tool.Ifc.get_object(type_element) ])
|
old_to_new, _ = tool.Geometry.duplicate_ifc_objects([ tool.Ifc.get_object(type_element) ])
|
||||||
inverted_type = old_to_new[type_element][0]
|
inverted_type = old_to_new[type_element][0]
|
||||||
self.invert_representation(inverted_type)
|
self.invert_representation(inverted_type)
|
||||||
self.set_inverted_type(inverted_type, type_element)
|
tool.Blender.Modifier.set_mirrored_type(inverted_type, type_element)
|
||||||
self.set_inverted_type(type_element, inverted_type)
|
tool.Blender.Modifier.set_mirrored_type(type_element, inverted_type)
|
||||||
inverted_type.Name = f"{inverted_type.Name}.Mirror"
|
inverted_type.Name = f"{inverted_type.Name}.Mirror"
|
||||||
|
|
||||||
bonsai.core.type.assign_type(tool.Ifc, tool.Type, element, inverted_type)
|
bonsai.core.type.assign_type(tool.Ifc, tool.Type, element, inverted_type)
|
||||||
|
|||||||
Reference in New Issue
Block a user