Untitled
unknown
plain_text
a year ago
1.7 kB
4
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