数据组合 · Data Merge

以多种模式将来自多个输入流的数据树合并为单一树形结构,支持动态端口扩展
📂 LK → Tree 📄 MergeComponents01.cs 🔗 多流合并 🔄 8 种模式 🔌 动态端口

📖 功能概述

将多个输入数据树按照右键菜单选择的 8 种组合模式之一进行合并。 支持动态扩展输入端口——连接新的数据源后端口自动增加。

核心思路:每个输入流依次经过"模式预处理"后再合并到一个数据集。不同模式适用于不同的树形合并场景——从简单的拍平合并到带标记的路径前缀合并。

🧠 核心算法:8 种合并模式详解

模式对照表:

模式 0 · 直接合并(默认):不对输入树做任何预处理
  每个输入流的数据以其原始路径直接追加到结果树,不修改路径结构

模式 1 · 拍平合并:将每个输入树拍平后再合并
  每个输入流先调用 Flatten() 展开为单级路径,再合并到同一个 {0;N} 结构中

模式 2 · 嫁接合并:将每个元素都提升为独立分支
  每个输入流先 Graft(每元素独立分支),再合并 → 适合将多个列表中的每个元素按序独立存放

模式 3 · 简化合并:折叠重叠路径后合并
  每个输入流先 Simplify(CollapseAllOverlaps),消除冗余层级后再合并

模式 4 · 嫁接+简化:Graft 后立即 Simplify
  先 Graft 再 Simplify,常用于生成标准化分组后再合并

模式 5 · 输入标记合并:用输入流序号标记路径前缀
  每个输入流的分支路径前前置追加输入流索引(i),例如输入流 3 的 {0;1} 变为 {3;0;1}
  适用于区分不同数据源的场景

模式 6 · 重置路径合并:将每个输入流的所有元素重新编号到 0..N
  每个输入流的每条分支路径被替换为递增序号 {0}, {1}, {2}...
  适用于消除原路径结构、以纯序号方式组织数据

模式 7 · 输入标记 + 最终排序:同模式5,但最终将所有分支路径重新编号
  先做输入标记合并(模式5),然后对整个结果树再做一次路径重编号 {0}, {1}, {2}...

📥 输入参数

名称类型必填说明
Data 1 (D1) Generic 可选 第 1 个输入数据流(树形)。所有输入至少连接 1 个才能工作。
Data n (Dn) Generic 可选 第 n 个输入数据流(动态添加)。连接新数据源后端口自动扩展。

📤 输出参数

名称类型说明
结果 (R) Generic 按所选模式合并后的数据树(树形结构)。

🖱️ 右键菜单:8 种模式速查

索引名称说明
0直接合并保持原始路径
1拍平合并Flatten 后合并
2嫁接合并Graft 后合并
3简化合并Simplify 后合并
4嫁接+简化Graft → Simplify
5输入标记合并前置追加输入流编号
6重置路径合并路径重编号为 0,1,2...
7(默认)标记 + 最终排序先标记再重编号

🎯 典型应用

⚠️ 注意事项:
  • 输入端口会自动扩展——在最后一个输入端口上连接数据源即可自动新增端口。
  • 默认模式为 模式 7(标记 + 最终排序),适合最常见的带源标记的合并场景。
  • 模式 0(直接合并)中,如果多个输入流的路径冲突,后合并的数据会覆盖之前的数据。
  • 模式 1(拍平)会丢失原始路径信息,仅适用于不需要保留树形结构的场景。

📋 组件信息

名称数据组合
英文名Data Merge (Merge)
分类LK → Tree
基类RighrClickComponent + IGH_VariableParameterComponent
GUIDD7AFDC63-7C36-412C-B5A6-4AEA953FCD6C