mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-17 22:11:36 +00:00
implements #3268
This commit is contained in:
committed by
Dion Moult
parent
1696ca5e08
commit
1eef746f60
@@ -30,6 +30,7 @@ classes = (
|
|||||||
operator.CalculateQuantity,
|
operator.CalculateQuantity,
|
||||||
operator.RemovePset,
|
operator.RemovePset,
|
||||||
operator.TogglePsetExpansion,
|
operator.TogglePsetExpansion,
|
||||||
|
operator.SelectSimilarPsetValue,
|
||||||
operator.BIM_OT_add_property_to_edit,
|
operator.BIM_OT_add_property_to_edit,
|
||||||
operator.BIM_OT_remove_property_to_edit,
|
operator.BIM_OT_remove_property_to_edit,
|
||||||
operator.BIM_OT_clear_list,
|
operator.BIM_OT_clear_list,
|
||||||
|
|||||||
@@ -320,6 +320,41 @@ class EditPset(bpy.types.Operator, Operator):
|
|||||||
tool.Blender.update_viewport()
|
tool.Blender.update_viewport()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class SelectSimilarPsetValue(bpy.types.Operator):
|
||||||
|
bl_idname = "bim.select_similar_pset_value"
|
||||||
|
bl_label = "Select Similar Pset Value"
|
||||||
|
bl_options = {"REGISTER", "UNDO"}
|
||||||
|
pset_name: bpy.props.StringProperty()
|
||||||
|
prop_name: bpy.props.StringProperty()
|
||||||
|
value: bpy.props.StringProperty()
|
||||||
|
|
||||||
|
def execute(self, context):
|
||||||
|
|
||||||
|
for element in tool.Ifc.get().by_type("IfcElement"):
|
||||||
|
obj = tool.Ifc.get_object(element)
|
||||||
|
try:
|
||||||
|
psets = ifcopenshell.util.element.get_psets(element)
|
||||||
|
except:
|
||||||
|
continue
|
||||||
|
|
||||||
|
if self.pset_name.endswith("Common"):
|
||||||
|
for key in psets.keys():
|
||||||
|
if key.endswith("Common"):
|
||||||
|
pset = psets[key]
|
||||||
|
else:
|
||||||
|
pset = psets[self.pset_name]
|
||||||
|
|
||||||
|
try:
|
||||||
|
pset[self.prop_name]
|
||||||
|
except:
|
||||||
|
continue
|
||||||
|
|
||||||
|
if str(pset[self.prop_name]) == self.value:
|
||||||
|
obj.select_set(True)
|
||||||
|
|
||||||
|
return {"FINISHED"}
|
||||||
|
|
||||||
class RemovePset(bpy.types.Operator, Operator):
|
class RemovePset(bpy.types.Operator, Operator):
|
||||||
bl_idname = "bim.remove_pset"
|
bl_idname = "bim.remove_pset"
|
||||||
bl_label = "Remove Pset"
|
bl_label = "Remove Pset"
|
||||||
|
|||||||
@@ -135,6 +135,10 @@ def draw_psetqto_ui(context, pset_id, pset, props, layout, obj_type):
|
|||||||
row.scale_y = 0.8
|
row.scale_y = 0.8
|
||||||
row.label(text=prop["Name"])
|
row.label(text=prop["Name"])
|
||||||
row.label(text=str(prop["NominalValue"]))
|
row.label(text=str(prop["NominalValue"]))
|
||||||
|
op = row.operator("bim.select_similar_pset_value", text="", icon="RESTRICT_SELECT_OFF")
|
||||||
|
op.pset_name = pset["Name"]
|
||||||
|
op.prop_name = prop["Name"]
|
||||||
|
op.value = str(prop["NominalValue"])
|
||||||
if not has_props_displayed:
|
if not has_props_displayed:
|
||||||
row = box.row()
|
row = box.row()
|
||||||
row.scale_y = 0.8
|
row.scale_y = 0.8
|
||||||
|
|||||||
Reference in New Issue
Block a user