层:事实源(编码规律) | 更新触发:规律定档(记日期) | 注册表:README
引用《营造法式》中“缝”的概念(参见吴国源等人2024年刊于《建筑史学刊》的文章《〈营造法式〉大木作“缝”内涵考释(一):综述与文本》),将“缝”作为控制构件位置的辅助线,决定构件的基准位置。
| 类型 | 描述 | 编码示例 |
|---|---|---|
| 朝向 | F:前=南(front)/ B:后=北(back)/ L:左=东(left)/ R:右=西(right)——以建筑自身朝向为基准(坐北朝南),非看图者视角 | |
| 内外 | i:内(inner)/ o:外(outer) | |
| 位置 | 0+:距中线距离(mm 或 D 表达式) | |
| 缝 | CAO 槽缝 / JIAN 间缝 / FU 栿缝 / TUAN 槫缝 / TUANJIAN 槫间缝 / PUZUO 铺作缝 / TIAO 跳心缝 | CAO_Fo(前槽缝外侧)JIAN_L1(左一间缝)TUAN_0(中槫缝)TUAN_F1(前第 1 槫缝) |
| 构件 | 名称拼音小写 + 参数(mm 或 D 表达式)+ 所属缝 | yanzhu[CAO_Fo, JIAN_L1] |
按语义功能分七类(括号内为编码 KIND):
- 槽缝(
CAO):空间限定线 - 间缝(
JIAN):面阔方向的分割线 - 栿缝(
FU):梁栿的定位线 - 槫缝(
TUAN):槫的定位线 - X 间缝(
TUANJIAN等):构件之间的连接处,一般称为「X间缝」,如「槫间缝」 - 铺作缝(
PUZUO):斗栱的出跳方向 - 铺作出跳跳心缝(
TIAO):斗栱出跳(即横栱安装)的位置
注:第 2 类「间缝」(
JIAN,面阔分割线)与第 5 类「X间缝」(构件连接处,如TUANJIAN槫间缝)是两个不同概念——前者是独立缝型,后者是一族「构件名 + 间缝」连接缝的统称。
缝编码形如 {KIND}_{SUFFIX}:
KIND:上述 7 种缝类型之一SUFFIX:正则^([FBLR]?)(\d*)([io]?)$- 第 1 段:朝向(可选)
- 第 2 段:序数(可选,如
L1的 1);中缝/中线用序数0表达(如JIAN_0间中缝、TUAN_0中槫缝),即「默认方向 + 数字 0」 - 第 3 段:内外标记(可选,
i内 /o外)
- 坐北朝南:建筑正面朝南。方向字母以建筑自身为基准:
F=南(前)、B=北(后)、L=东(建筑左手)、R=西(建筑右手)。平面图(北在上)中 L/R 与看图者的左右相反——Lo(东)在图面右侧,Ro(西)在图面左侧。 - 坐标系:+X=东(面阔向右),+Y=北(进深向上)。
走向由 KIND + 方向字母 共同决定:
| 类型 | 走向 | 位置定义于 |
|---|---|---|
| CAO(F/B) | 沿 X(面阔方向)延伸 | Y 轴(南北) |
| CAO(L/R) | 沿 Y(进深方向)延伸 | X 轴(东西)——外圈槽缝的两侧线 |
| JIAN | 沿 Y(进深方向)延伸 | X 轴(东西) |
| TUAN / TUANJIAN | 沿 X(面阔方向)延伸 | Y 轴(南北) |
FU / PUZUO / TIAO 的走向尚未定义(V2 再议)。
槽缝(CAO)的外圈语义:最外一圈檐柱对应四条槽缝——前(南)Fo、后(北)Bo、左(东)Lo、右(西)Ro。
构件的 instances[].axes 须一横一纵(如 ["CAO_Fo", "JIAN_L1"]),构件中心 = 两条缝的交点坐标。
不满足的实例在 resolver.resolve 时抛错并提示使用 instances 枚举。整排布置的紧凑写法(开放项)见 docs/adr/ADR-0004.md。
缝定义示例(data/axes.json):
{ "id": "CAO_Fo", "kind": "CAO", "distance": "2D", "note": "前槽缝(外)" }构件实例示例(data/members/yanzhu.json):
{ "id": "yanzhu_01", "axes": ["CAO_Fo", "JIAN_L1"] }构件实例 ID 形如 {类型全拼}_{序号},正则 ^[a-z][a-z0-9]*_[0-9]+$(已固化在 data/schema/member.schema.json):
- 前缀 =
type字段 = 数据文件名,全拼小写(如yanzhu),不用缩写,避免不同构件缩写撞名(缩写YZ无法区分檐柱/游柱/圆作等) - 分隔符统一用下划线,与缝编码
{KIND}_{SUFFIX}语法一致 - 构件用小写、缝
KIND用大写,正好区分两个命名空间 - 示例:
yanzhu_01;将来的efang_01(额枋)、dougong_01(斗栱)同规则
| 中文 | 英文 | 说明 |
|---|---|---|
| 构件 | member | 对齐 IFC 术语(线性构件实体即 IfcMember);刻意不用 component——它在软件语境默认指 UI 组件(React/Vue),英文文档中会产生"建筑构件 vs 软件组件"歧义 |
| 缝 | axis(seam) | 控制构件定位的辅助线;走向由 resolver._runs_for 按 KIND+方向字母判定 |
| 构件类型 | member type | data/members/{type}.json,文件名 = type = ID 前缀 |
D 表达式("11D"、"2D")由 bridge/resolver.py 在生成代码前求值为mm 数值,OpenSCAD 永远接收纯数字。
输入「面阔 X 间,进深 Y 间」自动生成柱网缝位与檐柱实例(bridge/layout.py)。规律如下:
- 间数 → 柱数:X 间 = X+1 根柱(每排);Y 间 = Y+1 排
- 奇数间限制:仅支持奇数间(3、5、7…)——奇数间才有「正中一间」(明间)作基准;输入偶数间报错
- 间宽递减:以明间宽 W 为基准,向两侧每出一间 ×0.8(第 k 间宽 = W·0.8^(k-1),明间 k=1);宽度只看 k,间名只看位置(见下「间的命名」)
- 柱位(距明间中线):第 1 对柱线 ±W/2;第 k 对(k≥2)= W/2 + W·(0.8 + 0.8² + … + 0.8^(k-1))
- 柱高:全柱等高,H = 0.8 × 明间宽(明间面阔的 0.8 倍;与间数、柱位无关)
- 柱径:1D 不变
- 面阔与进深独立:各自输入间数与明间宽(默认均 8D),互不影响
间由柱网缝线(CAO/JIAN)分隔;中线(AXIS_X/AXIS_Y)不参与间的分隔。设 o=(X−1)/2 为最外间位次(距明间 d=o)。自中间向两侧,判定顺序为梢(尽)先于次:
- 明间:正中间一间(d=0)
- 次间:明间两侧的间;次间超过一对时自中间向两侧冠序数——一次间、二次间……(恰一对则直呼"次间")
- 梢间:最外侧两间(d=o)——判定顺次优于次间:三间建筑两侧即最外,故称梢间(三间 = 明间 + 两梢间)
- 尽间:当有外侧走廊时在梢间外的更外两间(此时最外=尽间、梢间内移一位)——V1 无廊输入,仅预留术语
用字定为「梢间」。举例:
| 面阔 | 自中间向一侧(d 升序) |
|---|---|
| 3 间 | 明间 · 梢间 |
| 5 间 | 明间 · 次间 · 梢间 |
| 7 间 | 明间 · 一次间 · 二次间 · 梢间 |
| 9 间(带外廊) | 明间 · 一次间 · 二次间 · 梢间 · 尽间 |
奇数间布局的明间中线是非缝体系的轴线(占 GB 编号正中号,但不定位分间); 槽缝仅指外圈檐柱列,内圈分间线一律为间缝:
- CAO(槽缝):仅最外圈——面阔两端
CAO_Lo/CAO_Ro(山面檐柱列)+ 进深两端CAO_Fo/CAO_Bo(前后檐柱列) - JIAN(间缝):内圈分间线——面阔
JIAN_L1..L(n-1)/JIAN_R1..R(n-1)(走向沿 Y)、进深JIAN_F1..F(n-1)/JIAN_B1..B(n-1)(走向沿 X);走向随方向字母(resolver_runs_for) - 中线(非缝):
AXIS_X(面阔明间中线,定 x=0)/AXIS_Y(进深中心基准面,定 y=0)——占编号、不定位分间;TUAN_0(中槫缝)为脊檩定位线,与 AXIS_Y 投影重合但一个是线、一个是面 - 示例(面阔 3 间,明间 8D):
CAO_Lo / JIAN_L1 / AXIS_X / JIAN_R1 / CAO_Ro= ±10.4D / ±4D / 0;间序:梢间(CAO_Lo–JIAN_L1,宽 0.8×8D=6.4D)· 明间(JIAN_L1–JIAN_R1,AXIS_X 居中)· 梢间(JIAN_R1–CAO_Ro)——三间两侧即最外,按「间的命名」判为梢间;4 柱/排,柱高 H = 0.8×8D = 6.4D
静态示例 data/axes.json 已同步新缝型(JIAN_0→AXIS_X、CAO_F1→JIAN_F1);
其面阔 2 间(偶数、中柱立于 AXIS_X)早于"奇数间"生成规律,两套并存,是否统一记入 PROGRESS 开放问题。