mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-09 09:21:46 +00:00
Resolve #1802. Unlinking an object now also unlinks materials and styles too for convenience.
This commit is contained in:
@@ -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"}
|
||||
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user