mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-09 17:31:45 +00:00
Fix bug where UI didn't show applicable psets to specific predefined types
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
)
|
||||
)
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user