From adde772014a3f2e4590bac48a62d758a64e4efb4 Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Wed, 24 Jul 2024 17:10:41 +1000 Subject: [PATCH] Also consider non elements when guessing a false origin --- src/blenderbim/blenderbim/tool/loader.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/blenderbim/blenderbim/tool/loader.py b/src/blenderbim/blenderbim/tool/loader.py index 051ccb46a1..6e530656a0 100644 --- a/src/blenderbim/blenderbim/tool/loader.py +++ b/src/blenderbim/blenderbim/tool/loader.py @@ -650,7 +650,24 @@ class Loader(blenderbim.core.tool.Loader): # absolutely positioned. We check more than 1 because sometimes users # try to be clever and put "origin marker" objects. element_checking_threshold = 3 - for element in ifc_file.by_type("IfcElement"): + elements = ifc_file.by_type("IfcElement") + + if ifc_file.schema not in ("IFC2X3", "IFC4"): + if not elements: + elements = ifc_file.by_type("IfcLinearPositioningElement") + if not elements: + elements = ifc_file.by_type("IfcReferent") + if not elements: + elements = ifc_file.by_type("IfcGrid") + + if ifc_file.schema == "IFC2X3": + if not elements: + elements = ifc_file.by_type("IfcSpatialStructureElement") + else: + if not elements: + elements = ifc_file.by_type("IfcSpatialElement") + + for element in elements: if elements_checked > element_checking_threshold: return if not element.Representation: