mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-19 22:50:21 +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)
|
element = tool.Ifc.get_entity(obj)
|
||||||
if not element:
|
if not element:
|
||||||
return []
|
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)
|
psetnames = cls.format_pset_enum(psets)
|
||||||
assigned_names = ifcopenshell.util.element.get_psets(element, psets_only=True, should_inherit=False).keys()
|
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]
|
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)
|
element = tool.Ifc.get_entity(obj)
|
||||||
if not element:
|
if not element:
|
||||||
return []
|
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)
|
return cls.format_pset_enum(qtos)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
|||||||
@@ -56,7 +56,12 @@ class Pset(blenderbim.core.tool.Pset):
|
|||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def is_pset_applicable(cls, element, pset_name):
|
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
|
@classmethod
|
||||||
def is_pset_empty(cls, pset):
|
def is_pset_empty(cls, pset):
|
||||||
@@ -69,7 +74,7 @@ class Pset(blenderbim.core.tool.Pset):
|
|||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def enable_pset_editing(cls, pset_id=None, pset_name=None, pset_type=None, obj=None, obj_type=None):
|
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(
|
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
|
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):
|
def get_applicable_base_quantity_name(cls, product=None):
|
||||||
if not product:
|
if not product:
|
||||||
return
|
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)
|
return next((qto_name for qto_name in applicable_qto_names if "Qto_" in qto_name and "Base" in qto_name), None)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
@@ -205,12 +207,12 @@ class Qto(blenderbim.core.tool.Qto):
|
|||||||
if quantity == cost_item_quantity:
|
if quantity == cost_item_quantity:
|
||||||
result.append(
|
result.append(
|
||||||
{
|
{
|
||||||
"cost_item_id" : cost_item.id(),
|
"cost_item_id": cost_item.id(),
|
||||||
"cost_item_name" : cost_item.Name,
|
"cost_item_name": cost_item.Name,
|
||||||
"quantity_id" : quantity.id(),
|
"quantity_id": quantity.id(),
|
||||||
"quantity_name" : quantity.Name,
|
"quantity_name": quantity.Name,
|
||||||
"quantity_value" : quantity[3],
|
"quantity_value": quantity[3],
|
||||||
"quantity_type" : quantity.is_a(),
|
"quantity_type": quantity.is_a(),
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
return result
|
return result
|
||||||
|
|||||||
Reference in New Issue
Block a user