mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-22 11:18:01 +00:00
Fix #1524. Fixed bug where unlinking copied Blender objects didn't work.
This commit is contained in:
@@ -60,7 +60,8 @@ def active_object_callback():
|
|||||||
for obj in bpy.context.selected_objects:
|
for obj in bpy.context.selected_objects:
|
||||||
if not obj.BIMObjectProperties.ifc_definition_id:
|
if not obj.BIMObjectProperties.ifc_definition_id:
|
||||||
continue
|
continue
|
||||||
if IfcStore.id_map[obj.BIMObjectProperties.ifc_definition_id] != obj:
|
stored_obj = IfcStore.get_element(obj.BIMObjectProperties.ifc_definition_id)
|
||||||
|
if stored_obj and stored_obj != obj:
|
||||||
bpy.ops.bim.copy_class(obj=obj.name)
|
bpy.ops.bim.copy_class(obj=obj.name)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -84,13 +84,19 @@ class IfcStore:
|
|||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
if element:
|
try:
|
||||||
del IfcStore.id_map[element.id()]
|
if element:
|
||||||
else:
|
del IfcStore.id_map[element.id()]
|
||||||
del IfcStore.id_map[obj.BIMObjectProperties.ifc_definition_id]
|
else:
|
||||||
|
del IfcStore.id_map[obj.BIMObjectProperties.ifc_definition_id]
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
if element and hasattr(element, "GlobalId"):
|
try:
|
||||||
del IfcStore.guid_map[element.GlobalId]
|
if element and hasattr(element, "GlobalId"):
|
||||||
|
del IfcStore.guid_map[element.GlobalId]
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
if obj:
|
if obj:
|
||||||
obj.BIMObjectProperties.ifc_definition_id = 0
|
obj.BIMObjectProperties.ifc_definition_id = 0
|
||||||
|
|||||||
@@ -16,6 +16,8 @@ class BIM_PT_aggregate(Panel):
|
|||||||
props = context.active_object.BIMObjectProperties
|
props = context.active_object.BIMObjectProperties
|
||||||
if not props.ifc_definition_id:
|
if not props.ifc_definition_id:
|
||||||
return False
|
return False
|
||||||
|
if not IfcStore.get_element(props.ifc_definition_id):
|
||||||
|
return False
|
||||||
if not IfcStore.get_file().by_id(props.ifc_definition_id).is_a("IfcObjectDefinition"):
|
if not IfcStore.get_file().by_id(props.ifc_definition_id).is_a("IfcObjectDefinition"):
|
||||||
return False
|
return False
|
||||||
if props.ifc_definition_id not in Data.products:
|
if props.ifc_definition_id not in Data.products:
|
||||||
|
|||||||
@@ -78,6 +78,8 @@ class BIM_PT_object_attributes(Panel):
|
|||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def poll(cls, context):
|
def poll(cls, context):
|
||||||
|
if not IfcStore.get_element(context.active_object.BIMObjectProperties.ifc_definition_id):
|
||||||
|
return False
|
||||||
return bool(context.active_object.BIMObjectProperties.ifc_definition_id)
|
return bool(context.active_object.BIMObjectProperties.ifc_definition_id)
|
||||||
|
|
||||||
def draw(self, context):
|
def draw(self, context):
|
||||||
|
|||||||
@@ -20,6 +20,8 @@ class BIM_PT_boundary(Panel):
|
|||||||
props = context.active_object.BIMObjectProperties
|
props = context.active_object.BIMObjectProperties
|
||||||
if not props.ifc_definition_id:
|
if not props.ifc_definition_id:
|
||||||
return False
|
return False
|
||||||
|
if not IfcStore.get_element(props.ifc_definition_id):
|
||||||
|
return False
|
||||||
if IfcStore.get_file().by_id(props.ifc_definition_id).is_a() not in ["IfcSpace", "IfcExternalSpatialElement"]:
|
if IfcStore.get_file().by_id(props.ifc_definition_id).is_a() not in ["IfcSpace", "IfcExternalSpatialElement"]:
|
||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
|
|||||||
@@ -70,6 +70,8 @@ class BIM_PT_classification_references(Panel):
|
|||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def poll(cls, context):
|
def poll(cls, context):
|
||||||
|
if not IfcStore.get_element(context.active_object.BIMObjectProperties.ifc_definition_id):
|
||||||
|
return False
|
||||||
return bool(context.active_object.BIMObjectProperties.ifc_definition_id)
|
return bool(context.active_object.BIMObjectProperties.ifc_definition_id)
|
||||||
|
|
||||||
def draw(self, context):
|
def draw(self, context):
|
||||||
|
|||||||
@@ -64,6 +64,8 @@ class BIM_PT_object_constraints(Panel):
|
|||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def poll(cls, context):
|
def poll(cls, context):
|
||||||
|
if not IfcStore.get_element(context.active_object.BIMObjectProperties.ifc_definition_id):
|
||||||
|
return False
|
||||||
return bool(context.active_object.BIMObjectProperties.ifc_definition_id)
|
return bool(context.active_object.BIMObjectProperties.ifc_definition_id)
|
||||||
|
|
||||||
def draw(self, context):
|
def draw(self, context):
|
||||||
|
|||||||
@@ -68,6 +68,8 @@ class BIM_PT_object_documents(Panel):
|
|||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def poll(cls, context):
|
def poll(cls, context):
|
||||||
|
if not IfcStore.get_element(context.active_object.BIMObjectProperties.ifc_definition_id):
|
||||||
|
return False
|
||||||
return bool(context.active_object.BIMObjectProperties.ifc_definition_id)
|
return bool(context.active_object.BIMObjectProperties.ifc_definition_id)
|
||||||
|
|
||||||
def draw(self, context):
|
def draw(self, context):
|
||||||
|
|||||||
@@ -14,6 +14,8 @@ class BIM_PT_representations(Panel):
|
|||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def poll(cls, context):
|
def poll(cls, context):
|
||||||
|
if not IfcStore.get_element(context.active_object.BIMObjectProperties.ifc_definition_id):
|
||||||
|
return False
|
||||||
return IfcStore.get_file()
|
return IfcStore.get_file()
|
||||||
|
|
||||||
def draw(self, context):
|
def draw(self, context):
|
||||||
|
|||||||
@@ -36,6 +36,8 @@ class BIM_PT_object_material(Panel):
|
|||||||
props = context.active_object.BIMObjectProperties
|
props = context.active_object.BIMObjectProperties
|
||||||
if not props.ifc_definition_id:
|
if not props.ifc_definition_id:
|
||||||
return False
|
return False
|
||||||
|
if not IfcStore.get_element(props.ifc_definition_id):
|
||||||
|
return False
|
||||||
if not hasattr(IfcStore.get_file().by_id(props.ifc_definition_id), "HasAssociations"):
|
if not hasattr(IfcStore.get_file().by_id(props.ifc_definition_id), "HasAssociations"):
|
||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
|
|||||||
@@ -101,6 +101,8 @@ class BIM_PT_object_psets(Panel):
|
|||||||
props = context.active_object.BIMObjectProperties
|
props = context.active_object.BIMObjectProperties
|
||||||
if not props.ifc_definition_id:
|
if not props.ifc_definition_id:
|
||||||
return False
|
return False
|
||||||
|
if not IfcStore.get_element(props.ifc_definition_id):
|
||||||
|
return False
|
||||||
if props.ifc_definition_id not in Data.products:
|
if props.ifc_definition_id not in Data.products:
|
||||||
Data.load(IfcStore.get_file(), props.ifc_definition_id)
|
Data.load(IfcStore.get_file(), props.ifc_definition_id)
|
||||||
if not Data.products[props.ifc_definition_id]:
|
if not Data.products[props.ifc_definition_id]:
|
||||||
@@ -144,6 +146,8 @@ class BIM_PT_object_qtos(Panel):
|
|||||||
props = context.active_object.BIMObjectProperties
|
props = context.active_object.BIMObjectProperties
|
||||||
if not props.ifc_definition_id:
|
if not props.ifc_definition_id:
|
||||||
return False
|
return False
|
||||||
|
if not IfcStore.get_element(props.ifc_definition_id):
|
||||||
|
return False
|
||||||
if props.ifc_definition_id not in Data.products:
|
if props.ifc_definition_id not in Data.products:
|
||||||
Data.load(IfcStore.get_file(), props.ifc_definition_id)
|
Data.load(IfcStore.get_file(), props.ifc_definition_id)
|
||||||
if not Data.products[props.ifc_definition_id]:
|
if not Data.products[props.ifc_definition_id]:
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ class BIM_PT_class(Panel):
|
|||||||
row = self.layout.row(align=True)
|
row = self.layout.row(align=True)
|
||||||
row.label(text="IFC Element Not Found")
|
row.label(text="IFC Element Not Found")
|
||||||
row.operator("bim.unlink_object", icon="UNLINKED", text="")
|
row.operator("bim.unlink_object", icon="UNLINKED", text="")
|
||||||
|
return
|
||||||
if props.is_reassigning_class:
|
if props.is_reassigning_class:
|
||||||
row = self.layout.row(align=True)
|
row = self.layout.row(align=True)
|
||||||
row.operator("bim.reassign_class", icon="CHECKMARK")
|
row.operator("bim.reassign_class", icon="CHECKMARK")
|
||||||
|
|||||||
@@ -17,6 +17,8 @@ class BIM_PT_spatial(Panel):
|
|||||||
oprops = context.active_object.BIMObjectProperties
|
oprops = context.active_object.BIMObjectProperties
|
||||||
if not oprops.ifc_definition_id:
|
if not oprops.ifc_definition_id:
|
||||||
return False
|
return False
|
||||||
|
if not IfcStore.get_element(oprops.ifc_definition_id):
|
||||||
|
return False
|
||||||
if oprops.ifc_definition_id not in Data.products:
|
if oprops.ifc_definition_id not in Data.products:
|
||||||
Data.load(IfcStore.get_file(), oprops.ifc_definition_id)
|
Data.load(IfcStore.get_file(), oprops.ifc_definition_id)
|
||||||
if not Data.products[oprops.ifc_definition_id]:
|
if not Data.products[oprops.ifc_definition_id]:
|
||||||
|
|||||||
@@ -76,6 +76,8 @@ class BIM_PT_structural_boundary_conditions(Panel):
|
|||||||
props = context.active_object.BIMObjectProperties
|
props = context.active_object.BIMObjectProperties
|
||||||
if not props.ifc_definition_id:
|
if not props.ifc_definition_id:
|
||||||
return False
|
return False
|
||||||
|
if not IfcStore.get_element(props.ifc_definition_id):
|
||||||
|
return False
|
||||||
if not IfcStore.get_file().by_id(props.ifc_definition_id).is_a("IfcStructuralConnection"):
|
if not IfcStore.get_file().by_id(props.ifc_definition_id).is_a("IfcStructuralConnection"):
|
||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
@@ -106,6 +108,8 @@ class BIM_PT_connected_structural_members(Panel):
|
|||||||
props = context.active_object.BIMObjectProperties
|
props = context.active_object.BIMObjectProperties
|
||||||
if not props.ifc_definition_id:
|
if not props.ifc_definition_id:
|
||||||
return False
|
return False
|
||||||
|
if not IfcStore.get_element(props.ifc_definition_id):
|
||||||
|
return False
|
||||||
if not IfcStore.get_file().by_id(props.ifc_definition_id).is_a("IfcStructuralConnection"):
|
if not IfcStore.get_file().by_id(props.ifc_definition_id).is_a("IfcStructuralConnection"):
|
||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
@@ -160,6 +164,8 @@ class BIM_PT_structural_member(Panel):
|
|||||||
props = context.active_object.BIMObjectProperties
|
props = context.active_object.BIMObjectProperties
|
||||||
if not props.ifc_definition_id:
|
if not props.ifc_definition_id:
|
||||||
return False
|
return False
|
||||||
|
if not IfcStore.get_element(props.ifc_definition_id):
|
||||||
|
return False
|
||||||
if not IfcStore.get_file().by_id(props.ifc_definition_id).is_a("IfcStructuralMember"):
|
if not IfcStore.get_file().by_id(props.ifc_definition_id).is_a("IfcStructuralMember"):
|
||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
@@ -198,6 +204,8 @@ class BIM_PT_structural_connection(Panel):
|
|||||||
props = context.active_object.BIMObjectProperties
|
props = context.active_object.BIMObjectProperties
|
||||||
if not props.ifc_definition_id:
|
if not props.ifc_definition_id:
|
||||||
return False
|
return False
|
||||||
|
if not IfcStore.get_element(props.ifc_definition_id):
|
||||||
|
return False
|
||||||
if not IfcStore.get_file().by_id(props.ifc_definition_id).is_a("IfcStructuralConnection"):
|
if not IfcStore.get_file().by_id(props.ifc_definition_id).is_a("IfcStructuralConnection"):
|
||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
|
|||||||
@@ -15,6 +15,8 @@ class BIM_PT_type(Panel):
|
|||||||
props = context.active_object.BIMObjectProperties
|
props = context.active_object.BIMObjectProperties
|
||||||
if not props.ifc_definition_id:
|
if not props.ifc_definition_id:
|
||||||
return False
|
return False
|
||||||
|
if not IfcStore.get_element(props.ifc_definition_id):
|
||||||
|
return False
|
||||||
if props.ifc_definition_id not in Data.products:
|
if props.ifc_definition_id not in Data.products:
|
||||||
Data.load(IfcStore.get_file(), props.ifc_definition_id)
|
Data.load(IfcStore.get_file(), props.ifc_definition_id)
|
||||||
if not Data.products[props.ifc_definition_id]:
|
if not Data.products[props.ifc_definition_id]:
|
||||||
|
|||||||
@@ -14,6 +14,8 @@ class BIM_PT_voids(Panel):
|
|||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def poll(cls, context):
|
def poll(cls, context):
|
||||||
|
if not IfcStore.get_element(context.active_object.BIMObjectProperties.ifc_definition_id):
|
||||||
|
return False
|
||||||
return IfcStore.get_file()
|
return IfcStore.get_file()
|
||||||
|
|
||||||
def draw(self, context):
|
def draw(self, context):
|
||||||
|
|||||||
Reference in New Issue
Block a user