Untitled
unknown
plain_text
a year ago
1.7 kB
22
Indexable
import maya.cmds as cmds
def get_curve_cvs(curve):
"""Returns a sorted list of the CV positions of the given curve."""
cvs = cmds.ls(curve + '.cv[*]', fl=True)
points = [tuple(cmds.pointPosition(cv)) for cv in cvs] # Convert to tuple for immutability
return sorted(points)
def find_duplicate_curves_in_selection():
"""Finds and selects duplicate NURBS curves in the current selection."""
selected_transforms = cmds.ls(selection=True, type='transform')
selected_curves = cmds.listRelatives(selected_transforms, shapes=True, type='nurbsCurve')
if not selected_curves:
cmds.warning("No NURBS curves selected.")
return
curve_cvs_dict = {}
duplicate_curves = set()
duplicate_info = []
for curve in selected_curves:
try:
cvs = get_curve_cvs(curve)
except Exception as e:
print("Error processing curve {}: {}".format(curve, str(e)))
continue
cvs_tuple = tuple(cvs) # Ensure cvs is a tuple of tuples
if cvs_tuple in curve_cvs_dict:
duplicate_curves.add(curve)
duplicate_info.append((curve_cvs_dict[cvs_tuple], curve))
else:
curve_cvs_dict[cvs_tuple] = curve
if duplicate_curves:
cmds.select(list(duplicate_curves), add=True)
cmds.warning("Duplicate curves found and selected: {}".format(len(duplicate_curves)))
print("Duplicate pairs:")
for original, duplicate in duplicate_info:
print("Original: {}, Duplicate: {}".format(original, duplicate))
else:
cmds.warning("No duplicate curves found in the selection.")
find_duplicate_curves_in_selection()
Editor is loading...
Leave a Comment