Resolve #1802. Unlinking an object now also unlinks materials and styles too for convenience.

This commit is contained in:
Dion Moult
2021-10-16 16:55:06 +11:00
parent 26cbd82da1
commit aedc1751b6
3 changed files with 22 additions and 0 deletions
@@ -23,6 +23,8 @@ import ifcopenshell.util.schema
import ifcopenshell.util.element import ifcopenshell.util.element
import blenderbim.bim.handler import blenderbim.bim.handler
import blenderbim.core.spatial import blenderbim.core.spatial
import blenderbim.core.style
import blenderbim.core.material
import blenderbim.tool as tool import blenderbim.tool as tool
from ifcopenshell.api.void.data import Data as VoidData from ifcopenshell.api.void.data import Data as VoidData
from blenderbim.bim.ifc import IfcStore from blenderbim.bim.ifc import IfcStore
@@ -315,6 +317,10 @@ class UnlinkObject(bpy.types.Operator):
for obj in objects: for obj in objects:
if obj.BIMObjectProperties.ifc_definition_id: if obj.BIMObjectProperties.ifc_definition_id:
IfcStore.unlink_element(obj=obj) IfcStore.unlink_element(obj=obj)
for material_slot in obj.material_slots:
if material_slot.material:
blenderbim.core.style.unlink_style(tool.Style, obj=material_slot.material)
blenderbim.core.material.unlink_material(tool.Material, obj=material_slot.material)
if "Ifc" in obj.name and "/" in obj.name: if "Ifc" in obj.name and "/" in obj.name:
obj.name = "/".join(obj.name.split("/")[1:]) obj.name = "/".join(obj.name.split("/")[1:])
return {"FINISHED"} return {"FINISHED"}
+1
View File
@@ -7,6 +7,7 @@ markers =
owner owner
project project
pset_template pset_template
root
spatial spatial
style style
unit unit
@@ -0,0 +1,15 @@
@root
Feature: Root
Scenario: Unlink object
Given an empty IFC project
And I add a cube
And the object "Cube" is selected
And I add a material
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
And I press "bim.assign_class"
And I press "bim.add_material"
When I press "bim.unlink_object(obj='IfcWall/Cube')"
Then the object "Cube" is not an IFC element
And the material "Material" is not an IFC material
And the material "Material" is not an IFC style