字符串字面只使用“或”一行线形成。对于多行字符串你可以使用:“”” ....
所以,解决语法错误只是改变:
pci = cmds.createNode(""pointOnCurveInfo" , n = name)
要:
pci = cmds.createNode("pointOnCurveInfo" , n = name)
被提到的第二个错误,因为该功能getUParam没有在那一刻定义的,所以你必须在使用它之前定义此getUParam功能,如:
from maya import cmds , OpenMaya
def getUParam(pnt = [], crv = None):
point = OpenMaya.MPoint(pnt[0],pnt[1],pnt[2])
curveFn = OpenMaya.MFnNurbsCurve(getDagPath(crv))
paramUtill=OpenMaya.MScriptUtil()
paramPtr=paramUtill.asDoublePtr()
isOnCurve = curveFn.isPointOnCurve(point)
if isOnCurve == True:
curveFn.getParamAtPoint(point , paramPtr,0.001,OpenMaya.MSpace.kObject)
else :
point = curveFn.closestPoint(point,paramPtr,0.001,OpenMaya.MSpace.kObject)
curveFn.getParamAtPoint(point , paramPtr,0.001,OpenMaya.MSpace.kObject)
param = paramUtill.getDouble(paramPtr)
return param
def getDagPath(objectName):
if isinstance(objectName, list)==True:
oNodeList=[]
for o in objectName:
selectionList = OpenMaya.MSelectionList()
selectionList.add(o)
oNode = OpenMaya.MDagPath()
selectionList.getDagPath(0, oNode)
oNodeList.append(oNode)
return oNodeList
else:
selectionList = OpenMaya.MSelectionList()
selectionList.add(objectName)
oNode = OpenMaya.MDagPath()
selectionList.getDagPath(0, oNode)
return oNode
sel = cmds.ls(sl =1)
crv = "curveShape1"
for s in sel :
pos = cmds.xform(s ,q = 1 , ws = 1 , t = 1)
u = getUParam(pos , crv)
name = s.replace("_LOC" , "_PCI")
pci = cmds.createNode("pointOnCurveInfo" , n = name)
cmds.connectAttr(crv + '.worldSpace' , pci + '.inputCurve')
cmds.setAttr(pci + '.parameter' , u)
cmds.connectAttr(pci + '.position' , s + '.t')
希望它帮助,
是的你太多了,但我有一个新的错误。 #错误:第1行:NameError:文件<玛雅控制台>线7:名称 'getUParam' 没有定义# 这是整个脚本 #错误:第1行:NameError:文件<玛雅控制台>线7:名称'getUParam'未定义# –
tahnk你avenet,但我有这个新版本的脚本的新错误 “”“#错误:第1行:RuntimeError:文件S:\ Maya_2016_DI \ build \ Release \ runTime \ Python \ Lib \ site-packages \ maya \ OpenMaya.py行10923:(kInvalidParameter):Object does not exist#“” –
对不起@RaoufBessghaier,我不能再帮你了,因为这是一个与Maya有关的问题,请检查pnt list是可以的,如果你看不到任何可疑的东西,这次可以发布另外一个关于Maya的问题。如果我的回答对你有帮助,如果你能投票并标记这是正确的。谢谢。 – avenet