style.remove_style to handle IfcFillAreaStyles

This commit is contained in:
Andrej730
2024-10-01 15:27:52 +05:00
parent 19f1c87437
commit f63a7d420e
2 changed files with 27 additions and 1 deletions
@@ -51,9 +51,13 @@ class Usecase:
def execute(self, style: ifcopenshell.entity_instance) -> None:
self.purge_inverses(style)
if style.is_a("IfcSurfaceStyle"):
ifc_class = style.is_a()
if ifc_class == "IfcSurfaceStyle":
for style_ in style.Styles:
ifcopenshell.api.style.remove_surface_style(self.file, style=style_)
elif ifc_class == "IfcFillAreaStyle":
for style_ in style.FillStyles:
ifcopenshell.util.element.remove_deep2(self.file, style_, also_consider=[style])
self.file.remove(style)
def purge_inverses(self, style: ifcopenshell.entity_instance) -> None:
@@ -69,6 +69,28 @@ class TestRemoveStyle(test.bootstrap.IFC4):
assert len(self.file.by_type("IfcMaterialDefinitionRepresentation")) == 0
assert len(self.file.by_type("IfcStyledRepresentation")) == 0
def test_remove_fill_area_with_fill_area_style_hatching(self):
element = self.file.create_entity("IfcWall")
material = ifcopenshell.api.material.add_material(self.file)
ifcopenshell.api.material.assign_material(self.file, products=[element], material=material)
curve_style = self.file.create_entity("IfcCurveStyle")
fill_style = self.file.create_entity("IfcFillAreaStyleHatching", HatchLineAppearance=curve_style)
style = self.file.create_entity("IfcFillAreaStyle", FillStyles=[fill_style])
self.file.create_entity(
"IfcMaterialDefinitionRepresentation",
RepresentedMaterial=material,
Representations=[
self.file.create_entity(
"IfcStyledRepresentation",
Items=[self.file.create_entity("IfcStyledItem", Styles=[style])],
)
],
)
ifcopenshell.api.style.remove_style(self.file, style)
assert len(self.file.by_type("IfcPresentationStyle")) == 0
assert len(self.file.by_type("IfcMaterialDefinitionRepresentation")) == 0
assert len(self.file.by_type("IfcStyledRepresentation")) == 0
class TestRemoveStyleIFC2X3(test.bootstrap.IFC2X3, TestRemoveStyle):
pass