mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-09 17:31:45 +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")
|
||||
ifcopenshell.api.run("library.remove_library", model, library=library)
|
||||
"""
|
||||
settings = {"library": library}
|
||||
|
||||
for reference in set(settings["library"].HasLibraryReferences or []):
|
||||
file.remove(reference)
|
||||
file.remove(settings["library"])
|
||||
for rel in file.by_type("IfcRelAssociatesLibrary"):
|
||||
if not rel.RelatingLibrary:
|
||||
history = rel.OwnerHistory
|
||||
file.remove(rel)
|
||||
if history:
|
||||
ifcopenshell.util.element.remove_deep2(file, history)
|
||||
if file.schema != "IFC2X3":
|
||||
rels = []
|
||||
for reference in set(library.HasLibraryReferences):
|
||||
rels.extend(reference.LibraryRefForObjects)
|
||||
file.remove(reference)
|
||||
rels.extend(library.LibraryInfoForObjects)
|
||||
file.remove(library)
|
||||
else:
|
||||
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.
|
||||
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
|
||||
file.remove(rel)
|
||||
if history:
|
||||
ifcopenshell.util.element.remove_deep2(file, history)
|
||||
file.remove(settings["reference"])
|
||||
file.remove(reference)
|
||||
|
||||
Reference in New Issue
Block a user