On this page
article
营造[yingzao] Python 包
安装方式
在 RH3D 中点击 Tools->Script->Edit, 弹出 Script Editor 窗口。
在 Script Editor 窗口中点击Tools->Advanced->Open Python 3 Shell,弹出如下终端,命令行窗口。
执行命令: pip install --upgrade yingzao, 安装 营造[yingzao] Python 包。
营造[yingzao] Python 包
YingZao_PyPI
宋营造法式相关的数驱参构系统代码仓库。该仓库同时包含:
- Python 核心包
yingzao - Grasshopper 插件工程
YingZao.GH - 面向几何构件、斗拱组合、木构架求解的 Rhino/Grasshopper 支撑代码
项目定位
yingzao 不是一个通用的纯 Python 数值库,而是一个面向 Rhino / Grasshopper 场景的参数化建构工具包。代码核心集中在 src/yingzao/ancientArchi,主要职责包括:
- 从 SQLite / JSON 数据中读取营造参数
- 将参数映射为构件几何、切割刀具和装配逻辑
- 在 Grasshopper 中组织输入输出、DataTree 与动态端口
- 为后续稳定化的 C# Grasshopper 组件提供 Python 侧能力
仓库结构
src/yingzao/ Python 核心包
grasshopper/YingZao.GH/ C# Grasshopper 插件项目
docs/ 文档与架构说明
dist/ 打包产物
更详细的代码说明见:
当前代码的核心模块
yingzao.ancientArchi
项目主体。这里集中导出了大部分求解器、刀具构造器、数据库上下文和 Grasshopper 辅助工具,主要分为以下几个子目录:
CuttingToolBody:木构切削刀具与刀体生成Dou:斗类构件求解器Gong:栱类构件求解器PuZuo:铺作组件装配求解器PackingBlock:垫块、乳栿、榨牵等配套块体与辅助求解器TimberStructuralFrame:木结构骨架与屋架相关求解Column:柱体与收分柱相关构造utils:Rhino / Grasshopper 侧共用工具、DataTree 处理、对位与切割辅助Temp:试验性 Runner、数据库辅助、过渡方案
grasshopper/YingZao.GH
这是一个 C# Grasshopper 插件工程,目标是把 Python 侧动态能力整理为更稳定的 Grasshopper 组件,例如动态输出端口组件 DbFieldsToOutputsComponent。
运行环境说明
虽然仓库提供了 PyPI 打包配置,但当前核心功能强依赖以下运行时:
- RhinoCommon /
Rhino.Geometry - Grasshopper SDK
scriptcontext- 一部分 .NET 类型,如
System.Guid
这意味着:
- 仓库可作为 Python 包发布和安装
- 但多数
ancientArchi代码需要在 Rhino / Grasshopper 环境内才能正常运行 - 如果脱离 Rhino / Grasshopper 直接在普通 CPython 环境导入,多数核心模块会因缺少宿主依赖而失败
建议的阅读顺序
如果你要快速理解当前代码,建议按以下顺序阅读:
src/yingzao/__init__.py:确认包版本与公开子包src/yingzao/ancientArchi/__init__.py:查看当前导出的主要 APIsrc/yingzao/ancientArchi/utils/common_utils.py:理解 All 参数、广播和参考平面等通用逻辑src/yingzao/ancientArchi/utils/DBPathContext.py:理解 Grasshopper 文档级数据库路径上下文src/yingzao/ancientArchi/Temp/fashi_db_helper.py:理解 SQLite + JSON 参数访问方式src/yingzao/ancientArchi/Dou/LUDouSolver.py:理解一个典型构件求解流水线grasshopper/YingZao.GH/Components/DbFieldsToOutputsComponent.cs:理解 C# 侧稳定化输出方案
文档说明
本 README 只承担仓库入口页角色。更完整的架构、模块职责、数据流、关键入口、开发建议和当前风险说明已整理到:
打包备注
仓库中的 note.md 保留了当前构建发布命令草稿,可作为本地打包参考。