如何在脚本对象中获取自身节点?

How to get self node in a scripted object?

我正在用 maxscript 编写插件助手,需要获取作为对象的节点。听起来很简单吧?哈! "this" returns 插件 class 的实例,我认为.. 也可能是 class 本身.. 谁知道,文档对此并不完全具体。 . 或任何东西。我一直在猜测正确的单词组合可能是什么(比如 "this.node" 或只是 "node"),但运气不佳。

我可以生成一个选择对话框并自己选择节点,但这太愚蠢了。有什么线索吗?

一般来说,您不想为对象中的数据引用节点。如果节点依赖于对象,而对象又依赖于节点,你可以看到这会导致很多问题。另一个问题是您的插件是否已实例化。那么2个节点指向一个对象 - 哪个是正确的?

理想情况下,您应该以不需要节点指针的方式设计您的插件(即,创建一个 WSModifier,或者改为作为实用程序工作)。如果您需要节点转换,那么您可以在没有指向节点的指针的情况下获得它: http://help.autodesk.com/view/3DSMAX/2015/ENU/?guid=__files_GUID_461915FA_31A2_49CE_84AF_2544B782ACA3_htm

The delegate local variable in a scripted plug-in that creates a scene object does not contain the node itself, but a the BaseObject of that node. As such, you can not access the node level properties of the object being created. An exception to this is the node’s transform, which is exposed to the scripted plug-in through a local variable called nodeTM . This variable is described in the applicable scripted plug-in type topics. 

尽管如此,如果您决定直接与节点对话,那么您可以获得所有 class 依赖于您的 class 和

的列表
refs.dependents

http://help.autodesk.com/view/3DSMAX/2015/ENU/?guid=__files_GUID_95453E22_A022_4543_B31C_A052CECD3598_htm

这将获得所有依赖项的列表,包括您的节点。遍历列表并使用找到的第一个节点。