Maya MEL脚本读取intField值与按钮重复触发问题咨询
问题1 读取intField输入值的实现方法
MEL中获取UI控件参数需要先给控件分配唯一标识,再通过查询指令取值,具体修改逻辑:
- 创建intField时指定控件名,示例:
intField -minValue 0 rail_segment_count; - 触发按钮命令时,通过
intField -query -value 控件名即可读取当前输入的整数值
问题2 避免按钮多次触发的修改方法
Maya按钮默认开启了长按重复执行的特性,你遇到的多次触发就是该特性导致的,创建按钮时添加-repeatHold false参数即可关闭该功能,单次按压仅执行一次命令。
修改后的完整代码
/*** 自动铁路生成与绑定工具 ***/ // 该脚本用于生成可编辑位置、形变的低模铁路绑定资源 // 相关变量:枕木数量 int $numSegments = 0; // 实际生成铁路的主逻辑过程 // 注意:该过程尚未完成,当前仅先完成窗口逻辑调试 global proc makeRails(int $segments) { // 输入段数为0时直接返回不执行 if ( $segments == 0) return; // 主逻辑代码(当前为测试用例) CreatePolygonCube; polyCube -w 1 -h 1 -d 1 -sx 1 -sy 1 -sz 1 -ax 0 1 0 -cuv 4 -ch 1; return; } // 弹出参数设置窗口的过程 global proc jh_makeRail() { // 窗口已存在时先删除旧窗口 if (`window -q -ex jh_makeRail`) deleteUI jh_makeRail; // 主窗口定义 window -topEdge 30 -title "生成低模铁路段" -mxb false -s true -rtf false -mb false -mbv false -w 300 -h 440 jh_makeRail; // 窗口布局 columnLayout -adjustableColumn true; separator -w 240 -h 20; text -label "低模铁路段自动绑定生成工具"; separator -w 240 -h 25; text -label "铁路段长度(按枕木数量计算):"; // 给intField指定唯一名称,方便后续查询取值 intField -minValue 0 rail_segment_count; separator -w 240 -h 20; // 按钮添加repeatHold false关闭重复触发,命令改为读取intField的值传入主逻辑 button -label "生成铁路" -repeatHold false -c "makeRails `intField -q -v rail_segment_count`"; window -e -w 300 -h 500 jh_makeRail; showWindow jh_makeRail; } // 脚本入口 jh_makeRail;
内容的提问来源于stack exchange,提问作者Globin347
相关产品推荐
相关产品推荐

