Maya Python 中的 cmds.scriptCtx 究竟有什么作用?

slo*_*vik 4 python command maya

我想知道 cmds.scriptCtx 命令究竟是做什么的,因为我试图将它直接从 Autodesk 帮助页面复制并粘贴到我的脚本编辑器中,但没有任何反应。这是 Autodesk 帮助中的脚本:

import maya.cmds as cmds

cmds.scriptCtx( title='Attach Curve', totalSelectionSets=1, fcs="select -r $Selection1; performAttachCrv 0 \"\"", cumulativeLists=True, expandSelectionList=True, setNoSelectionPrompt='Select two curves close to the attachment points', setSelectionPrompt='Select a second curve close to the attachment point', setDoneSelectionPrompt='Never used because setAutoComplete is set', setAutoToggleSelection=True, setSelectionCount=2, setAutoComplete=True, curveParameterPoint=True )
Run Code Online (Sandbox Code Playgroud)

我尝试选择一条曲线和两条曲线,或者根本不选择任何东西,但什么也没发生。我错过了什么?

我正在为这个脚本使用 Maya 2018。

谢谢你们。

Gre*_*ell 5

我也一直想知道这个命令是什么,但我从未见过其他人使用它,所以最后总是忽略它。

不要因为没有得到它而感到难过,文档在解释示例的工作原理方面做得非常糟糕。我不得不四处寻找,发现它完全省略了您需要使用的cmds.setToolTo().

创建 2 条曲线,运行此命令,然后一次选择一条曲线:

import maya.cmds as cmds

picker = cmds.scriptCtx(
    title='Attach Curve', totalSelectionSets=1, fcs="select -r $Selection1; performAttachCrv 0 \"\"", 
    cumulativeLists=True, expandSelectionList=True, setNoSelectionPrompt='Select two curves close to the attachment points', 
    setSelectionPrompt='Select a second curve close to the attachment point', setDoneSelectionPrompt='Never used because setAutoComplete is set', 
    setAutoToggleSelection=True, setSelectionCount=2, setAutoComplete=True, curveParameterPoint=True
)


cmds.setToolTo(picker)
Run Code Online (Sandbox Code Playgroud)

所以基本上,它是一个对象选择器。当您运行它时,光标会发生变化并为用户显示说明。在这个例子中,它说选择 2 条曲线。当您选择一条曲线时,说明会更新为选择另一条曲线。当拾取另一条曲线时,将运行一个脚本来附加两条曲线。用户也可以esc随时点击取消。所有遮罩参数都在那里,以便您可以限制用户可以选择的对象类型。

来自 3dsMax 这实际上非常棒,但实现感觉很差。对于用户来说,这个选择器正在发生并不明显。说明无论如何都没有着色,而且很容易在 Maya 界面的底角遗漏。你也不能从大纲中挑选一个对象,这是一个非常糟糕的设计。据我所知,它只支持 MEL。

知道这很酷,但我仍然不认为我会使用它。