创建支持服务单
关注

Q100372:使用Python重命名输入和输出端口

摘要


在设置具有多个输入的节点(例如Merge,Switch或Global State Variables节点)时,手动重命名每个连接端口以阐明连接目的可能非常繁琐。要自动化该过程,您可以使用Python创建自定义Shelf Item或SuperTool来处理重命名。本文解释了如何实现这一目标。

更多信息

下面包含并解释了一个示例脚本,它循环遍历每个选定节点的输入端口并将它们重命名为特定值。

这可以在Katana中使用例如Merge或VariableSwitch节点进行测试。

示例脚本

# Grab all currently selected nodes
selectedNodes = NodegraphAPI.GetAllSelectedNodes()

# Loop through each selected node for node in selectedNodes:
# Get all the import ports within the node     inputPorts = node.getInputPorts()
# Loop through each port within the node     for inputs in inputPorts:         index= inputs.getIndex()         name = node.getInputPortByIndex(index).getName()
# Name each port 'Shot' plus their indexed location         node.renameInputPort(name,('Shot'+repr(index+1)))

使用脚本

在Katana中,可以通过简单地创建Merge或VariableSwitch节点并向其添加多个输入端口(节点上的中间箭头)来测试脚本:


在选择节点时将上述脚本粘贴/执行到Python选项卡应将默认输入端口重命名为:

您还可以通过下载附加的renameInputPorts.py文件并将其放在用户的主页区域“ .katana/Shelves/ ”目录下的Shelf文件夹名称下,将上述脚本作为自定义Shelf项目进行测试。

例如:

Windows: C:\Users\usename\.katana\Shelves\RenameShelf\renameInputPorts.py
Linux: /mnt/nethome/users/usename/.katana/Shelves/RenameShelf/renameInputPorts.py


此设置是自定义Shelf或SuperTool的基础。从这里,您还可以添加一个允许您重命名每个端口的弹出窗口小部件,或者您可以将代码作为SuperTool节点本身的一部分包含在内。


有关设置连接,创建Shelf Items和SuperTools的更多信息,请使用以下链接查看Katana在线帮助和Katana开发人员指南:


Python连接节点: Katana开发人员指南 - 使用节点 - 连接节点
货架脚本: Katana在线帮助 - 技术信息 - 货架物品脚本
SuperTools: Katana在线帮助 - 技术信息 - SuperTools

脚本解释

selectedNodes = NodegraphAPI.GetAllSelectedNodes()

使用NodegraphAPI首先找到要应用脚本逻辑的目标节点。这可以通过两种方式完成,方法是通过名称指定节点或查询当前选定的节点。上面的行查找并存储当前所选节点对象的列表作为selectedNodes

for node in selectedNodes:
inputPorts = node.getInputPorts()

获得节点对象列表后,可以通过for循环遍历每个节点对象并调用getInputPorts()函数,该函数获取节点的所有输入端口。

for inputs in inputPorts:         
  index= inputs.getIndex()

既然您拥有每个节点的端口,您可以通过其名称或索引位置遍历各个端口。上面的行使用getIndex()函数查找其索引位置。

name = node.getInputPortByIndex(index).getName()
node.renameInputPort(name,('Shot'+repr(index+1))) 

上面的行检索节点端口的当前名称,并将其重命名为Shot,后跟该端口的索引。最终名称看起来像Shot1,Shot2,Shot3,具体取决于节点有多少个端口。

这篇文章有帮助吗?
/

We're sorry to hear that!

Please tell us why.
2 人中有 2 人觉得有帮助

评论