Utility_Apps/Blender/simple scripts/Delete Redundant Meshes/Delete Redundant Meshes.py
2025-07-06 09:31:57 -05:00

43 lines
1 KiB
Python

import bpy
import re
from collections import defaultdict
# Match patterns like:
# - test.001, test.002
# - test001, test002
pattern_dot = re.compile(r"^(.*)\.(\d{3})$")
pattern_nodot = re.compile(r"^(.*?)(\d{3})$")
# Group objects by base name
groups = defaultdict(list)
for obj in bpy.data.objects:
if obj.type != 'MESH':
continue
name = obj.name
base_name = None
# Match dot pattern (e.g., Cube.001)
match = pattern_dot.match(name)
if match:
base_name = match.group(1)
# Match no-dot pattern (e.g., Cube001)
else:
match = pattern_nodot.match(name)
if match:
base_name = match.group(1)
if base_name:
groups[base_name].append(obj)
# Delete redundant meshes (keep base name only)
for base_name, objs in groups.items():
# Sort objects by name
objs.sort(key=lambda o: o.name)
for obj in objs:
if obj.name != base_name:
print(f"Deleting: {obj.name}")
bpy.data.objects.remove(obj, do_unlink=True)