🧩LUDouSolver

所在模块:yingzao.ancientArchi.Dou.LUDouSolver

YingZaoComponent
YingZaoComponent

功能概述

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 时清空输出并清除组件缓存

核心流程

  1. 读取数据库参数
    通过 DBJsonReader 读取目标记录并展开为 All_dict,作为后续全部参数源。

  2. 生成主木坯
    调用 build_timber_block_uniform 生成櫨枓主坯及完整几何特征集。

  3. 提取一组工艺参考平面
    通过 PlaneFromLists 生成第一组与第二组 ResultPlane(用于不同刀具/坯料对位)。

  4. 构造欹䫜刀具
    调用 build_qiao_tool 生成刀具体、截面平面和参考线。

  5. 第一次对位
    将欹䫜刀具对位到主木坯目标面(支持参数广播)。

  6. 生成待切木料组
    按数据库尺寸参数批量生成 BlockTimbers。

  7. 提取第三组参考平面
    对 BlockTimbers 做 PlaneFromLists,生成后续对位基准。

  8. 第二次对位
    将待切木料组对位到主木坯工艺平面。

  9. 执行切割
    汇总两阶段对位后的刀具,调用 FT_CutTimberByTools 对主木坯进行布尔裁切。

  10. 汇总日志
    按步骤拼接日志,形成完整可审计求解记录。


输出结果(按类别)

类别 代表输出
数据库 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 构件的数据库驱动参数化生成。
  • 斗栱节点中“主坯 + 刀具 + 次级坯料”的多阶段加工模拟。
  • 需要保留中间过程几何与日志以便校核的教学、研究或工程流程。

设计要点

  • 采用类封装统一管理跨步骤状态,便于扩展与调试。
  • 每一步结果都可独立输出,支持局部替换与流水线复用。
  • 将数据库参数、几何构造、对位、切割整合到同一求解入口,降低组件连线复杂度。