Katana/Python中的此代码在用户选择的任何节点周围创建背景并调整大小:
nodeGraphTab = UI4.App.Tabs.FindTopTab('Node Graph')
nodeGraphTab._NodegraphPanel__fitBackdropNode()如果要手动创建节点(或多个节点),请选择节点,然后运行该代码,它将创建如下所示:

但是,如果我以编程方式制作一个节点并以编程方式选择它,我的代码只创建背景,但无法调整大小和移动它。这就好像节点的创建需要在某种程度上“烘焙”它才能被认可。
我的代码:
import NodegraphAPI
# Get the root node
rootNode = NodegraphAPI.GetRootNode()
#Create a Node
node = NodegraphAPI.CreateNode("Alembic_In", rootNode)
#Select the node in the viewport
NodegraphAPI.SetNodeSelected(node, True)
nodeGraphTab = UI4.App.Tabs.FindTopTab('Node Graph')
nodeGraphTab._NodegraphPanel__fitBackdropNode()上面的代码产生了这个错误的结果:

可以在Katana中尝试这段代码并让我知道我做错了什么吗?
我在用Katana 5.0v1
发布于 2022-06-13 11:36:10
我从克里斯蒂安那里得到了关于铸造论坛的答案:
创建节点时,它将保持不成形状态,直到必须第一次绘制它,这仅在事件循环的下一次迭代中发生。NodegraphWidget.fitBackdropNode()方法依赖于节点形状来计算背景节点的范围。如果节点形状不可用,将创建一个微小的背景节点,正如您的片段所演示的那样。
为了确保及时创建节点形状,可以使用Utils.EventModule.ProcessEvents()请求事件处理。区块报价
> import NodegraphAPI
>
> #Get the root node rootNode = NodegraphAPI.GetRootNode()
>
> #Create a Node node = NodegraphAPI.CreateNode("Alembic_In", rootNode)
>
> #Select the node in the viewport NodegraphAPI.SetNodeSelected(node, True)
>
> Utils.EventModule.ProcessEvents() # Process events (node_create
> events in particular) to ensure that the node's shape is created
>
> nodeGraphTab = UI4.App.Tabs.FindTopTab('Node Graph')
> nodeGraphTab.getNodeGraphWidget().fitBackdropNode()还请注意,可以使用NodegraphWidget.fitBackdropNode()代替_NodegraphPanel__fitBackdropNode() (伪私有方法)。
https://stackoverflow.com/questions/72597913
复制相似问题