def heyWitch_jntFromLoop(self, *args): loopyJointPrompt = cmds.promptDialog(message="Enter name ", button=['OK', 'Cancel'], defaultButton='OK', cancelButton='Cancel', dismissString='Cancel') if loopyJointPrompt == 'OK': loopyJoint = cmds.promptDialog(query=True, text=True) cmds.DetachComponent() cmds.CreateCurveFromPoly() newCurve = cmds.ls(sl=True, type='transform') for x in newCurve: cmds.delete(x, ch=True) cmds.makeIdentity(x, apply=True, t=1, r=1, s=1, n=0) cmds.CenterPivot() cmds.select(clear=True) cmds.joint(name=loopyJoint) cmds.pointConstraint(x, loopyJoint) cmds.delete((loopyJoint + "_pointConstraint1"), x)
import maya.cmds as mc import maya.mel as mel oEdges = mc.ls(sl=True) oObj = oEdges[0].split('.')[0] oFace = '' for i in oEdges: if '.f[' in i: oFace = i mc.DetachComponent() mc.select(cl=True) mc.select(oFace) mc.ConvertSelectionToShell() oFacesFinal = mc.ls(sl=True) mc.select(oObj) mc.polyMergeVertex(d=0.0001) mc.select(oFacesFinal) mc.selectType(smp=0, sme=0, smf=1, smu=0, pv=0, pe=0, pf=1, puv=0) mc.hilite(oObj, r=True) mel.eval('doDelete;') mc.select(oObj, r=True) mc.polyCloseBorder()
def makeSym(*args): selLs = cmds.ls(sl = True) # When user select center edge loop. if '.e' in selLs[0]: numOfShells = cmds.polyEvaluate(shell = True) if numOfShells > 1: cmds.confirmDialog(title = 'Warning', message = 'Selected mesh is made of combining several geometry.\nSeparate mesh and try it again.') return False centerEdgeLoop = selLs objName = centerEdgeLoop[0].split('.')[0] uvKeepGeo = cmds.duplicate(objName, n = '{0}_uvKeep_geo'.format(objName)) mel.eval('PolySelectConvert 3;') tak_misc.zeroVtx() cmds.select(centerEdgeLoop, r = True) cmds.DetachComponent() leftVtxDic, rightVtxDic, centerVtxDic = getVtxInfo(objName) symOpt = cmds.radioButtonGrp('symOptRadButGrp', q = True, select = True) # If user select 'x to -x' mean left to right. if symOpt == 1: rightestVtx = getSidestVtx(rightVtxDic) cmds.select(rightestVtx, r = True) mel.eval('PolySelectConvert 1;') # Convert vertex selection to face. rightestFace = cmds.ls(sl = True, fl = True)[0] rightestFaceId = int(re.search(r'.+f\[(\d+)\]', rightestFace).group(1)) cmds.polySelect(extendToShell = rightestFaceId) cmds.delete() # mirror geometry mirrorNode = cmds.polyMirrorFace(objName, ws = True, direction = 1, mergeMode = 0, mergeThreshold = 0.001, ch = True) cmds.polyMirrorFace(mirrorNode, e = True, pivotX = 0.0) # If user select '-x to x' mean right to left. if symOpt == 2: leftestVtx = getSidestVtx(leftVtxDic) cmds.select(leftestVtx, r = True) mel.eval('PolySelectConvert 1;') # Convert vertex selection to face. leftestFace = cmds.ls(sl = True, fl = True)[0] leftestFaceId = int(re.search(r'.+f\[(\d+)\]', leftestFace).group(1)) cmds.polySelect(extendToShell = leftestFaceId) cmds.delete() # mirror geometry mirrorNode = cmds.polyMirrorFace(objName, ws = True, direction = 1, mergeMode = 0, mergeThreshold = 0.001, ch = True) cmds.polyMirrorFace(mirrorNode, e = True, pivotX = 0.0) # When user select object. else: objName = selLs[0] uvKeepGeo = cmds.duplicate(objName, n = '{0}_uvKeep_geo'.format(objName)) leftVtxDic, rightVtxDic, centerVtxDic = getVtxInfo(objName) symOpt = cmds.radioButtonGrp('symOptRadButGrp', q = True, select = True) if centerVtxDic.keys(): cmds.select(centerVtxDic.keys(), r = True) mel.eval('SelectEdgeLoopSp;') tak_misc.zeroVtx() leftVtxDic, rightVtxDic, centerVtxDic = getVtxInfo(objName) # Refresh vertex position information. # If user select 'x to -x' mean left to right. if symOpt == 1: cmds.select(rightVtxDic.keys(), r = True) mel.eval('PolySelectConvert 1;') # Convert vertex selection to face. cmds.delete() # mirror geometry mirrorNode = cmds.polyMirrorFace(objName, ws = True, direction = 1, ch = True) cmds.polyMirrorFace(mirrorNode, e = True, pivotX = 0.0) # If user select 'x to -x' mean right to left. if symOpt == 2: cmds.select(leftVtxDic.keys(), r = True) mel.eval('PolySelectConvert 1;') # Convert vertex selection to face. cmds.delete() # mirror geometry mirrorNode = cmds.polyMirrorFace(objName, ws = True, direction = 1, ch = True) cmds.polyMirrorFace(mirrorNode, e = True, pivotX = 0.0) leftVtxDic, rightVtxDic, centerVtxDic = getVtxInfo(objName) if centerVtxDic.keys(): cmds.select(centerVtxDic.keys(), r = True) cmds.polyMergeVertex(distance = 0.001) # Copy uv from uv keeped geometry to new symmetrized geometry. smpSpc = cmds.radioButtonGrp('symSmpSpcRdoBtn', q = True, select = True) if smpSpc == 2: smpSpc = 4 elif smpSpc == 3: smpSpc = 5 cmds.transferAttributes(uvKeepGeo, objName, transferUVs = 2, sampleSpace = smpSpc) # cmds.select(objName, r = True) # mel.eval("SoftPolyEdgeElements 1;") # cmds.select(objName, r = True) # mel.eval('polyNormalPerVertex -ufn true;') cmds.delete(objName, ch = True) cmds.delete(uvKeepGeo) cmds.select(objName, r = True)
def detachComponent(): cmds.DetachComponent()