Maya:获取脚本创建的所有节点的名称

Maya: Get name of all nodes created by script

我想知道是否有办法在每次创建新节点时获取任何新节点的名称。我想编译我的脚本创建的所有节点的列表,以便在需要时可以一次彻底删除它们。

*Edit - 一个更好的解决方案是在脚本执行完毕后获取场景中所有新节点的名称。这样,如果我的脚本在执行时重命名了一个新节点,则会存储正确的名称。

您可以使用 scriptJob 并监听 DagObjectCreated 事件: http://help.autodesk.com/cloudhelp/2018/ENU/Maya-Tech-Docs/CommandsPython/scriptJob.html

但是,除非您的脚本正在调用您可以 little/no 控制输出的外部依赖项,否则我认为您最好只记录脚本正在执行的操作。如有必要,将此数据保存为 JSON 或类似内容以在会话或模块之间使用。

编辑: 根据评论,要检测创建或修改的非 dag 对象,使用 cmds.ls() 列出场景内容可能更有用:http://help.autodesk.com/cloudhelp/2018/ENU/Maya-Tech-Docs/CommandsPython/ls.html

例如:

import maya.cmds as cmds

before = cmds.ls()
cmds.polySphere()
cmds.polyCube()
after = cmds.ls()

diff = set(before).symmetric_difference(set(after))
print(diff)