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

MAYA 2020将几何ID赋值给aiUserDataInt默认值报类型转换错误如何解决

Maya 2020 MEL脚本问题解决

错误原因

你代码的核心逻辑错误有两处:

  • 循环变量调用错误:你通过for ($node in $Selected)遍历选中对象数组,每次循环拿到的单个几何体对象存储在$node变量中,但你赋值时直接调用数组本身$Selected.id,MEL无法识别字符串数组的属性调用,尝试强制转换数组为float类型失败,因此触发了你遇到的报错:

// Error: Line 2.37: Cannot cast data of type string[] to float. //

  • 属性值获取方式错误:MEL中不能直接通过节点变量.属性名的方式拿到属性的实际值,需要用getAttr命令获取属性数值。

修复后的代码

场景1:仅给固定的aiUserDataInt1节点赋值,取第一个选中几何体的ID属性

string $Selected[] = `ls -selection`;
// 先判断是否有选中对象
if(size($Selected) > 0) {
    // 取第一个选中的几何体,获取它的ID属性值
    float $idValue = `getAttr ($Selected[0] + ".ID")`;
    // 赋值给aiUserDataInt1的default属性
    aiUserDataInt1.default = $idValue;
}

场景2:选中多个几何体,每个几何体对应创建一个aiUserDataInt节点并赋值ID

string $Selected[] = `ls -selection`;
for($node in $Selected) {
    // 先判断当前几何体是否存在ID属性
    if(`attributeExists "ID" $node`) {
        float $idValue = `getAttr ($node + ".ID")`;
        // 创建新的aiUserDataInt节点
        string $aiNode = `createNode "aiUserDataInt"`;
        // 赋值默认值
        setAttr ($aiNode + ".default") $idValue;
        // 可选:给节点重命名方便识别
        rename $aiNode ($node + "_aiUserDataID");
    }
}

注意事项

运行脚本前请确认你选中的几何体已经提前创建了名为ID的自定义属性,否则会触发属性不存在的报错。


内容的提问来源于stack exchange,提问作者Guillermo Vaca Núñez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 07:15:00