Skip to content

Latest commit

 

History

History
123 lines (83 loc) · 6.81 KB

File metadata and controls

123 lines (83 loc) · 6.81 KB

基于缝的编码体系

引用《营造法式》中“缝”的概念(参见吴国源等人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):

  1. 槽缝CAO):空间限定线
  2. 间缝JIAN):面阔方向的分割线
  3. 栿缝FU):梁栿的定位线
  4. 槫缝TUAN):槫的定位线
  5. X 间缝TUANJIAN 等):构件之间的连接处,一般称为「X间缝」,如「槫间缝」
  6. 铺作缝PUZUO):斗栱的出跳方向
  7. 铺作出跳跳心缝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 外)

朝向与坐标约定(ADR-0007)

  • 坐北朝南:建筑正面朝南。方向字母以建筑自身为基准: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

构件位置:交点定位(V1)

构件的 instances[].axes一横一纵(如 ["CAO_Fo", "JIAN_L1"]),构件中心 = 两条缝的交点坐标。

不满足的实例在 resolver.resolve 时抛错并提示使用 instances 枚举。整排布置的紧凑写法(开放项)见 docs/adr/ADR-0004.md

数据层 JSON 映射

缝定义示例(data/axes.json):

{ "id": "CAO_Fo",  "kind": "CAO",  "distance": "2D", "note": "前槽缝(外)" }

构件实例示例(data/members/yanzhu.json):

{ "id": "yanzhu_01", "axes": ["CAO_Fo", "JIAN_L1"] }

构件 ID 命名

构件实例 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 永远接收纯数字。

间数生成柱网(G17)

输入「面阔 X 间,进深 Y 间」自动生成柱网缝位与檐柱实例(bridge/layout.py)。规律如下:

基本规律

  1. 间数 → 柱数:X 间 = X+1 根柱(每排);Y 间 = Y+1 排
  2. 奇数间限制:仅支持奇数间(3、5、7…)——奇数间才有「正中一间」(明间)作基准;输入偶数间报错
  3. 间宽递减:以明间宽 W 为基准,向两侧每出一间 ×0.8——次间 0.8W、梢间 0.64W,依此类推(第 k 间宽 = W·0.8^(k-1),明间 k=1)
  4. 柱位(距明间中线):第 1 对柱线 ±W/2;第 k 对(k≥2)= W/2 + W·(0.8 + 0.8² + … + 0.8^(k-1))
  5. 柱高:全柱等高,H = 0.8 × 明间宽(明间面阔的 0.8 倍;与间数、柱位无关)
  6. 柱径:1D 不变
  7. 面阔与进深独立:各自输入间数与明间宽(默认均 8D),互不影响

缝命名(生成布局)

奇数间布局中轴线落在明间中央(两柱之间),没有中柱,故无 JIAN_0

  • JIAN(面阔方向列缝):自明间向外编号 JIAN_L1..Ln / JIAN_R1..Rn,n=(X+1)/2;L=东、R=西(ADR-0007)
  • CAO(进深方向行缝):外圈檐柱行沿用 o 后缀 CAO_Fo/CAO_Bo(檐槽),内侧行自内向外编号 CAO_F1, F2… / CAO_B1, B2…(金槽)——与既有静态示例(进深 1 间 = 仅 Fo/Bo)兼容
  • 示例(面阔 3 间,明间 8D):JIAN_L1/R1 = ±4D(明间 8D)、JIAN_Lo/Ro = ±10.4D(次间 0.8×8D=6.4D,4+6.4=10.4);4 柱/排,柱高 H = 0.8×8D = 6.4D

遗留差异(待讨论)

静态示例 data/axes.json 为面阔 2 间(偶数,有中柱 JIAN_0)+ 进深 1 间(CAO_Fo/Bo), 早于本规律;生成布局仅支持奇数间,两套命名短期共存,是否统一(如 Fo→Fn 重编)记入 PROGRESS 开放问题。