Compiler errors Maxscript错误:组需要节点或节点集合

Compiler errors Maxscript错误:组需要节点或节点集合,compiler-errors,maxscript,Compiler Errors,Maxscript,我已经在Maxscript中工作了大约3个月了,所以我是个新手,最近我发现了在ms文件中执行字符串的能力,如下所示: str = "print \"hello\"" execute str 然后,Max侦听器将输出“hello”,正如您所期望的那样。我试图使用此功能创建一个动态卷展栏,为场景中链接到RailClone对象的每个参数创建一个按钮。RailClone对象对于这个问题并不重要,所以我很确定您不需要了解任何有关它的信息来帮助解决这个问题 无论如何,这是我的代码: --creat

我已经在Maxscript中工作了大约3个月了,所以我是个新手,最近我发现了在ms文件中执行字符串的能力,如下所示:

str = "print \"hello\""
execute str
然后,Max侦听器将输出“hello”,正如您所期望的那样。我试图使用此功能创建一个动态卷展栏,为场景中链接到RailClone对象的每个参数创建一个按钮。RailClone对象对于这个问题并不重要,所以我很确定您不需要了解任何有关它的信息来帮助解决这个问题

无论如何,这是我的代码:

    --create an array of button names
    btn_names = for p in obj.paname collect ("btn_" + p as string)
    str = "group \"Custom Parameters\" \n(\n"
    print btn_names
    for p in 1 to btn_names.count do
    (
        str += "button " + btn_names[p] + "\n"
        str += "on " + btn_names[p] + " pressed do\n"
        str += "try\n(\n" + "\tprint \"hello test\"\n"
        str += ")\n" + "catch(messageBox \"Script failed\")\n"
    )
    str += ")\n"
    str = "print \"hello\""
    print str
    execute str
第一行获取对象的所有参数,但它只是一个字符串数组。我的问题发生在执行行,输出为:

MAXScript卷展栏处理程序异常:
--运行时错误:group()需要一个节点或节点集合,得到:“Custom Parameters”这里有几个问题,首先是需要在卷展栏的范围内声明卷展栏控件。关键字表示该范围之外完全不同的内容(即创建一组节点的命令,这也是错误消息的原因)。您必须以这种方式创建完整的卷展栏(查看卷展栏创建者源代码–虽然它本身有很多问题,但没有必要重新发明轮子)。第二个可能长期困扰您的问题是,execute在全局范围内对提供的字符串求值,每个您不在全局范围内声明但希望访问的变量都需要从全局范围访问,并且任何新的非嵌套变量也会变为全局变量


无论如何,您可以随意使用这样的代码片段,其中生成的对话框非常简单,对于任何更动态的内容,请访问.NET表单。能够将控件集合作为对象使用使其更易于管理,但是.NET的冗长可能有点令人不快。

非常感谢您提供的信息丰富的答案。看起来,动态卷展将能够解决我的所有需求。这是一个巨大的解脱!