我的 MaxScript 工具要求场景对象的类型为 editable_mesh 或 editable_poly,并根据对象类型启用和禁用 GUI 控件。
当用户更改所选对象时,使用#selectionSetChanged
回调我可以成功更新我的推出更新,但如果他们转换一个对象,他们将被迫取消选择它并再次选择它以对其进行操作。
我应该为 callbacks.addscript 提供什么回调类型名称,以便在用户更改/转换对象的类型/类时调用它?
我的 MaxScript 工具要求场景对象的类型为 editable_mesh 或 editable_poly,并根据对象类型启用和禁用 GUI 控件。
当用户更改所选对象时,使用#selectionSetChanged
回调我可以成功更新我的推出更新,但如果他们转换一个对象,他们将被迫取消选择它并再次选择它以对其进行操作。
我应该为 callbacks.addscript 提供什么回调类型名称,以便在用户更改/转换对象的类型/类时调用它?
通过调用 NodeEventCallback使用节点事件系统modelstructured
并将我的函数提供给属性。
这会在标准事件回调系统上运行一个层,并具有许多新事件,但它仅适用于 3ds Max 2009 及更高版本。
我知道没有这样的回调事件,甚至没有一个 when 构造在这里工作。实现这一点的一种方法是在推出时使用计时器,并在每次滴答时检查所选对象的类/超类,但我不确定它实际上是否首先需要。
如果您想警告用户该对象需要转换,有很多方法可以在他的合作下完成,例如在选择时弹出一个查询框,上面会说“单击的对象不是可编辑网格。将其转换为一?” 或带有选项的自定义查询框Convert to Editable Poly/Convert to Editable Mesh/Discard。
或者甚至是老式的方式,默认情况下禁用所有有问题的控件,只启用一个大的 Pick Node 拾取按钮。那将提供一个过滤器功能,只允许您选择可编辑的节点。