mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-11 18:16:40 +00:00
Concatenate all selected values in select_similar
When multiple objects are selected, _generate_clipboard_query previously only used the first reference value. Now all values are joined with " + " so the clipboard query reflects every selected object (e.g. GlobalId = "A" + GlobalId = "B"). Generated with the assistance of an AI coding tool.
This commit is contained in:
@@ -1519,7 +1519,7 @@ class SelectSimilar(Operator):
|
||||
f"{verb} all objects that share the same ({self.key}) value(s) from {len(reference_values)} reference object(s).",
|
||||
)
|
||||
|
||||
self._generate_clipboard_query(reference_values[0] if reference_values else None, key)
|
||||
self._generate_clipboard_query(reference_values, key)
|
||||
|
||||
return {"FINISHED"}
|
||||
|
||||
@@ -1568,17 +1568,22 @@ class SelectSimilar(Operator):
|
||||
bpy.context.window_manager.clipboard = str(total)
|
||||
self.report({"INFO"}, f"({total}) was copied to the clipboard.")
|
||||
|
||||
def _generate_clipboard_query(self, value, key):
|
||||
def _generate_clipboard_query(self, values, key):
|
||||
key = "PredefinedType" if key == "predefined_type" else key
|
||||
if value is True:
|
||||
value = "TRUE"
|
||||
elif value is False:
|
||||
value = "FALSE"
|
||||
if not values:
|
||||
return
|
||||
|
||||
if isinstance(value, list) and value:
|
||||
result = ", ".join(f'{key} = "{item}"' for item in value)
|
||||
else:
|
||||
result = f'{key} = "{value}"'
|
||||
def format_value(value):
|
||||
if value is True:
|
||||
return f'{key} = "TRUE"'
|
||||
elif value is False:
|
||||
return f'{key} = "FALSE"'
|
||||
elif isinstance(value, list) and value:
|
||||
return ", ".join(f'{key} = "{item}"' for item in value)
|
||||
else:
|
||||
return f'{key} = "{value}"'
|
||||
|
||||
result = " + ".join(format_value(v) for v in values)
|
||||
|
||||
bpy.context.window_manager.clipboard = result
|
||||
self.report({"INFO"}, f"({result}) was copied to the clipboard.")
|
||||
|
||||
Reference in New Issue
Block a user