You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 04:18:05