mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-18 06:21:40 +00:00
library.remove_library, remove_reference to support ifc2x3
This commit is contained in:
@@ -38,14 +38,23 @@ def remove_library(file: ifcopenshell.file, library: ifcopenshell.entity_instanc
|
|||||||
library = ifcopenshell.api.run("library.add_library", model, name="Brickschema")
|
library = ifcopenshell.api.run("library.add_library", model, name="Brickschema")
|
||||||
ifcopenshell.api.run("library.remove_library", model, library=library)
|
ifcopenshell.api.run("library.remove_library", model, library=library)
|
||||||
"""
|
"""
|
||||||
settings = {"library": library}
|
|
||||||
|
|
||||||
for reference in set(settings["library"].HasLibraryReferences or []):
|
if file.schema != "IFC2X3":
|
||||||
file.remove(reference)
|
rels = []
|
||||||
file.remove(settings["library"])
|
for reference in set(library.HasLibraryReferences):
|
||||||
for rel in file.by_type("IfcRelAssociatesLibrary"):
|
rels.extend(reference.LibraryRefForObjects)
|
||||||
if not rel.RelatingLibrary:
|
file.remove(reference)
|
||||||
history = rel.OwnerHistory
|
rels.extend(library.LibraryInfoForObjects)
|
||||||
file.remove(rel)
|
file.remove(library)
|
||||||
if history:
|
else:
|
||||||
ifcopenshell.util.element.remove_deep2(file, history)
|
for reference in set(library.LibraryReference or []):
|
||||||
|
file.remove(reference)
|
||||||
|
file.remove(library)
|
||||||
|
# RelatingLibrary could either be library itself or library reference we removed
|
||||||
|
rels = [rel for rel in file.by_type("IfcRelAssociatesLibrary") if rel.RelatingLibrary is None]
|
||||||
|
|
||||||
|
for rel in rels:
|
||||||
|
history = rel.OwnerHistory
|
||||||
|
file.remove(rel)
|
||||||
|
if history:
|
||||||
|
ifcopenshell.util.element.remove_deep2(file, history)
|
||||||
|
|||||||
@@ -40,11 +40,14 @@ def remove_reference(file: ifcopenshell.file, reference: ifcopenshell.entity_ins
|
|||||||
# Let's change our mind and remove it.
|
# Let's change our mind and remove it.
|
||||||
ifcopenshell.api.run("library.remove_reference", model, reference=reference)
|
ifcopenshell.api.run("library.remove_reference", model, reference=reference)
|
||||||
"""
|
"""
|
||||||
settings = {"reference": reference}
|
if file.schema != "IFC2X3":
|
||||||
|
rels = reference.LibraryRefForObjects
|
||||||
|
else:
|
||||||
|
rels = [rel for rel in file.by_type("IfcRelAssociatesLibrary") if rel.RelatingLibrary == reference]
|
||||||
|
|
||||||
for rel in settings["reference"].LibraryRefForObjects:
|
for rel in rels:
|
||||||
history = rel.OwnerHistory
|
history = rel.OwnerHistory
|
||||||
file.remove(rel)
|
file.remove(rel)
|
||||||
if history:
|
if history:
|
||||||
ifcopenshell.util.element.remove_deep2(file, history)
|
ifcopenshell.util.element.remove_deep2(file, history)
|
||||||
file.remove(settings["reference"])
|
file.remove(reference)
|
||||||
|
|||||||
Reference in New Issue
Block a user