bugfix and alt+click functionality

This commit is contained in:
Bruno Perdigão
2023-07-07 15:19:35 -03:00
parent 4be1fa7632
commit 72b2cf626f
@@ -322,37 +322,49 @@ class EditPset(bpy.types.Operator, Operator):
class SelectSimilarPsetValue(bpy.types.Operator):
"""
Selects objects with the same property value.
"""
bl_idname = "bim.select_similar_pset_value"
bl_label = "Select Similar Pset Value"
bl_options = {"REGISTER", "UNDO"}
bl_description = "Selects objects with the same property value.\n\n" + "ALT+CLICK to select from all pset commons"
pset_name: bpy.props.StringProperty()
prop_name: bpy.props.StringProperty()
value: bpy.props.StringProperty()
all_pset_common: bpy.props.BoolProperty(name = "All Classes", default=False, options={"SKIP_SAVE"})
def invoke(self, context, event):
# make sure to use SKIP_SAVE on property, otherwise it might get stuck
if event.type == "LEFTMOUSE" and event.alt:
self.all_pset_common = True
return self.execute(context)
def execute(self, context):
for element in tool.Ifc.get().by_type("IfcElement"):
obj = tool.Ifc.get_object(element)
try:
obj = tool.Ifc.get_object(element)
psets = ifcopenshell.util.element.get_psets(element)
except:
continue
if self.pset_name.endswith("Common"):
if self.all_pset_common & self.pset_name.endswith("Common"):
for key in psets.keys():
if key.endswith("Common"):
pset = psets[key]
try:
pset = psets[key]
if str(pset[self.prop_name]) == self.value:
obj.select_set(True)
except:
continue
else:
pset = psets[self.pset_name]
try:
pset[self.prop_name]
except:
continue
try:
pset = psets[self.pset_name]
if str(pset[self.prop_name]) == self.value:
obj.select_set(True)
except:
continue
if str(pset[self.prop_name]) == self.value:
obj.select_set(True)
return {"FINISHED"}
class RemovePset(bpy.types.Operator, Operator):