2017-12-04 9 views
0

私はウェブ上でルックアップして最後の手段として人々に頼ることができたらcommon senseまたはnoviceという質問をしないようにと言いました。これはおそらく根本的な質問ですが、私に教えてください!setattr( "example" .outmesh)に基づいて現在の選択で "example"を変更してください

マイコード:

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")がリストになっているかを理解していません。今は文字列のコマンドではありませんか?

pm.setAttr(shapes+".outMesh",cpmNode + ".inMesh")に入れると、.outmeshは文字列ですか?

pm.setAttr(shapes+".outMesh",cpmNode + ".inMesh")はリストですか?

にはどうすればいいの例(下記)与えられた場合には、私の現在の選択shapeNodeがpCubeShape1を変更することが行う必要があります

pm.setAttr("pCubeShape1.outMesh",cpmNode + ".inMesh") 
+0

'形状= pm.listRelatives(OBJ)'、おそらくリストを返します。そして '[] + 'any_string''は私にあなたと同じエラーを与えます。 – bla

+0

私はリストと文字列を一緒にすることはできません。私が理解していないのは、地獄がどこから来たのかです。私が理解しているところから、 '' 'shapes = pm.listRelatives(obj)' 'は文字列でなければなりません。私はこの文字列を '' 'pm.setAttr(shapes +"。outMesh "、cpmNode +" .inMesh ")に挿入しようとしています。" '' 'ここではntが間違っている場合のリストです。 –

+0

型(型)、型(cpmNode)を指定すると、オブジェクトが文字列かリストかどうかがわかります。 pdbモジュールを使用して、実行中のコードを試すこともできます。 – warcholprzemo

答えて

0

あなたが疑われるとして、リストではなく、文字列を返しますcmds.listRelatives。これは、トランスフォームに複数の図形を含めることができるためです。

また、シェイプのoutMeshをユーティリティのinMeshに接続するためにsetAttrを使用することはできません。代わりに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. 
+0

ありがとう@グリーンセル。これは私が探している解決策です! Attrの設定と接続には違いがあるようです。私はそれについてもっと勉強して、そして種の説明のために最も高く評価されます! XD –

+0

'setAttr'を1回の操作として考えると、' connectAttr'は再生中(2つのノード間の接続)に固執して計算するものになります。一般に接続エディタで行う必要がある場合は、 'connectAttr' –

関連する問題