Fix bug where UI didn't show applicable psets to specific predefined types

This commit is contained in:
Dion Moult
2024-01-13 16:49:02 +11:00
parent 608147c245
commit c8456532ad
3 changed files with 23 additions and 12 deletions
@@ -91,7 +91,9 @@ class ObjectPsetsData(Data):
element = tool.Ifc.get_entity(obj)
if not element:
return []
psets = blenderbim.bim.schema.ifc.psetqto.get_applicable(element.is_a(), pset_only=True)
psets = blenderbim.bim.schema.ifc.psetqto.get_applicable(
element.is_a(), ifcopenshell.util.element.get_predefined_type(element), pset_only=True
)
psetnames = cls.format_pset_enum(psets)
assigned_names = ifcopenshell.util.element.get_psets(element, psets_only=True, should_inherit=False).keys()
return [p for p in psetnames if p[0] not in assigned_names]
@@ -102,7 +104,9 @@ class ObjectPsetsData(Data):
element = tool.Ifc.get_entity(obj)
if not element:
return []
qtos = blenderbim.bim.schema.ifc.psetqto.get_applicable(element.is_a(), qto_only=True)
qtos = blenderbim.bim.schema.ifc.psetqto.get_applicable(
element.is_a(), ifcopenshell.util.element.get_predefined_type(element), qto_only=True
)
return cls.format_pset_enum(qtos)
@classmethod
+8 -3
View File
@@ -56,7 +56,12 @@ class Pset(blenderbim.core.tool.Pset):
@classmethod
def is_pset_applicable(cls, element, pset_name):
return bool(pset_name in blenderbim.bim.schema.ifc.psetqto.get_applicable_names(element.is_a(), pset_only=True))
return bool(
pset_name
in blenderbim.bim.schema.ifc.psetqto.get_applicable_names(
element.is_a(), ifcopenshell.util.element.get_predefined_type(element), pset_only=True
)
)
@classmethod
def is_pset_empty(cls, pset):
@@ -69,7 +74,7 @@ class Pset(blenderbim.core.tool.Pset):
@classmethod
def enable_pset_editing(cls, pset_id=None, pset_name=None, pset_type=None, obj=None, obj_type=None):
#TODO REFACTOR ONCE toll/CORE functions are available
# TODO REFACTOR ONCE toll/CORE functions are available
bpy.ops.bim.enable_pset_editing(
pset_id=0, pset_name=tool.Pset.get_pset_name(obj, obj_type), pset_type="PSET", obj=obj, obj_type=obj_type
)
)
+9 -7
View File
@@ -70,7 +70,9 @@ class Qto(blenderbim.core.tool.Qto):
def get_applicable_base_quantity_name(cls, product=None):
if not product:
return
applicable_qto_names = blenderbim.bim.schema.ifc.psetqto.get_applicable_names(product.is_a(), qto_only=True)
applicable_qto_names = blenderbim.bim.schema.ifc.psetqto.get_applicable_names(
product.is_a(), ifcopenshell.util.element.get_predefined_type(product), qto_only=True
)
return next((qto_name for qto_name in applicable_qto_names if "Qto_" in qto_name and "Base" in qto_name), None)
@classmethod
@@ -205,12 +207,12 @@ class Qto(blenderbim.core.tool.Qto):
if quantity == cost_item_quantity:
result.append(
{
"cost_item_id" : cost_item.id(),
"cost_item_name" : cost_item.Name,
"quantity_id" : quantity.id(),
"quantity_name" : quantity.Name,
"quantity_value" : quantity[3],
"quantity_type" : quantity.is_a(),
"cost_item_id": cost_item.id(),
"cost_item_name": cost_item.Name,
"quantity_id": quantity.id(),
"quantity_name": quantity.Name,
"quantity_value": quantity[3],
"quantity_type": quantity.is_a(),
}
)
return result