<p>为了更好地理解类是如何调用和工作的,我一直在尝试使用一些函数,这些函数在我编写的一个简单脚本中为我工作,该脚本在maya的3D空间中将一个对象捕捉到另一个对象。你知道吗</p>
<p>当我将它们放入一个类中并尝试运行代码时,得到的错误消息是:</p>
<blockquote>
<p>Error: NameError: file line 10: global name 'runSelected' is not defined #</p>
</blockquote>
<p>我认为这可能是因为我调用的方法前面没有<code>self.</code>。我试过这样做,但仍然得到一个错误是:</p>
<blockquote>
<p>Error: NameError: file line 35: global name 'self' is
not defined #</p>
</blockquote>
<p>在maya中选择三维空间中的两个对象后,将运行该脚本,并通过运行以下命令启动该脚本:</p>
<p><code>Align()</code></p>
<p>该类的代码如下:</p>
<pre><code>#Class for snapping one object to another in Maya.
import maya.cmds as mc
class Align(object):
def __init__(self):
#starts the runSelected Method
self.runSelected()
def selectionCheck(mySel):
#checks that 2 ojects are created, returns True if so, Flase if not.
if len(mySel) == 2:
print "Great! Two selected"
return True
elif len(mySel) == 0:
print "Nothing Selected to constrain!"
return False
def createWindow():
#This creates a simple dialogue window that gives a message.
mc.confirmDialog(title='Align Objects', m ="Instructions: You need to select two objects to constrain.")
def runConstrainDelete(mySel):
#Creates a parent constraint, does not maintain offset and then deletes the constraint when object is moved.Clears selection.
myParentConstraint = mc.parentConstraint(mySel[0], mySel[1], mo=False)
mc.delete(myParentConstraint)
mc.select (clear=True)
def runSelected(object):
#Creates a list of objects selected. Runs selection check
mySel = mc.ls(sl =True)
result_Sel_Check = self.selectionCheck(mySel)
#if statement handles if a warning window or the rest of the script should be run.
if result_Sel_Check == False:
self.createWindow()
else:
self.runConstrainDelete(mySel)
test_Align = Align()
</code></pre>