mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-14 11:24:19 +00:00
See #4484. Editing predefined type attributes now enforces valid combinations of userdefined and object/element type
This commit is contained in:
@@ -53,15 +53,29 @@ class Usecase:
|
|||||||
if hasattr(self.settings["product"], "PredefinedType"):
|
if hasattr(self.settings["product"], "PredefinedType"):
|
||||||
if hasattr(self.settings["product"], "ElementType"):
|
if hasattr(self.settings["product"], "ElementType"):
|
||||||
if (
|
if (
|
||||||
not self.settings["product"].ElementType
|
self.settings["product"].ElementType is None
|
||||||
and self.settings["product"].PredefinedType == "USERDEFINED"
|
and self.settings["product"].PredefinedType == "USERDEFINED"
|
||||||
):
|
):
|
||||||
self.settings["product"].PredefinedType = "NOTDEFINED"
|
self.settings["product"].PredefinedType = "NOTDEFINED"
|
||||||
|
elif (
|
||||||
|
self.settings["product"].ElementType
|
||||||
|
and self.settings["product"].PredefinedType != "USERDEFINED"
|
||||||
|
):
|
||||||
|
self.settings["product"].PredefinedType = "USERDEFINED"
|
||||||
elif hasattr(self.settings["product"], "ObjectType"):
|
elif hasattr(self.settings["product"], "ObjectType"):
|
||||||
if (
|
relating_type = ifcopenshell.util.element.get_type(self.settings["product"])
|
||||||
not self.settings["product"].ObjectType
|
if relating_type and relating_type.PredefinedType != "NOTDEFINED":
|
||||||
|
self.settings["product"].ObjectType = None
|
||||||
|
self.settings["product"].PredefinedType = None
|
||||||
|
elif (
|
||||||
|
self.settings["product"].ObjectType is None
|
||||||
and self.settings["product"].PredefinedType == "USERDEFINED"
|
and self.settings["product"].PredefinedType == "USERDEFINED"
|
||||||
):
|
):
|
||||||
self.settings["product"].PredefinedType = "NOTDEFINED"
|
self.settings["product"].PredefinedType = "NOTDEFINED"
|
||||||
|
elif (
|
||||||
|
self.settings["product"].ObjectType
|
||||||
|
and self.settings["product"].PredefinedType != "USERDEFINED"
|
||||||
|
):
|
||||||
|
self.settings["product"].PredefinedType = "USERDEFINED"
|
||||||
if hasattr(self.settings["product"], "OwnerHistory"):
|
if hasattr(self.settings["product"], "OwnerHistory"):
|
||||||
ifcopenshell.api.run("owner.update_owner_history", self.file, **{"element": self.settings["product"]})
|
ifcopenshell.api.run("owner.update_owner_history", self.file, **{"element": self.settings["product"]})
|
||||||
|
|||||||
Reference in New Issue
Block a user