On this page
article
枓
🧩LUDouSolver
所在模块:yingzao.ancientArchi.Dou.LUDouSolver
功能概述
LUDouSolver 是一个面向櫨枓(LU_DOU)构件的“一体化参数求解与加工流水线”组件。它从数据库读取 LU_DOU 参数后,按预设工艺链自动完成主木坯生成、参考平面提取、欹䫜刀具构造、两阶段刀具/坯料对位以及最终布尔切割,并输出完整中间结果与日志,适合在 Grasshopper 中进行可追踪的斗栱构件自动建模与加工模拟。
输入参数
| 参数 | 类型 | 说明 |
|---|---|---|
| DBPath | str | SQLite 数据库路径 |
| PlacePlane | Plane 或 Point | 放置输入;Plane 时同时提供 base_point 与 reference_plane,Point 时仅覆盖 base_point |
| Table | str | 表名,默认 DouGong |
| KeyField | str | 查询主键字段,默认 type_code |
| KeyValue | str | 查询主键值,默认 LU_DOU |
| Field | str | JSON 字段名,默认 params_json |
| Refresh | bool | 刷新开关;为 True 时清空输出并清除组件缓存 |
核心流程
-
读取数据库参数
通过 DBJsonReader 读取目标记录并展开为 All_dict,作为后续全部参数源。 -
生成主木坯
调用 build_timber_block_uniform 生成櫨枓主坯及完整几何特征集。 -
提取一组工艺参考平面
通过 PlaneFromLists 生成第一组与第二组 ResultPlane(用于不同刀具/坯料对位)。 -
构造欹䫜刀具
调用 build_qiao_tool 生成刀具体、截面平面和参考线。 -
第一次对位
将欹䫜刀具对位到主木坯目标面(支持参数广播)。 -
生成待切木料组
按数据库尺寸参数批量生成 BlockTimbers。 -
提取第三组参考平面
对 BlockTimbers 做 PlaneFromLists,生成后续对位基准。 -
第二次对位
将待切木料组对位到主木坯工艺平面。 -
执行切割
汇总两阶段对位后的刀具,调用 FT_CutTimberByTools 对主木坯进行布尔裁切。 -
汇总日志
按步骤拼接日志,形成完整可审计求解记录。
输出结果(按类别)
| 类别 | 代表输出 |
|---|---|
| 数据库 | Value, All, All_dict |
| 主木坯 | TimberBrep, FaceList, EdgeMidPoints, Corner0Planes, AxisX/Y/Z |
| 平面链 | ResultPlane1, ResultPlane2, ResultPlane3 |
| 刀具链 | ToolBrep, AlignedTool, AlignedTool2 |
| 切割结果 | CutTimbers, FailTimbers |
| 调试信息 | DebugInfo, DebugInfo2, Log |
关键行为说明
- PlacePlane 优先级高于数据库中的放置参数。
- 参数读取具备默认值与类型兜底,缺失字段不会直接中断整条流水线。
- 对位阶段支持列表广播,便于一组参数驱动多次姿态计算。
- 切割阶段会自动跳过空刀具并记录失败项,保证批处理稳定性。
- Refresh 可触发组件级清理,避免旧缓存影响新求解。
适用场景
- LU_DOU 构件的数据库驱动参数化生成。
- 斗栱节点中“主坯 + 刀具 + 次级坯料”的多阶段加工模拟。
- 需要保留中间过程几何与日志以便校核的教学、研究或工程流程。
设计要点
- 采用类封装统一管理跨步骤状态,便于扩展与调试。
- 每一步结果都可独立输出,支持局部替换与流水线复用。
- 将数据库参数、几何构造、对位、切割整合到同一求解入口,降低组件连线复杂度。