簡體   English   中英

Autodesk Maya中的setAttr函數

[英]setAttr function in Autodesk Maya

我仍在Maya中學習Python。 我無法使代碼正常工作。 我正在嘗試創建一個定位器,並將其作為選擇的父項,然后將定位器變換歸零。

import maya.cmds as cmds

sel = cmds.ls(selection = True)
loc = cmds.spaceLocator()
cmds.parent(loc, sel)
cmds.setAttr(loc, "translateX", 0)

我總是收到以下錯誤消息:

#Error: TypeError: file <maya console> line 7: Invalid argument 1, '[u'locator6']'. Expected arguments of type ( list, )

有時,使用其他代碼,我會得到類似:

#There does not exist something with name 'translateX'

我知道,當我用locator的名稱替換loc時,它確實起作用,但是我嘗試使代碼盡可能地通用,並且不綁定到locator的名稱。

setAttr函數在Maya中如何使用變量工作? 瑪雅文檔和各種論壇上的其他問題都無濟於事...:/

setAttr一個完整的屬性作為其參數:

 cmds.setAtt( loc + ".translateX", 0)  

loc必須是單個字符串。 像大多數創建命令一樣, spaceLocator返回一個列表,而不是單個字符串。 所以整個事情是:

sel = cmds.ls(selection = True)
loc = cmds.spaceLocator()
cmds.parent(loc, sel)
cmds.setAttr(loc[0] + ".translateX", 0)

我知道您似乎正在詢問maya cmds,但我想以此作為替代。

在PyMel中,spaceLocator函數返回創建的對象本身。 然后,屬性是對象內部的方法,使您可以執行以下操作。 我愛PyMel的原因之一!

import pymel.core as pm

sel = pm.selected()[0]
loc = pm.spaceLocator()
pm.parent(loc, sel)
loc.translateX.set(0)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM