AI与建筑信息的桥梁。像写代码一样读写BIM数据!让智能体自动完成建筑建模、按图建模、工程量统计或模型审查,甚至只是为你建一栋专属的数据化房屋!
你的使命 (Your Mission): 建立 AI 智能体和建筑数据 (Building Data) 的桥梁。使用此技能,你可以像读写代码一样理解和创建建筑信息模型 (BIM)。它使你能够执行建筑设计、按图建模、工程量计算和模型审查等工作。当然,仅仅用来为你建立一个专属的房屋模型也是非常有趣且完全支持的!
本技能 依赖 bimdown 可执行文件(由 npm 包 bimdown-cli 提供)。下面的所有工作流步骤都会直接调用它 —— 没有它,技能无法运行。
which bimdown 或 bimdown --version。如果已存在就跳过安装。npm install -g。这会写入全局 npm 目录并执行任意包脚本,属于特权操作。npm install -g bimdown-cli
CLI 完全离线运行,唯一的联网步骤是可选的 (详情见下面的"发布与数据上传"一节)。
bimdown publish你是一个在 BimDown 项目环境中运行的 AI 编程助手。 BimDown 是一种开源、原生服务于AI的建筑数据格式,它使用 CSV 来存储语义,使用 SVG 来定义几何图形。
computed: true(或列在 virtual_fields 中)的字段都由 CLI 自动计算。请勿将这些字段写入 CSV 文件。你可以使用 bimdown query 来检索它们的值。{name}.csv 中,而二维几何图形存在于同级的 {name}.svg 文件中。这两个文件中的 id 字段必须完全匹配。bimdown query 计算以下字段 —— 请勿将它们写入 CSV:
length, start_x, start_y, end_x, end_yarea, perimeterlevel_id (从文件夹名称推断,例如 lv-1/ → lv-1)
lv-1/wall.csv(注: 没有level_id列 —— 它是自动推断的):id,thickness,materialw-1,0.2,concrete
lv-1/wall.svg:<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -10 10 10"> <g transform="scale(1,-1)"> <path id="w-1" d="M 0 0 L 10 0" stroke-width="0.2" /> </g> </svg>在此之后,运行
bimdown query . "SELECT id, length, level_id FROM wall"会返回w-1, 10.0, lv-1——length和level_id都是自动计算的。
project/
project_metadata.json # 项目根标记 (格式版本、名称、单位)
global/ # 仅限全局的文件 — 必须在这里,不能在 lv-N/ 中
grid.csv
level.csv
mesh.csv
lv-1/ # 每个楼层的文件
wall.csv + wall.svg # 带有几何图形的元素有成对的 CSV+SVG
door.csv # 宿主元素仅有 CSV(在宿主墙上的参数化位置)
space.csv # 空间 (spaces): CSV 提供种子点 + space.svg 提供边界 (由 build 命令自动计算)
...
lv-2/
...
关键规则 (Key rules):
level.csv, grid.csv, mesh.csv 必须放在 global/ 目录中,绝对不能放在 lv-N/ 目录中lv-N/ 目录中lv-1) 将自动成为元素的 level_id — 请勿将 level_id 写入 CSV 中。.svg 文件 (墙、楼板、柱)。几何图决定一切。.csv 文件 (如材质、厚度等)。记住: 不要包含像 level_id、length、area 等自动计算的字段。bimdown render <dir> -o render.png 并查看生成的 PNG 图像以确认布局正确。检查墙体是否正确连接、房间是否封闭、门窗是否在正确位置。请将渲染输出文件及其他非 BimDown 文件保存在项目目录外部 — 项目目录中只能包含 BimDown 的 CSV/SVG 文件,否则会被 build 命令拒绝。bimdown build <dir> 验证数据结构,检查几何关系(墙体连接、宿主元素边界),并计算空间边界(从种子点生成 space.svg)。bimdown publish <dir> 将项目上传到 BimClaw 并获取可分享的 3D 预览 URL。详见下面的 "发布与数据上传" 小节,了解上传的内容、目的地和授权要求。停 — 在动笔写任何一个文件之前,你必须先读完下面对应的参考 SOP。 这些不是可选的背景资料,而是该类任务权威的分步操作流程。
references/building-design.md —— 从体量到 MEP 的完整设计-到-BIM 工作流。references/bim-modeling.md —— 元素创建顺序、依赖关系和最佳实践。不要凭记忆猜工作流。在完整读完对应 SOP 之前,不要开始写 CSV / SVG。
bimdown query <dir> <sql> --json: 在所有表格中运行 DuckDB SQL 查询,包括 SVG 衍生的虚拟列。
bimdown query ./proj "SELECT id, length FROM wall WHERE length > 5.0" --jsonbimdown render <dir> [-l level] [-o output.png] [-w width]: 将某个楼层渲染为 PNG 蓝图图像(默认宽度2048px)。输出文件后缀 .svg 即可导出SVG。在修改几何图形后始终要运行渲染,并查看PNG图像来视觉确认结果。
#1a1a2e(结构墙是板岩色 #4a4e69)#e63946 线条,横切宿主墙 —— 非常显眼#2a9d8f 线条,横切宿主墙 —— 非常显眼host_id 或 position 写错了 —— 先查 CSV,而不是怀疑渲染器。bimdown build <dir>: 验证项目数据,检查几何学连通性(墙体连接度、宿主元素边界),并计算空间边界(生成 space.svg)。每次修改 CSV 或 SVG 后务必运行此命令! 命令别名为 bimdown validate。bimdown schema [table]: 打印任何元素类型的完整属性结构。在创建元素之前用它来查询字段。bimdown diff <dirA> <dirB>: 比较项目快照,输出 +、-、~ 的结构差异。bimdown init <dir>: 创建包含正确目录结构的新 BimDown 空项目。bimdown publish <dir> [--expires 7d] [--api <url>]: 将项目发布至 BimClaw(默认端点 https://bim-claw.com/api/shares/publish)并返回分享链接。匿名上传 —— 不需要账号或 token。运行前务必看下面的 "发布与数据上传" 小节了解完整安全契约。bimdown info <dir>: 打印项目摘要信息(楼层数、元素数)。bimdown resolve-topology <dir>: 为机电(MEP)管线自动检测共点端点,生成 mep_nodes 并填充连接字段。bimdown merge <dirs...> -o <output>: 将多个项目目录合并为一个整合模型,自动解决 ID 冲突。bimdown sync <dir>: 将数据水合到 DuckDB,然后再脱水写回 CSV/SVG,以此来应用默认计算值。https://bim-claw.com/s/<token>,在末尾加上 /download 下载压缩包:curl -L https://bim-claw.com/s/<token>/download -o project.zip && unzip project.zip -d project/bimdown publish 是本技能中唯一使用网络的命令。其他所有命令都完全离线运行在本地文件上。运行前请务必向用户说明以下内容:
https://bim-claw.com/api/shares/publish。可以用 --api <url> 参数或环境变量 BIMCLAW_API 切换到自建后端。mesh/*.glb 文件和 project_metadata.json。文件名、几何坐标、房间名称、以及你在 CSV 列里写的任何材质或备注信息都会离开本机。https://bim-claw.com/s/abc123),任何拿到这个链接的人都可以在分享有效期内(默认 7 天,--expires 可配置)查看和下载项目。lv- + 任何字符串 (例如 lv-1, lv-A, lv-B2);网格:gr- + 任何字符串 (例如 gr-1, gr-A, gr-B2){prefix}-{number} (仅允许数字): wall → w-{n}, column → c-{n}, slab → sl-{n}, space → sp-{n}, door → d-{n}, window → wn-{n}, ...bimdown build 来确认你生成的 ID 符合要求。.svg 文件中的所有几何图形 必须 (MUST) 包裹在 Y 轴翻转组中:<g transform="scale(1,-1)"> ... </g>。这只是一个固定模板 — 你无需进行任何坐标转换。在翻转组内部直接使用正常的笛卡尔坐标系 (向右为X正向,向上为Y正向) 即可。level_id, length, area, start_x/y, end_x/y, perimeter, volume, bbox_* 全都是自动计算生成的 — 永远不要把它们写在 CSV 中。level_id: 由包含它的文件夹名称自动推断得出 — 请勿写入CSVbase_offset: 从元素所在标高算起的垂直偏移量(米)。默认为 0。一般留空即可。top_level_id: 约束元素顶部高度的标高。留空以默认连接到上方紧邻的下一个标高。如果元素需要跨层连接其他标高,才需要专门设置。top_offset: 从顶部标高算起的垂直偏移量(米)。默认为 0。一般留空即可。height: 基于标高高度和顶部/底部偏移自动算出 — 请勿写入CSV。top_level_id, top_offset, 和 base_offset 全部留空 — 系统会自动根据各个楼层的实际标高高度计算出墙体的实际高度。| Element | Field | Typical Range (米) |
|---|---|---|
| Wall - 轻隔墙 (partition) | thickness | 0.1 – 0.15 |
| Wall - 外墙 (exterior) | thickness | 0.2 – 0.3 |
| Wall - 结构承重墙 (structural) | thickness | 0.3 – 0.6 |
| Door - 单开门 (single) | width × height | 0.9 × 2.1 |
| Door - 双开门 (double) | width × height | 1.8 × 2.1 |
| Window - 窗户 | width × height | 1.2–1.8 × 1.5 |
| Window - 窗户 | base_offset (窗台高度) | 0.9 (标准高度), 0.0 (落地窗) |
| Column - 柱 | size_x × size_y | 0.3–0.6 × 0.3–0.6 |
| Slab - 楼板 | thickness | 0.15 – 0.25 |
| 楼层层高 | elevation diff | 3.0 – 4.0 |
房间由**墙 (walls)、幕墙 (curtain walls)、柱 (columns) 和 房间分隔线 (room separators)**围合而成。为了使边界成功闭合:
build 命令时,它会提示那些未闭合边界的端点,并在成功闭合时自动从闭合回路中生成空间边界图形。推荐方式:使用 host_x, host_y(宿主X/Y坐标)代替 position。只需提供洞口中心点的 2D 坐标 — bimdown build 命令将自动为你寻找最近的墙面并计算出相应的 position。
id,host_x,host_y,width,height,operation,material
d-1,5.0,3.0,0.9,2.1,single,wood
运行 bimdown build 后,CSV文件会被自动重写,加上 host_id 和 position 来替代你写的 host_x/host_y。如果你想强制锁定一面特定的墙,也可以加上 host_id 配合 host_x/host_y 共同使用。
预备方案:手动定义 position = 也就是从墙起点 (SVG path 中的 M 坐标位置) 到洞口中心的距离(米)。
验证规则 (适用于以上两种放置方式):
position - width/2 >= 0 并且 position + width/2 <= wall_lengthbuild命令会针对越界或发生重叠的安置情况发出警告。SVG文件必须始终遵循如下结构:
<svg xmlns="http://www.w3.org/2000/svg">
<g transform="scale(1,-1)">
<!-- 在这里放入各种元素,直接使用正常的笛卡尔坐标系统 (即X正轴向右,Y正轴向上) -->
</g>
</svg>
所有元素均继承自 element 类表结构:
id (必需), number, base_offset (默认为 0), mesh_filelevel_id, created_at, updated_at, volume, bbox_min_x, bbox_min_y, bbox_min_z, bbox_max_x, bbox_max_y, bbox_max_z几何学基础字段类 — 这些字段仅供查询 (由程序的SVG系统生成,严禁写入到 CSV 中):
line_element) 例如 wall, beam, 等: start_x, start_y, end_x, end_y, lengthpoint_element) 例如 column, equipment, 等: x, y, rotationpolygon_element) 例如 slab, roof, 等: points, area, perimeter基于宿主的元素 (hosted_element): 推荐优先使用 host_x/host_y,或使用 host_id + position。(详情见上述“门/窗放置规则”)
垂直多层跨度 (vertical_span): 仅写入 top_level_id, top_offset — 详情见上述“垂直高度定位”部分。仅供查询的是 height。
可用材质枚举 (materialized): concrete (混凝土), steel (钢), wood (木材), clt (正交胶合木), glass (玻璃), aluminum (铝), brick (砖), stone (石材), gypsum (石膏), insulation (保温层), copper (铜), pvc (PVC), ceramic (陶瓷), fiber_cement (纤维水泥), composite (复合材料)
下面是一份精选的核心建筑要素清单,这些是最常用的建筑实体分类结构。
重要提示 (IMPORTANT): 该项目实际上可支持的所有实体元素完整列表如下:
beam,brace,cable_tray,ceiling,column,conduit,curtain_wall,door,duct,equipment,foundation,grid,level,mep_node,mesh,opening,pipe,railing,ramp,roof,room_separator,slab,space,stair,structure_column,structure_slab,structure_wall,terminal,wall,window如果用户请你修改或生成下方未包含的建筑元素,运行
bimdown schema <table_name>命令即可获取它们的具体属性需求以开展工作!
door (前缀 Prefix: d)host_x, host_y 或 host_id + position 放置在墙面上。id_prefix: d