fix api docstring description for nest.unassign_object usecase

This commit is contained in:
Sigma Dimensions
2023-02-07 15:35:34 +01:00
parent 4bd7fc5304
commit 4e308a6e31
@@ -22,26 +22,17 @@ import ifcopenshell.api
class Usecase: class Usecase:
def __init__(self, file, related_object=None): def __init__(self, file, related_object=None):
"""Unassigns a related_object from its nest """Unassigns a related_object from its nest.
A related_object (i.e. a smaller part of a whole) may be aggregated into zero An object (the whole within a decomposition) is Nested by zero or one more smaller objects.
or one larger space or task. This function will remove that This function will remove this nesting relationship.
aggregation relationship.
As all physical IFC model elements must be part of a hierarchical tree If the object is not part of a nesting relationship, nothing will happen.
called the "spatial decomposition", using this function will remove the
related_object from that tree. This is a dangerous operation and may result in
the related_object no longer being visible in IFC applications.
If the related_object is not part of an aggregation relationship, nothing will :param related_object: The child of the nesting relationship, typically
happen. an IfcElement.
:param related_object: The part of the nest, typically an IfcElement or
IfcSpatialStructureElement subclass
:type related_object: ifcopenshell.entity_instance.entity_instance :type related_object: ifcopenshell.entity_instance.entity_instance
:return: The IfcRelAggregate relationship instance, only returned if the :return: None if the nest has only one child, otherwise the IfcRelNests relationship instance
whole still contains any other parts.
:rtype: ifcopenshell.entity_instance.entity_instance, None
Example: Example:
@@ -54,11 +45,11 @@ class Usecase:
ifcopenshell.api.run("nest.assign_object", model, related_object=subtask2, relating_object=task) ifcopenshell.api.run("nest.assign_object", model, related_object=subtask2, relating_object=task)
# The relationship is returned as task still has subtask2 # The relationship is returned as task still has subtask2
rel = ifcopenshell.api.run("nest.unassign_object", model, related_object=subtask1) rel = ifcopenshell.api.run("nest.unassign_object", model, related_object=subtask1)
# Nothing is returned, as task is now empty # Nothing is returned, as the relationship has no related objects
ifcopenshell.api.run("nest.unassign_object", model, related_object=subtask2) ifcopenshell.api.run("nest.unassign_object", model, related_object=subtask2)
""" """
self.file = file self.file = file
self.settings = { "related_object": related_object } self.settings = {"related_object": related_object}
def execute(self): def execute(self):
for rel in self.settings["related_object"].Nests or []: for rel in self.settings["related_object"].Nests or []:
@@ -69,5 +60,7 @@ class Usecase:
related_objects = list(rel.RelatedObjects) related_objects = list(rel.RelatedObjects)
related_objects.remove(self.settings["related_object"]) related_objects.remove(self.settings["related_object"])
rel.RelatedObjects = related_objects rel.RelatedObjects = related_objects
ifcopenshell.api.run("owner.update_owner_history", self.file, **{"element": rel}) ifcopenshell.api.run(
"owner.update_owner_history", self.file, **{"element": rel}
)
return rel return rel