mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-16 21:42:19 +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 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"}
|
||||||
|
|||||||
@@ -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
|
||||||
Reference in New Issue
Block a user