这是 LK 工具集中的核心布尔运算组件,从一个目标物体中减去一个或多个切割体,生成差集结果。它比 Grasshopper 原生的布尔差分组件更加智能和健壮:
| 名称 | 类型 | 必填 | 说明 |
|---|---|---|---|
| 目标物体 (B) | Brep | 必需 | 被切割的目标物体(单个 Brep,可以是实体或曲面) |
| 切割体 (C) | Brep | 必需 | 用于切割的物体(列表,多个切割体同时输入) |
| 容差 (T) | Number | 可选 | 布尔运算容差。默认为当前 Rhino 文档的绝对容差。通常无需修改。 |
| 名称 | 类型 | 说明 |
|---|---|---|
| 结果 (R) | Brep | 布尔差集运算结果(列表)。成功减去所有有效切割体后得到的目标物体。 |
| 失败切割体 (F) | Brep | 布尔运算失败的切割体(列表)。用于排查哪些切割体导致了问题。 |
| 无交集切割体 (N) | Brep | 与目标物体无交集的切割体(列表)。这些切割体不会影响结果。 |
在对切割体执行布尔运算之前,组件使用两阶段过滤提前剔除无效切割体:
BrepBrep 求交判断是否有实际相交过滤过程使用 并行计算(Parallel.ForEach),显著提升多切割体场景下的性能。
一次性将所有切割体与目标做布尔差集运算。效率最高,但不一定能处理复杂重叠几何。
批量失败后自动切换,逐个切割体依次运算。更稳健,失败时精确标记哪个切割体有问题。
内部的 Collide 方法按以下顺序判断两个 Brep 是否有交集:
BrepBrep 相交计算该组件继承自 GH_TaskCapableComponent,在 Grasshopper 的数据驱动运算(DataTree 多分支)场景下,每个分支的布尔运算会以独立任务在后台执行:
InPreSolve):为每个数据分支创建异步 TaskSolveInstance):通过 GetSolveResults 获取各分支结果| 场景 | 说明 |
|---|---|
| 开孔打洞 | 在目标实体上减去圆柱/方体等切割体,生成孔洞效果。 |
| 复杂外形切割 | 使用多个切割体对一个目标反复切减,得到复杂外形。 |
| 模型减材 | 从扫描或导入的模型中减去不需要的部分。 |
| 批量布尔运算 | 一次性输入大量切割体,组件自动过滤无交集部分并执行运算。 |
| 名称 | 布尔差集 |
| 英文名 | BrepDiff (BooleanDifferenceFinal) |
| 分类 | LK → Brep |
| Exposure | secondary(次级标签页可见) |
| 基类 | GH_TaskCapableComponent<SolveResults> |
| GUID | 21B04604-21A8-4AD3-8FA7-DC6AC6188037 |