我告诉自己永远不要问common sense
或novice
问题,我是否可以在网上查找,并求助于人们作为最后的手段。这可能是一个基本问题,但请赐教我!
我的代码:
obj = pm.ls (selection=True,sn=True,o=True) # get selection = obj
shapes = pm.listRelatives(obj) # get obj shapeNode name
cpmNode = pm.createNode('closestPointOnMesh') # create
closestPointOnMesh Node
pm.setAttr(shapes+".outMesh",cpmNode + ".inMesh") # setattr selection
shapeNode to cpmNode inMesh
错误:
# Can only concatenate list (not "str") to list
我不明白pm.setAttr(shapes+".outMesh",cpmNode + ".inMesh")
如何列入清单。现在不是带字符串的命令吗?
将shapes
放入pm.setAttr(shapes+".outMesh",cpmNode + ".inMesh")
会给我一些.outmesh
是字符串的错误吗?
那么pm.setAttr(shapes+".outMesh",cpmNode + ".inMesh")
是一个列表吗?
如果给出示例(如下),我应如何使当前选择shapeNode更改为pCubeShape1
:
pm.setAttr("pCubeShape1.outMesh",cpmNode + ".inMesh")
答案 0 :(得分:0)
如您所料,cmds.listRelatives
返回一个列表,而不是字符串。这是因为变换可以包含多个形状。
此外,您无法使用setAttr
将形状的outMesh连接到实用程序的inMesh。相反,您需要使用connectAttr
。
试试这个:
import pymel.core as pm
obj = pm.ls (selection=True,sn=True,o=True)
shapes = pm.listRelatives(obj, shapes=True, ni=True, type="mesh") # Use flags to narrow down the proper shape.
cpmNode = pm.createNode('closestPointOnMesh')
pm.connectAttr(shapes[0]+".outMesh",cpmNode + ".inMesh") # Use the first item in the shapes list.