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 blenderbim.bim.handler
import blenderbim.core.spatial
import blenderbim.core.style
import blenderbim.core.material
import blenderbim.tool as tool
from ifcopenshell.api.void.data import Data as VoidData
from blenderbim.bim.ifc import IfcStore
@@ -315,6 +317,10 @@ class UnlinkObject(bpy.types.Operator):
for obj in objects:
if obj.BIMObjectProperties.ifc_definition_id:
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:
obj.name = "/".join(obj.name.split("/")[1:])
return {"FINISHED"}
+1
View File
@@ -7,6 +7,7 @@ markers =
owner
project
pset_template
root
spatial
style
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