mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-09 17:31:45 +00:00
Fix #3958. Bug where reassigning type class would incorrectly assign occurrence classes.
This commit is contained in:
@@ -92,7 +92,10 @@ class ReassignClass(bpy.types.Operator):
|
||||
return IfcStore.execute_ifc_operator(self, context)
|
||||
|
||||
def _execute(self, context):
|
||||
objects = [bpy.data.objects.get(self.obj)] if self.obj else context.selected_objects
|
||||
if self.obj:
|
||||
objects = [bpy.data.objects.get(self.obj)]
|
||||
else:
|
||||
objects = set(context.selected_objects + [context.active_object])
|
||||
self.file = IfcStore.get_file()
|
||||
predefined_type = context.scene.BIMRootProperties.ifc_predefined_type
|
||||
if predefined_type == "USERDEFINED":
|
||||
@@ -101,11 +104,9 @@ class ReassignClass(bpy.types.Operator):
|
||||
product = ifcopenshell.api.run(
|
||||
"root.reassign_class",
|
||||
self.file,
|
||||
**{
|
||||
"product": self.file.by_id(obj.BIMObjectProperties.ifc_definition_id),
|
||||
"ifc_class": context.scene.BIMRootProperties.ifc_class,
|
||||
"predefined_type": predefined_type,
|
||||
},
|
||||
product=self.file.by_id(obj.BIMObjectProperties.ifc_definition_id),
|
||||
ifc_class=context.scene.BIMRootProperties.ifc_class,
|
||||
predefined_type=predefined_type,
|
||||
)
|
||||
obj.name = "{}/{}".format(product.is_a(), getattr(product, "Name", "None"))
|
||||
tool.Ifc.link(product, obj)
|
||||
|
||||
@@ -80,11 +80,12 @@ class Usecase:
|
||||
element.ObjectType = self.settings["predefined_type"]
|
||||
if element.is_a("IfcTypeProduct"):
|
||||
for typed_element in ifcopenshell.util.element.get_types(element) or []:
|
||||
ifc_class = self.settings["ifc_class"].removesuffix("Type").removesuffix("Style")
|
||||
ifcopenshell.api.run(
|
||||
"root.reassign_class",
|
||||
self.file,
|
||||
product=typed_element,
|
||||
ifc_class=self.settings["ifc_class"].strip("Type"),
|
||||
ifc_class=ifc_class,
|
||||
predefined_type= self.settings["predefined_type"]
|
||||
)
|
||||
return element
|
||||
|
||||
Reference in New Issue
Block a user