def selectTextureBorderEdges(obj): sel = OpenMaya.MSelectionList() sel.add(obj) dagPath = sel.getDagPath(0) fnMesh = OpenMaya.MFnMesh(dagPath) nbUvShells, uvShellIds = fnMesh.getUvShellsIds() uvShells = [UVShell(i, dagPath.fullPathName()) for i in range(nbUvShells)] for n, i in enumerate(uvShellIds): uvShells[i].uvIndices.append(n) for i in uvShells: i.setPath() edges = [] for s in uvShells: cmds.select(s.fullPathList[0], r=True) cmds.ConvertSelectionToUVShellBorder() cmds.ConvertSelectionToVertices() cmds.ConvertSelectionToContainedEdges() shellBorderEdges = cmds.ls(sl=True, fl=True, long=True) edges.extend(shellBorderEdges) cmds.select(d=True) return list(set(edges))
def mirrorGeo(): # Variables and selection mirrorMode = cmds.radioButtonGrp('mirrorMode', q=True, sl=True) mDir = cmds.radioButtonGrp('mDir', q=True, sl=True) sel = cmds.ls(sl=True) # Duplication type if (mirrorMode == 1): cmds.duplicate() elif (mirrorMode == 2): cmds.instance() else: newHalf = cmds.duplicate() # Scaling if (mDir == 1): cmds.scale(-1, 1, 1) elif (mDir == 2): cmds.scale(1, -1, 1) else: cmds.scale(1, 1, -1) # Merging Copy if (mirrorMode == 3): cmds.select(sel[0], r=True) cmds.select(newHalf, add=True) cmds.polyUnite() cmds.ConvertSelectionToVertices() cmds.polyMergeVertex(d=0.001, am=1, ch=1) cmds.select(sel[0])
def setLow(*args): print "Set low."; global high; global low,low_uv global vtx_list; global low_text; low=[]; vtx_list=[]; selected = cmds.ls(sl=True,long=True) or [] count = len(selected) if count<=0: print "null select."; cmds.text(low_text,l="Low not set",edit=True) return; elif count==1: print "Set low ",selected[0]; cmds.text(low_text,l=selected[0],edit=True) else: cmds.text(low_text,l=len+" selected.",edit=True) cmds.ConvertSelectionToVertices() for i in cmds.filterExpand( sm=31 ): low.append(cmds.xform(i,ws=True,q=True,t=True)) vtx_list.append(i) #get lowuv low_uv = getUVs() return;
def setAverageWeight(self, vtx): msh = vtx.split('.')[0] cmds.select(vtx) cmds.ConvertSelectionToEdges() cmds.ConvertSelectionToVertices() neighbors = cmds.ls(sl=1, flatten=1) neighbors.pop(neighbors.index(vtx)) infList = {} skin = self.findRelatedSkinCluster(msh) for vert in neighbors: for jnt in cmds.skinCluster(skin, q=1, wi=1): amt = cmds.skinPercent(skin, vert, q=1, t=jnt) if amt > 0.0: if jnt in infList: infList[jnt].append(amt) else: infList[str(jnt)] = [amt] for inf in infList: total = None for w in infList[inf]: if not total: total = w else: total += w weight = total / len(infList[inf]) cmds.skinPercent(self.currentSkin, vtx, tv=[str(inf), weight], nrm=1)
def getVertexWeights(): sbs = [] meshSkinCluster = None # get all selected vetices in order cmds.ConvertSelectionToVertices() verts = cmds.ls(flatten = True, orderedSelection = True) cmds.polyEvaluate( v=True) # check is any vertex if len(verts) == 0: return cmds.error( "Please select vetices with skin weighs" ) else: obj = cmds.ls(verts[0], objectsOnly = True) history = cmds.listHistory(obj) #get mesh skin cluster for historyNode in history: if cmds.nodeType(historyNode)=="skinCluster": meshSkinCluster = historyNode #get joint list for each in verts: #get weight values skinVals = cmds.skinPercent(meshSkinCluster, each, query=True, value=True) for v in skinVals: if( len(str(v)) >= 5 ): sbs.append(each) break r = len(sbs) if r>0: cmds.confirmDialog( title='PointCheck', message='Select bad point:'+str(r), button=['OK'], defaultButton='OK' ) cmds.select(sbs) else: cmds.confirmDialog( title='PointCheck', message='No bad point!', button=['OK'], defaultButton='OK' )
def redoIt(self): """ redo it """ cmds.undoInfo(openChunk=True) try: cmds.ConvertSelectionToEdgePerimeter() cmds.ConvertSelectionToVertices() # List of pm vertex object vtxInOrder = self.getVerticesInOrder() pm.select(vtxInOrder, r=True) m_sel = OpenMaya.MSelectionList() OpenMaya.MGlobal.getActiveSelectionList(m_sel) dagPath = OpenMaya.MDagPath() components = OpenMaya.MObject() m_sel.getDagPath(0, dagPath, components) v_iter = OpenMaya.MItMeshVertex(dagPath, components) self.CENTER = self.getCenter(v_iter) fnMesh = OpenMaya.MFnMesh(dagPath) normalVector = self.getClosestNormal(self.CENTER, fnMesh) firstPoint = OpenMaya.MPoint( vtxInOrder[0].getPosition(space='world').x, vtxInOrder[0].getPosition(space='world').y, vtxInOrder[0].getPosition(space='world').z) firstVector = firstPoint - self.CENTER # Scale circle firstVector = firstVector * self.MULTIPLY numOfVertices = len(vtxInOrder) baseDegree = 360.0 / numOfVertices degree = 0.0 + self.ROTATION for i in vtxInOrder: nextVector = self.rotateVector( degree, firstVector, normalVector) if self.INVERTED is True: degree += -baseDegree else: degree += baseDegree self.setPoint(i, nextVector, normalVector, fnMesh) except: pass finally: cmds.undoInfo(closeChunk=True)
def rebind(self): components = self.components_to_rebind.text().split() faces = self.target_faces.text().split() wrap_node = self.cvwrap_combo.currentText() radius = self.sample_radius.value() # Make sure the faces are actual faces. If they are not, convert to faces. cmds.select(faces) cmds.ConvertSelectionToFaces() faces = cmds.ls(sl=True) cmds.select(components) cmds.ConvertSelectionToVertices() cmds.select(faces, add=True) cmds.cvWrap(rb=wrap_node, radius=radius) print 'Rebounded vertices'
def fixEdgeLength(edge, targetLength): ''' Single edge length correction calculus ''' cmds.select(edge) sel = cmds.ls(sl=True, fl=True) cmds.ConvertSelectionToVertices() p = cmds.xform(sel, q=True, t=True, ws=True) length = math.sqrt( math.pow(p[0] - p[3], 2) + math.pow(p[1] - p[4], 2) + math.pow(p[2] - p[5], 2)) cmds.select(sel) scaleLength = ((targetLength * 100) / length) / 100 cmds.polyMoveEdge(sel, localScaleX=scaleLength) print 'Previous Edge Length=' + str(length) + "\tTarget length=" + str( targetLength) + "\tScaled " + str(scaleLength),
def setAverageWeightFn(self): try: cmds.undoInfo(openChunk=True) if not self.avgOptionCHK.isChecked(): mel.eval('weightHammerVerts;') else: sel = cmds.ls(sl=1) cmds.ConvertSelectionToVertices() newSel = cmds.ls(sl=1, flatten=1) for vert in newSel: self.setAverageWeight(vert) self.clampInfluences(self.currentMesh, self.clampInfSPIN.value(), force=1) cmds.select(sel) except Exception as e: cmds.error('skinWrangler: ' + str(e)) finally: cmds.undoInfo(closeChunk=True)
def doIt(): cmds.ConvertSelectionToVertices() lsres = ls( sl = True ) target = [] for vtxs in lsres: for v in vtxs: minA = None minIndex = None ed = v.connectedEdges() if( ed.count() != 5 ): continue for index in range( ed.count() ): ed.setIndex(index) c = ed.currentItem() cv = getVec(c,v) se = getSideEdge( c, v ) if( len( se ) != 2 ): continue pv = getVec(se[0],v) nv = getVec(se[1],v) a0 = acos( dot( cv, pv ) ) a1 = acos( dot( cv, nv ) ) a2 = acos( dot( pv, nv ) ) acc = a0 + a1 if( minA is None or minA > acc ): minA = acc minIndex = index if( minIndex is not None ): ed.setIndex( minIndex ) target.append( ed.currentItem() ) selectType( eg = True ) select( cl = True ) select( target, r = True )
def spherify(radius=10): def distance(p1, p2): return math.sqrt(((p1[0] - p2[0])**2) + ((p1[1] - p2[1])**2) + ((p1[2] - p2[2])**2)) def normalize(v): length = math.sqrt(v[0]**2 + v[1]**2 + v[2]**2) return [v[0] / length, v[1] / length, v[2] / length] selected = cmds.ls(sl=1, fl=1) #get some vertices to work with cmds.ConvertSelectionToVertices() vertices = cmds.ls(sl=1, fl=1) #find centroid centroid = [0, 0, 0] for i in range(0, len(vertices)): p = vertices[i] pos = cmds.pointPosition(vertices[i]) centroid[0] += pos[0] centroid[1] += pos[1] centroid[2] += pos[2] centroid[0] /= len(vertices) centroid[1] /= len(vertices) centroid[2] /= len(vertices) #move the vertices for v in vertices: pos = cmds.pointPosition(v) diff = normalize( [pos[0] - centroid[0], pos[1] - centroid[1], pos[2] - centroid[2]]) dist = distance(centroid, pos) pos = [ centroid[0] + diff[0] * radius, centroid[1] + diff[1] * radius, centroid[2] + diff[2] * radius ] cmds.select(v, r=1) cmds.move(pos[0], pos[1], pos[2]) cmds.select(selected, r=1)
def setHigh(*args): print "Set high."; global high,high_uv global high_text; high=[]; selected = cmds.ls(sl=True,long=True) or [] count = len(selected) if count<=0: print "null select."; cmds.text(high_text,l="High not set",edit=True) return; elif count==1: print "Set high ",selected[0]; cmds.text(high_text,l=selected[0],edit=True) else: cmds.text(high_text,l=len+" selected.",edit=True) cmds.ConvertSelectionToVertices() for i in cmds.filterExpand( sm=31 ): high.append(cmds.xform(i,ws=True,q=True,t=True)) #get highuv high_uv = getUVs() return;
import pymel.core as pm import maya.cmds as cmds cmds.hyperShade(o="lambert1") cmds.ConvertSelectionToVertices() #shrink selected region to avoid border verticies cmds.ShrinkPolygonSelectionRegion() #list selected verticies, sl for selected, fl for ungrouped print pm.ls(sl=True, fl=True, l=True)
def storeSide(sideAB, *args): cmds.ConvertSelectionToVertices() allSideVerts = cmds.ls(sl=True, fl=True) smartBridgeDict[sideAB]['all_verts'] = allSideVerts print(sideAB) print(smartBridgeDict[sideAB]['all_verts'])
def selVert(*args): cmds.ConvertSelectionToVertices()
def AlgPosition(): getSl = cmds.radioButtonGrp('AlignRadio', q=True, sl=True) sel = cmds.ls(sl=True, fl=True) if len(cmds.ls(sl=True)) > 1: if getSl == 1: posX_list = [] posY_list = [] posZ_list = [] if cmds.objectType( cmds.ls(sl=True)[0]) == 'transform' or cmds.objectType( cmds.ls(sl=True)[0]) == 'joint': Obj_List = cmds.ls(sl=True) for index in range(len(Obj_List) - 1): getPos = cmds.xform(Obj_List[index], q=True, ws=True, sp=True) posX_list.append(getPos[0]) posY_list.append(getPos[1]) posZ_list.append(getPos[2]) sortX = (max(posX_list) + min(posX_list)) / 2 sortY = (max(posY_list) + min(posY_list)) / 2 sortZ = (max(posZ_list) + min(posZ_list)) / 2 sortPos = (sortX, sortY, sortZ) cmds.xform(Obj_List[-1], ws=True, t=(sortX, sortY, sortZ)) if cmds.objectType(cmds.ls(sl=True)[0]) == 'mesh': objects = [] selObj = cmds.ls(sl=True, fl=True) for obj2 in selObj: if cmds.objectType( obj2) != 'transform' and cmds.objectType( obj2) != 'joint': objects.append(obj2) cmds.select(objects, r=True) cmds.ConvertSelectionToVertices() vtxList = cmds.ls(sl=True, fl=True) for index in vtxList: getPos = cmds.pointPosition(index, w=True) posX_list.append(getPos[0]) posY_list.append(getPos[1]) posZ_list.append(getPos[2]) sortX = (max(posX_list) + min(posX_list)) / 2 sortY = (max(posY_list) + min(posY_list)) / 2 sortZ = (max(posZ_list) + min(posZ_list)) / 2 sortPos = (sortX, sortY, sortZ) cmds.xform(selObj[-1], ws=True, t=(sortX, sortY, sortZ)) if cmds.objectType( cmds.ls(sl=True)[0]) == 'nurbsCurve' or cmds.objectType( cmds.ls(sl=True)[0]) == 'nurbsSurface': objects = [] selObj = cmds.ls(sl=True, fl=True) for obj2 in selObj: if cmds.objectType( obj2) != 'transform' and cmds.objectType( obj2) != 'joint': objects.append(obj2) cmds.select(objects, r=True) vtxList = cmds.ls(sl=True, fl=True) for index in vtxList: getPos = cmds.pointPosition(index, w=True) posX_list.append(getPos[0]) posY_list.append(getPos[1]) posZ_list.append(getPos[2]) sortX = (max(posX_list) + min(posX_list)) / 2 sortY = (max(posY_list) + min(posY_list)) / 2 sortZ = (max(posZ_list) + min(posZ_list)) / 2 sortPos = (sortX, sortY, sortZ) cmds.xform(selObj[-1], ws=True, t=(sortX, sortY, sortZ)) cmds.select(sel) if len(sel) == 2: if cmds.objectType( cmds.ls(sl=True)[0]) == 'transform' or cmds.objectType( cmds.ls(sl=True)[0]) == 'joint': cmds.xform(sel[1], ws=True, ro=cmds.xform(sel[0], q=True, ws=True, ro=True)) cmds.select(cl=True) if getSl == 2: posX_list = [] posY_list = [] posZ_list = [] if cmds.objectType( cmds.ls(sl=True)[0]) == 'transform' or cmds.objectType( cmds.ls(sl=True)[0]) == 'joint': Obj_List = cmds.ls(sl=True) for index in range(len(Obj_List) - 1): getPos = cmds.xform(Obj_List[index], q=True, ws=True, sp=True) posX_list.append(getPos[0]) posY_list.append(getPos[1]) posZ_list.append(getPos[2]) sortX = (max(posX_list) + min(posX_list)) / 2 sortY = (max(posY_list) + min(posY_list)) / 2 sortZ = (max(posZ_list) + min(posZ_list)) / 2 sortPos = (sortX, sortY, sortZ) cmds.xform(Obj_List[-1], ws=True, t=(sortX, sortY, sortZ)) if cmds.objectType(cmds.ls(sl=True)[0]) == 'mesh': objects = [] selObj = cmds.ls(sl=True, fl=True) for obj2 in selObj: if cmds.objectType( obj2) != 'transform' and cmds.objectType( obj2) != 'joint': objects.append(obj2) cmds.select(objects, r=True) cmds.ConvertSelectionToVertices() vtxList = cmds.ls(sl=True, fl=True) for index in vtxList: getPos = cmds.pointPosition(index, w=True) posX_list.append(getPos[0]) posY_list.append(getPos[1]) posZ_list.append(getPos[2]) sortX = (max(posX_list) + min(posX_list)) / 2 sortY = (max(posY_list) + min(posY_list)) / 2 sortZ = (max(posZ_list) + min(posZ_list)) / 2 sortPos = (sortX, sortY, sortZ) cmds.xform(selObj[-1], ws=True, t=(sortX, sortY, sortZ)) if cmds.objectType( cmds.ls(sl=True)[0]) == 'nurbsCurve' or cmds.objectType( cmds.ls(sl=True)[0]) == 'nurbsSurface': objects = [] selObj = cmds.ls(sl=True, fl=True) for obj2 in selObj: if cmds.objectType( obj2) != 'transform' and cmds.objectType( obj2) != 'joint': objects.append(obj2) cmds.select(objects, r=True) vtxList = cmds.ls(sl=True, fl=True) for index in vtxList: getPos = cmds.pointPosition(index, w=True) posX_list.append(getPos[0]) posY_list.append(getPos[1]) posZ_list.append(getPos[2]) sortX = (max(posX_list) + min(posX_list)) / 2 sortY = (max(posY_list) + min(posY_list)) / 2 sortZ = (max(posZ_list) + min(posZ_list)) / 2 sortPos = (sortX, sortY, sortZ) cmds.xform(selObj[-1], ws=True, t=(sortX, sortY, sortZ)) cmds.select(cl=True) if getSl == 3: sel = cmds.ls(sl=True, fl=True) if cmds.selectType(pf=True, q=True) == True and len(sel) == 2: getNormal = cmds.polyInfo(fn=True) normal = (float(getNormal[0].split(':')[1].split(' ')[1]), float(getNormal[0].split(':')[1].split(' ')[2]), float(getNormal[0].split(':')[1].split(' ')[3])) M_Vec = api.MVector(normal) target_Vec = api.MVector(0, 0, 1) getRot = M_Vec.rotateTo(target_Vec) MQuaternion = api.MQuaternion(getRot) getConjugate = MQuaternion.conjugate() MEulerRotation = api.MQuaternion(normal[0], normal[1], normal[2], 0) msel = api.MSelectionList() msel.add(sel[1]) dagPath = msel.getDagPath(0) mfnTransform = api.MFnTransform(dagPath) M_Vec = api.MVector(normal) target_Vec = api.MVector(0, 0, 1) getRot = M_Vec.rotateTo(target_Vec) MQuaternion = api.MQuaternion(getRot) getConjugate = MQuaternion.conjugate() mfnTransform.setRotation(getConjugate, api.MSpace.kObject) if len(sel) == 2: if cmds.objectType( cmds.ls(sl=True)[0]) == 'transform' or cmds.objectType( cmds.ls(sl=True)[0]) == 'joint': cmds.xform(sel[1], ws=True, ro=cmds.xform(sel[0], q=True, ws=True, ro=True)) cmds.select(cl=True) cmds.select(sel[-1])
def heyWitch_addChopShader(self, meshKey, meshObj, *args): if meshObj.set_label == "": chpClrSetTextFld = self.heyWitch_makeChopSetWin() if chpClrSetTextFld != "cancelset": greenlight = True meshObj.set_label = chpClrSetTextFld else: greenlight = True chpClrSetTextFld = meshObj.set_label if greenlight == True: chpShdrLabelPrompt = cmds.promptDialog( message=("Enter Label for Chop Shader"), button=['OK', 'Cancel'], defaultButton='OK', cancelButton='Cancel', dismissString='Cancel') if chpShdrLabelPrompt == 'OK': chpShdrTextFld = cmds.promptDialog(query=True, text=True) if chpShdrTextFld == "": randomNo = random.randint(100, 999) chpShdrTextFld = str(randomNo) selPoly = cmds.ls(sl=True, fl=True) chopShaderDict = deepcopy(meshObj.all_shaders) mtlName = 'btw_' + chpClrSetTextFld + '_' + chpShdrTextFld + "_geoChp_Mtl" randRed = random.uniform(0.0, 1.0) randGreen = random.uniform(0.0, 1.0) randBlue = random.uniform(0.0, 1.0) # cmds.shadingNode('lambert', asShader=True, name=mtlName) # cmds.setAttr((mtlName + ".color"), randRed, randGreen, randBlue, type='double3') cmds.select(selPoly) # cmds.hyperShade(a=mtlName) cmds.ConvertSelectionToVertices() pm.mel.polyColorPerVertex(a=1, cdo=1, rgb=(randRed, randGreen, randBlue)) # cmds.HypershadeSelectObjectsWithMaterials() vertsSelected = cmds.ls(sl=True, fl=True) tempVertBook = {} sel_add_command_string = "cmds.select(" arg_count = 0 for x in vertsSelected: tempVertBook[x] = 0 if arg_count <= 250: temp_scs = sel_add_command_string + '"' + x + '", ' sel_add_command_string = temp_scs arg_count += 1 else: temp_scs = sel_add_command_string + 'add=True)\ncmds.select(' sel_add_command_string = temp_scs + '"' + x + '", ' arg_count = 0 temp_scs = sel_add_command_string + 'add=True)' sel_add_command_string = temp_scs single_sel_command_string = 'cmds.select(clear=True)\n' + sel_add_command_string chopShader = ChopShader() chopShader.vert_vals = deepcopy(tempVertBook) chopShader.set_label = chpClrSetTextFld chopShader.red = randRed chopShader.green = randGreen chopShader.blue = randBlue chopShader.short_name = chpShdrTextFld chopShader.single_sel_command = single_sel_command_string chopShader.add_to_sel_command = sel_add_command_string chopShaderDict[mtlName] = chopShader meshObj.all_shaders = deepcopy(chopShaderDict) cmds.select(meshKey) pm.mel.dR_DoCmd("modePoly")
def heyWitch_geoChopRandomColourSet(self, utlWkshpLabel, *args): chpClrSetTextFld = self.heyWitch_makeChopSetWin() if chpClrSetTextFld != "cancelset": choppedBits = cmds.ls(sl=True, type='transform') chopShaderDict = {} for x in choppedBits: mtlName = 'btw_' + chpClrSetTextFld + '_' + x + "_Mtl" randRed = random.uniform(0.0, 1.0) randGreen = random.uniform(0.0, 1.0) randBlue = random.uniform(0.0, 1.0) cmds.shadingNode('lambert', asShader=True, name=mtlName) cmds.setAttr((mtlName + ".color"), randRed, randGreen, randBlue, type='double3') cmds.select(x) cmds.hyperShade(a=mtlName) cmds.ConvertSelectionToVertices() pm.mel.polyColorPerVertex(a=1, cdo=1, rgb=(randRed, randGreen, randBlue)) chopShader = ChopShader() chopShader.set_label = chpClrSetTextFld chopShader.red = randRed chopShader.green = randGreen chopShader.blue = randBlue chopShader.short_name = x chopShaderDict[mtlName] = chopShader cmds.select(clear=True) for y in choppedBits: cmds.select(y, add=True) cmds.CombinePolygons() cmds.PolyMerge() newChopMeshName = 'chpMsh_' + chpClrSetTextFld newChopMeshSel = cmds.ls(sl=True, type='transform') cmds.rename(newChopMeshSel[0], newChopMeshName) self.helper.heyWitch_blankSlate(newChopMeshName) chopMesh = ChopMesh() chopMesh.set_label = chpClrSetTextFld chopMesh.all_shaders = deepcopy(chopShaderDict) for k0, v0 in chopMesh.all_shaders.items(): tempVertBook = {} cmds.select(k0) cmds.HypershadeSelectObjectsWithMaterials() cmds.ConvertSelectionToVertices() vertsSelected = cmds.ls(sl=True, fl=True) cmds.delete(k0) for x in vertsSelected: tempVertBook[x] = 0 v0.vert_vals = deepcopy(tempVertBook) for chopShader in chopMesh.all_shaders.values(): sel_add_command_string = "cmds.select(" arg_count = 0 for vtx in chopShader.vert_vals.keys(): if arg_count <= 250: temp_scs = sel_add_command_string + '"' + vtx + '", ' sel_add_command_string = temp_scs arg_count += 1 else: temp_scs = sel_add_command_string + 'add=True)\ncmds.select(' sel_add_command_string = temp_scs + '"' + vtx + '", ' arg_count = 0 temp_scs = sel_add_command_string + 'add=True)' sel_add_command_string = temp_scs single_sel_command_string = 'cmds.select(clear=True)\n' + sel_add_command_string chopShader.single_sel_command = single_sel_command_string chopShader.add_to_sel_command = sel_add_command_string cmds.select(clear=True) chopMesh.utl_wkshp_label = utlWkshpLabel cmds.parent(newChopMeshName, utlWkshpLabel + '_grp') storageSearch = ['spawnStorage', 'targetStorage'] for storage in storageSearch: for v1 in self.global_work_space[storage].values(): if storage == 'spawnStorage': if chopMesh.utl_wkshp_label in v1.mesh_skinning_workspace.utility_nest: chopMesh.mesh_spawn_name = v1.mesh_spawn_name else: if chopMesh.utl_wkshp_label in v1.utility_nest: chopMesh.mesh_spawn_name = v1.mesh_spawn_name self.global_work_space['chopMeshStorage'][ newChopMeshName] = chopMesh tree_layout = self.global_work_space['miscData']['switch_layouts'][ 'msw_tree_layout'] cmds.treeView(tree_layout, edit=True, addItem=(newChopMeshName, chopMesh.utl_wkshp_label), cs=True) cmds.treeView(tree_layout, edit=True, selectItem=(newChopMeshName, True)) cmds.shadingNode('lambert', asShader=True, name='btw_chop_Mtl') cmds.select(newChopMeshName) cmds.hyperShade(a='btw_chop_Mtl') pm.mel.dR_DoCmd("modeObject")
def makeHolebyGeo(): cmds.polyPoke() cmds.ConvertSelectionToVertices() cmds.ShrinkPolygonSelectionRegion() maya.mel.eval("polyChamferVtx 1 0.25 0;")