Checkbox 取消选中其他复选框的复选框–;玛雅·梅尔

Checkbox 取消选中其他复选框的复选框–;玛雅·梅尔,checkbox,maya,mel,Checkbox,Maya,Mel,我最近刚开始学习MEL脚本,我几乎没有掌握基础知识。但现在,我可以编写自己的脚本,在Maya 2015中显示/隐藏对象。我现在面临的问题是,我需要一个主复选框来选中/取消选中其他复选框。我现在使用的方法只允许我更改一个子复选框,而不能更改其余复选框 ETC-None复选框处于启用状态。所有其他子项复选框均处于关闭状态无复选框为关闭。所有其他子项均打开。现在,我可以通过主None复选框使一个children复选框在on和off之间切换 这是我的密码: checkBox -label "None"

我最近刚开始学习MEL脚本,我几乎没有掌握基础知识。但现在,我可以编写自己的脚本,在Maya 2015中显示/隐藏对象。我现在面临的问题是,我需要一个主复选框来选中/取消选中其他复选框。我现在使用的方法只允许我更改一个子复选框,而不能更改其余复选框

ETC-
None
复选框处于启用状态。所有其他子项复选框均处于关闭状态<代码>无复选框为
关闭
。所有其他子项均
打开
。现在,我可以通过主
None
复选框使一个children复选框在
on
off
之间切换

这是我的密码:

checkBox -label "None" -align "center" -v false -onCommand "OnNoneProcedure" -offCommand "offNoneProcedure" -changeCommand "checkBox -edit -value (!#1) checkboxNurbsCurves";
checkBox -label "NurbsCurves" -align "center" -v true -onCommand "OnNurbsCurvesProcedure" -offCommand "offNurbsCurvesProcedure" checkboxNurbsCurves;

我使用
changecommand
方法是否正确?如果是,如何使“其他子项”复选框处于打开和关闭状态?或者我要查询主
None
复选框-v,然后使用
None
的-v切换子复选框的-v?

最简单的方法可能是创建一个过程,将所有想要的复选框设置为所需状态,然后将该过程指定为change命令


为了使其正常工作,您可能需要命名复选框和/或将它们存储到某个字符串数组变量中,您可以在过程中循环设置这些变量。。。幸运的是,这真的很容易,因为checkbox命令返回它创建的复选框的全名。

好的,我让它工作了!哈哈,我的朋友指导我走完最后一步。基本上这就是它的工作原理;1) 查询当前面板状态2)获取结果并传递到数组3)将返回的数组中的结果用于另一个过程到新数组4)如果0=关闭该元素,如果1=打开该元素,则每个结果返回此新结果5)使用新结果创建工具架按钮(结果=命令)

谢谢你的沉默;我认为这样做是有道理的。但是我的一个朋友建议我不要将-on/off命令与changecommand一起使用。不是一个就是另一个。而且,他教我用另一种方法来做,用“toggleon”编辑“children”复选框的值。是的,哈哈,谢谢你的提示!是的,checkbox命令的maya文档甚至说只使用
changeCommand
onCommand
/
offCommand
,而不是两者都使用。通常,当我创建ui时,我不使用复选框命令-我倾向于将它们用作各种选项的切换,并在单击“执行按钮”时查询它们-即:设置一些t/F设置,然后在运行实际代码时使用它们,而不是让每个复选框运行一些代码。对不起,我以前没有注意到…我在checkbox命令docs中没有看到
toggleon
。。。也许是隐藏的还是过时的?我认为
标志是用来在进程中设置选中/未选中状态的标志,但是如果所有复选框在切换时都运行某个命令,它们可能都会被触发;然而,如果它唯一能做的就是打开/关闭任何“儿童”复选框,那么你可能会侥幸逃脱。是的,我在复选框文档中也找不到切换。有很多“隐藏”命令不是帮助文档lol附带的。让我与您分享执行该技巧的代码。proc int onnonetokle(int$t){checkBox-edit-value(!$t)checkboxNurbCurves;checkBox-edit-value(!$t)checkboxNurbsSurfaces;checkBox-edit-value(!$t)checkboxNurbsCVs;//声明一个过程以查找具有焦点的当前面板并隐藏所有内容proc OnNoneProcedure(){//查找具有焦点的当前面板$result=`getPanel-wf`;//隐藏当前面板中的所有对象{modelEditor-e-allObjects 0$result;}OnNoneToggle(1);//打印结果{打印(“隐藏的所有对象!\n”);};