一般来说,我对python和脚本/编码还很陌生。在
我目前正在编写一个小脚本,用于根据对象的角度选择场景中对象的边。我有两个int字段供用户指定最小值和最大值。根据输入,我需要一个按钮来选择最小/最大范围内的所有边。
到目前为止,一切都正常,除了单击按钮时,不考虑最小/最大输入。Maya仅选择默认值为0的所有边,
而不是选择最小/最大范围内的所有边,我不知道为什么。在
据我所知,“selfedges”函数似乎是个问题。 “ab=”标志通常有两个整数值,如果我这样定义它:ab=(0,30),它可以工作,但我不希望它是硬编码的。我只是不知道如何将用户输入从两个内场传递到“selEdges”函数。在
这是我的剧本:
import maya.cmds as cmds
if cmds.window('myWindow', exists=True):
cmds.deleteUI('myWindow')
cmds.window('myWindow', title='myWindow', wh=[200, 100])
cmds.rowColumnLayout(numberOfColumns=2)
minNormalAngle = cmds.intField(minValue=0, maxValue=360)
minNA = cmds.intField(minNormalAngle, query=True, value=True)
maxNormalAngle = cmds.intField(minValue=0, maxValue=360)
maxNA = cmds.intField(maxNormalAngle, query=True, value=True)
def selEdges(*pArgs):
cmds.polySelectConstraint(m=3, a=True, w=2, ab=(minNA, maxNA))
cmds.polySelectConstraint(m=0)
def sofEdges(*pArgs):
cmds.polySoftEdge(a=180)
cmds.button(label='select', command=selEdges)
cmds.button(label='soften', command=sofEdges)
cmds.showWindow()
下面是一个屏幕截图,可以更好地理解maya中的UI。 !(http://abload.de/image.php?img=selscriptq9kcy.jpg)
编辑:
这就是我现在所拥有的:
^{pr2}$
通常情况下,您希望使用如下序列来执行此操作:
编写这个函数是个好主意,这样它就不会改变选择,因为很容易意外地取消选择值不好的对象。最低版本应该是这样的(注意它如何在最后重置选择)
您可以通过使用
^{pr2}$intFieldGrp
而不是两个intFields
来简化GUI。养成在函数中构建gui的习惯是个好主意,上面所写的代码可以在监听器中工作,但是如果从模块文件导入,它的行为会很奇怪。将东西放入函数中是一种控制变量范围的廉价方法,因此不难找出需要的回调函数在哪里。下面是一个非常简单的例子:您可以将
edges_by_angle()
函数与此分开,因为它在其他情况下可能很有用。在标志
a
、w
和ab
仅在顶点、边、面和纹理模式下可用。您需要在边缘模式下使用polySelectConstraint()
。在下面是您应该添加到脚本中的Python代码版本:
另请参见MEL等效物:
^{pr2}$相关问题 更多 >
编程相关推荐