mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-06 12:26:26 +00:00
Merge pull request #3405 from brunoperdigao/pset_select_same_value
Bug fix in #3392
This commit is contained in:
@@ -320,41 +320,52 @@ class EditPset(bpy.types.Operator, Operator):
|
|||||||
tool.Blender.update_viewport()
|
tool.Blender.update_viewport()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class SelectSimilarPsetValue(bpy.types.Operator):
|
class SelectSimilarPsetValue(bpy.types.Operator):
|
||||||
|
"""
|
||||||
|
Selects objects with the same property value.
|
||||||
|
"""
|
||||||
bl_idname = "bim.select_similar_pset_value"
|
bl_idname = "bim.select_similar_pset_value"
|
||||||
bl_label = "Select Similar Pset Value"
|
bl_label = "Select Similar Pset Value"
|
||||||
bl_options = {"REGISTER", "UNDO"}
|
bl_options = {"REGISTER", "UNDO"}
|
||||||
|
bl_description = "Selects objects with the same property value.\n\n" + "ALT+CLICK to select from all pset common"
|
||||||
pset_name: bpy.props.StringProperty()
|
pset_name: bpy.props.StringProperty()
|
||||||
prop_name: bpy.props.StringProperty()
|
prop_name: bpy.props.StringProperty()
|
||||||
value: bpy.props.StringProperty()
|
value: bpy.props.StringProperty()
|
||||||
|
all_pset_common: bpy.props.BoolProperty(name = "All Pset Common", 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):
|
def execute(self, context):
|
||||||
|
|
||||||
for element in tool.Ifc.get().by_type("IfcElement"):
|
for element in tool.Ifc.get().by_type("IfcElement"):
|
||||||
obj = tool.Ifc.get_object(element)
|
|
||||||
try:
|
try:
|
||||||
|
obj = tool.Ifc.get_object(element)
|
||||||
psets = ifcopenshell.util.element.get_psets(element)
|
psets = ifcopenshell.util.element.get_psets(element)
|
||||||
except:
|
except:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if self.pset_name.endswith("Common"):
|
if self.all_pset_common & self.pset_name.endswith("Common"):
|
||||||
for key in psets.keys():
|
for key in psets.keys():
|
||||||
if key.endswith("Common"):
|
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:
|
else:
|
||||||
pset = psets[self.pset_name]
|
try:
|
||||||
|
pset = psets[self.pset_name]
|
||||||
try:
|
if str(pset[self.prop_name]) == self.value:
|
||||||
pset[self.prop_name]
|
obj.select_set(True)
|
||||||
except:
|
except:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if str(pset[self.prop_name]) == self.value:
|
|
||||||
obj.select_set(True)
|
|
||||||
|
|
||||||
return {"FINISHED"}
|
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"
|
||||||
|
|||||||
Reference in New Issue
Block a user