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:
Ryan Schultz
2026-04-15 16:53:46 -05:00
parent f0d8a6f4f4
commit a2ec575618
+15 -10
View File
@@ -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.")