Page 1 of 1
新增快速选中节点自身及其所有子节点功能
Posted: 2024/10/18 07:00
by kvfreedom
在节点的右键菜单中新增一个选项,或是按住键盘的某个键并点击节点,可选中节点自身及其所有子节点。
Re: 新增快速选中节点自身及其所有子节点功能
Posted: 2024/10/18 07:34
by caitsithware
谢谢您的建议。
如果您能详细描述一下,我们会更容易考虑。
例如,请提供以下详细信息:
- 为什么要选择这种方式? (选择后你想对节点做什么?)
- “子节点”是指“节点的所有OutputPort都连接到的节点”吗?
- “所有子节点”是否包括“孙子节点及以下”?
- 如果存在循环连接,是否还包括“循环目的地的父节点”?
等等。
Re: 新增快速选中节点自身及其所有子节点功能
Posted: 2024/10/18 12:49
by kvfreedom
caitsithware wrote: ↑2024/10/18 07:34
谢谢您的建议。
如果您能详细描述一下,我们会更容易考虑。
例如,请提供以下详细信息:
- 为什么要选择这种方式? (选择后你想对节点做什么?)
- “子节点”是指“节点的所有OutputPort都连接到的节点”吗?
- “所有子节点”是否包括“孙子节点及以下”?
- 如果存在循环连接,是否还包括“循环目的地的父节点”?
等等。
- 1.png (142.41 KiB) Viewed 7086 times
- 2.png (145.71 KiB) Viewed 7086 times
如图例,将图1调整为图2,用拖选的方式比较不容易快速选择需要移动的一组节点。
除了移动,还有删除、复制、对齐等其他对一组节点的操作需求。
- 3.png (80.5 KiB) Viewed 7086 times
如果想快速选择"ForInt"节点及其子节点,应该包含如图3所示的所有节点。
- 4.png (91.86 KiB) Viewed 7086 times
循环连接我从未在项目中使用过,我一般是使用Restart节点或ForInt节点的方式进行循环。
关于是否包括“循环目的地的父节点”,如图4,我认为要判断是否为“循环目的地的父节点”在代码实现上是可能不容易的。
目前我思考的方案是,将节点看成FlowNode和ComputeNode两类,起始节点只可以为FlowNode,起始节点往后FlowLine相连的FlowNode都定为子节点,将起始节点和子FlowNode都保存到FlowNode HashSet,再遍历FlowNode HashSet,如果HashSet中的FlowNode连接的ComputeNode没有连接非FlowNode Hashset中的FlowNode,则这个ComputeNode也属于子节点,保存到ComputeNode HashSet。ComputeNode连接的ComputeNode也需要递归判断,如果ComputeNode在ComputeNode HashSet中或连接了非FlowNode Hashset中的FlowNode则排除。最终两个HashSet中的节点就是要选中的所有节点。
- 5.png (79.31 KiB) Viewed 7086 times
如图5,是以Log"A"为起始节点及其所有子节点。
Re: 新增快速选中节点自身及其所有子节点功能
Posted: 2024/10/18 13:31
by caitsithware
明白了。
节点移动已经实现了类似的功能。
- 按住 Alt (Windows) / Option (Mac) 并用鼠标左键拖动节点:一次移动所有子节点(包括旋转的父节点)
- 按住 shift 并用鼠标左键拖动节点:将父节点全部移动(包括旋转后的子节点)
只要条件相同,实施起来并不困难。
目前,我们将考虑在相同条件下实施。
Re: 新增快速选中节点自身及其所有子节点功能
Posted: 2024/10/18 13:52
by caitsithware
我们还将考虑包括一个从子节点的InputDataPort 连接的“独立ComputeNode”。