【发布时间】:2020-04-08 02:26:40
【问题描述】:
来自 Autodesk 3DS MAX 文档的引用:
当您使用类似 'fn test val = ..." 时,MAXScriptFunction 值被创建并存储在变量 test 中。如果变量测试是 传递给另一个方法,例如作为过滤器函数, 方法将测试值的类以确保它是 MAXScriptFunction 然后使用 apply() 调用它。
我的问题: 3DS MAX 中的函数存储在变量中,就像任何其他值一样。您可以将它们存储在数组中,将它们传递给其他函数,对任何其他值执行任何操作。所以问题是:有没有办法从函数变量中获取函数期望的参数列表?
这里有一个小解释,解释我为什么要问这个问题。
假设我有一个存储在结构中的大型函数库。例如,其中一个结构称为“ModelingTools”
Struct ModelingTools
(
fn tool1 arg1 agr2 arg3 = (...),
fn tool2 arg1 agr2 arg3 = (...),
...
)
ModelingTools = ModelingTools() --make an istance of the struct in global scope
然后我想在其他脚本中使用这些函数。我这样写:
ModelingTools.tool1 arg1 arg2 arg3
如果其中已经有大量的结构和大量的函数怎么办?内置编辑器没有像 Visual Studio 或 QT 这样的自动完成功能。所以我决定发明自己的自行车。令人高兴的是,MAXScript 有一个内置方法来列出 MAX 中所有已注册的全局值:globalVars.gather()。对于结构定义,它的事件会打印其所有成员。我对此几乎感到满意:现在我可以快速搜索所有已注册的 MAX 结构,在列表视图中单击其中一个并列出其所有成员函数,快速将所需的函数调用复制粘贴到我的代码中。
唯一的问题是参数。我怎么知道我需要为特定函数提供哪些参数?
【问题讨论】: