TrimSolid 实体切割曲面 · TrimSolid

用多个实体切割曲面,被切割部分将被去除,多线程异步运算
📂 LK → Brep 📄 Trim Solid.cs 🏗️ 布尔切割 secondary ⚡ GH_TaskCapable

📖 功能概述

实体切割曲面:用一组实体(Solid Brep)去切割一个目标曲面(Brep),被实体相交区域的曲面部分将被去除,同时输出剩余部分被切掉的部分

曲面
被切割
✂️
实体
切割工具
剩余
保留
切除
去除

📥 输入参数

名称类型必填说明
曲面 (S) Brep 必需 需要被切割的目标曲面(单个)
实体 (T) Brep 必需 用来切割的多个实体列表。每个必须为 IsSolid == true
⚠️ 切割体验证:组件会在运算前检查每个输入的 Brep 是否为实体(IsSolid)。如果存在非实体,会立即报错 "切割体必须为实体",不会继续计算。

📤 输出参数

名称类型说明
切割后剩余部分 (R) Brep 曲面被实体切割后剩余的部分(列表)。即原曲面减去实体占据的区域
被切割掉的部分 (I) Brep 曲面上被实体切除的部分(列表)。即原曲面与实体相交的区域

⚡ 异步执行流程

组件继承自 GH_TaskCapableComponent<SolutionResult>,分两阶段执行:

InPreSolve
准备数据校验实体
📦
后台 Task
Task.Run 异步计算
不阻塞 UI
GetSolveResults
取回结果
输出到端口

📋 两阶段详解

阶段 1:InPreSolve

  • 获取输入的曲面和切割实体列表
  • 验证每个切割体是否为实体(IsSolid)
  • 获取文档容差(DocumentTolerance())
  • 创建 Task 启动后台计算
  • 将 Task 加入 TaskList
  • return,等待下一阶段

阶段 2:SolveInstance

  • 调用 GetSolveResults 获取计算结果
  • 如果计算未完成(null),输出 Warning
  • 如果结果中有错误消息,输出 Error
  • 否则将剩余部分和切除部分分别输出
⏱️ 性能优势:因为布尔切割运算可能很耗时(特别是当切割实体数量多或拓扑复杂时),GH_TaskCapableComponent 确保运算在后台线程执行,Grasshopper 界面不会卡住,用户体验流畅。

🧪 典型使用场景

⚠️ 注意事项

📋 组件信息

名称实体切割曲面
英文名TrimSolid (TS)
分类LK → Brep
Exposuresecondary(二级标签页可见)
基类GH_TaskCapableComponent<SolutionResult>
GUID98628146-DEBD-4776-8BDC-D4C8C5B9A16B