变量和maya命令 #getAttr #setAttr #xform #connectAttr #disconnectAttr

get attribute! 

set attribute!

xform!(可查询设置transform节点中任何参数)

connect attribute!

disconnect attribute!

#得到,设置,链接,断开属性

#getAttr & setAttr 

1)变量loc是新创建locator的transform节点。#如果打印loc变量,列表[0]是transform节点,[1]是shape节点。

2)设置变量sx,为得到locator的X轴向的缩放值。

3)修改变量sx,让sx值增加一倍。#变量可以改数值并覆盖的。

4)设置locatorX轴向的缩放值为现sx值。 

  #这一步若不知如何设置,可先手动调整一下locator的值,看mel是怎么改的。然后替换变量,加上字符串,即可。

  

  #注意!locator1.scaleX字符串中locator1要替换成变量。用+号串起来(不是用逗号,“.scale”中的"."不能掉!)

  #后面的空格用逗号隔开。见下面代码中的第5行

1 import maya.cmds as cmds
2 loc = cmds.spaceLocator()[0]
3 sx = cmds.getAttr(loc+'.scaleX')
4 sx = sx*2
5 cmds.setAttr(loc+'.scaleX', sx)

#xform (复合属性。不可编辑!)

## 查询。在上一步代码中,使用xform命令打印locator的平移(注意这里要查询!),使用的是translation!会得到列表[0.0, 0.0, 0.0]。

6 print cmds.xform(loc, query=True, translation=True)

## 新设置 translation值,注意值是列表!这里不用editor=True!

7 cmds.xform(loc, translation=[0,1,0])

##对比使用getAttr和setAttr查询并设置locator的平移。注意这里使用的是translate!会得到包含元组的列表[(0.0, 0.0, 0.0)]。设置值的时候,按照顺序指定值(x,y,z)

这里会看起来比较繁琐。没有xform命令看起来明了。

print cmds.getAttr(loc+'.translate')
cmds.setAttr(loc+'.translate',1,2,3)

#connectAttr & disconnectAttr &multiplyDivide

 链接属性、断开属性、乘除节点

1)打开新的场景,创建一个球体和立方体,并保存他们的transform节点。

2)创建属性链接,球体Y轴的移动,驱动立方体的Y轴旋转。选择球体(测试)。#select命令

3)断开上面两个属性的链接。

4)在两个属性之间创建一个multiplyDivide节点,使球体每移动1个单位,立方体旋转90°。#createNode命令

  

 1 import maya.cmds as cmds
 2 Sphere = cmds.polySphere()[0]
 3 Cube = cmds.polyCube()[0]
 4 
 5 cmds.connectAttr(Sphere+'.ty', Cube+'.ry')
 6 cmds.select(Sphere)
 7 
 8 cmds.disconnectAttr(Sphere+'.ty', Cube+'.ry')
 9 
10 mult = cmds.createNode('multiplyDivide')
11 cmds.connectAttr(Sphere+'.ty', mult+'.input1X')
12 cmds.setAttr(mult+'.input2X', 90)
13 cmds.connectAttr(mult+'.outputX', Cube+'.ry')
14 cmds.select(Sphere)
原文地址:https://www.cnblogs.com/3lina/p/10233020.html