diff --git a/src/blenderbim/blenderbim/core/tool.py b/src/blenderbim/blenderbim/core/tool.py index 83b5d16a5d..31ddcb2eaa 100644 --- a/src/blenderbim/blenderbim/core/tool.py +++ b/src/blenderbim/blenderbim/core/tool.py @@ -636,10 +636,6 @@ class Pset: @interface class Qto: - def add_object_base_qto(cls, object): pass - def add_product_base_qto(cls, product): pass - def get_applicable_base_quantity_name(cls, product): pass - def get_applicable_quantity_names(cls, qto_name): pass def get_radius_of_selected_vertices(cls, obj): pass def get_related_cost_item_quantities(cls, product): pass def get_rounded_value(cls, new_quantity): pass diff --git a/src/blenderbim/blenderbim/tool/qto.py b/src/blenderbim/blenderbim/tool/qto.py index 99e9317b7f..51118cb61a 100644 --- a/src/blenderbim/blenderbim/tool/qto.py +++ b/src/blenderbim/blenderbim/tool/qto.py @@ -42,52 +42,6 @@ class Qto(blenderbim.core.tool.Qto): def set_qto_result(cls, result: float) -> None: bpy.context.scene.BIMQtoProperties.qto_result = str(round(result, 3)) - @classmethod - def add_object_base_qto(cls, obj: bpy.types.Object) -> Union[ifcopenshell.entity_instance, None]: - product = tool.Ifc.get_entity(obj) - return cls.add_product_base_qto(product) - - @classmethod - def add_product_base_qto(cls, product: ifcopenshell.entity_instance) -> Union[ifcopenshell.entity_instance, None]: - base_quantity_name = cls.get_applicable_base_quantity_name(product) - if base_quantity_name: - return tool.Ifc.run( - "pset.add_qto", - product=product, - name=base_quantity_name, - ) - - @classmethod - def get_applicable_quantity_names(cls, qto_name: str) -> list[str]: - pset_template = blenderbim.bim.schema.ifc.psetqto.get_by_name(qto_name) - return ( - [property.Name for property in pset_template.HasPropertyTemplates] - if hasattr(pset_template, "HasPropertyTemplates") - else [] - ) - - @classmethod - def get_applicable_base_quantity_name( - cls, product: Optional[ifcopenshell.entity_instance] = None - ) -> Union[str, None]: - if not product: - return - applicable_qto_names = blenderbim.bim.schema.ifc.psetqto.get_applicable_names( - product.is_a(), ifcopenshell.util.element.get_predefined_type(product), qto_only=True - ) - # See https://github.com/buildingSMART/IFC4.3.x-development/issues/851 for anomalies in Qto naming - # Should be in sync with cls.get_base_qto. - applicable_qto: Union[str, None] = None - for qto_name in applicable_qto_names: - # No need for "Qto_" check since we use qto_only=True. - if "Base" in qto_name: - return qto_name - # Prioritize anomaly named base quantities over Qto_BodyGeometryValidation. - if applicable_qto and "BodyGeometryValidation" not in applicable_qto: - continue - applicable_qto = qto_name - return applicable_qto - @classmethod def get_rounded_value(cls, new_quantity: float) -> float: return round(new_quantity, 3) @@ -134,7 +88,6 @@ class Qto(blenderbim.core.tool.Qto): def get_base_qto(cls, product: ifcopenshell.entity_instance) -> Union[ifcopenshell.entity_instance, None]: if not hasattr(product, "IsDefinedBy"): return - # Should be in sync with cls.get_applicable_base_quantity_name. base_qto_definition = None base_qto_definition_name: Union[str, None] = None for rel in product.IsDefinedBy or []: diff --git a/src/ifc5d/ifc5d/qto.py b/src/ifc5d/ifc5d/qto.py index a4ddbd617e..f197bb6c36 100644 --- a/src/ifc5d/ifc5d/qto.py +++ b/src/ifc5d/ifc5d/qto.py @@ -84,6 +84,8 @@ class IfcOpenShell: for name, quantities in qtos.items(): for quantity, formula in quantities.items(): + if not formula: + continue if formula.startswith("gross_"): formula = formula[6:] gross_qtos.setdefault(name, {})[quantity] = formula