メインコンテンツまでスキップ

SUF — 充足性

SUF は四つある。どれも「その値が正しいか」ではなく、「形を作るのに要る値が書かれているか」を言う。

コードseverity何を言うか
SUF01error天井高が決まらない — 天井も屋根も生成できない
SUF02error領域はあるがレベルが決まらない — 立体が一つも生成できない
SUF03warningレベルに slab: が無い — その階の床が一枚も生成されない
SUF04warning縦動線の宣言に対して形が一つも生成されない

形を作らないことと、形を作れないことは違う。koyu の導出の規則は決定的で、値が無いときに既定値を捏造しない — 天井高が書かれていなければ、勝手に 2400 を入れたりせず、天井を作らない。同じ構成からは常に同じ形が出る。だが形が痩せていることは知らされなければならない。SUF はそのための検査である。

妥当性の判定ではない。「その天井高でよいか」は言わない。「天井高が書かれていない」とだけ言う。

SUF01 — 天井高が決まりません

error

grid X 0 3600
grid Y 0 4000
level L1 0 slab:150
space /L1/a room X1..X2 Y1..Y2
The ceiling height of /L1/a cannot be determined (neither the space's h: nor level L1's h: is there)

原因 — 空間に h: が無く、その空間が載るレベルにも h: が無い。有効天井高が決まらない。

天井高は一つの数ではなく、多くのものが読む数である。決まらないと次が全部落ちる。

  • 天井が生成されない。天井は有効天井高が与えるものだから。
  • 屋根が生成されない。最上階の屋根の頂点は レベルの z + 有効天井高 + 200mm である。
  • 高さの不変量が立式できない。HGT01 が黙る — 階を貫く天井高が緑のまま通る。
  • そのレベルに上のレベルが無ければ、階高が決まらない。壁と柱は階高いっぱいに立つ。上にレベルがあれば階高は z の差だが、最上階の階高は「そのレベルの h: と、そこに載る空間の有効天井高のうち最も高いもの + 200mm」で決まる。天井高が一件も決まらなければこの数が無く、そのレベルには壁も柱も一つも立たない

最後の一点は目に見える。上の四行のファイル (最上階しか無い) に外壁と柱を足しても、立体は一つも出ない。上に level L2 3000 h:2400 slab:150 を足すと、h: を一つも書かないまま壁と柱が立つ — 階高が z の差から決まるからである。

咎めないものが三つある。この三つは天井高に依らずに形が決まる。

  • 吹抜け (type:void) — 床も天井も無いことが定義である
  • 外部 (type:exterior) — 地面である
  • 半屋外 — 外部に type:openair:1 で接する領域つき空間。バルコニーに天井高は無い

直し方 — レベルに基準天井高を書く。

grid X 0 3600
grid Y 0 4000
level L1 0 h:2400 slab:150
space /L1/a room X1..X2 Y1..Y2

個別に違う室だけ、空間側に書く (space /L1/a room X1..X2 Y1..Y2 h:2700)。空間の h がレベルの h に勝つ。

SUF02 — レベルが特定できません

error

grid X 0 3600
grid Y 0 4000
level L1 0 h:2400 slab:150
space /house/a room X1..X2 Y1..Y2
/house/a has a region, but its level cannot be determined (give it at the head of the path or with level:)

原因 — 空間がレベルに載るのは、次のどちらかのときである。

  • パスの先頭セグメントが、宣言済みのレベル名と一致する (/L1/a に対して level L1 0)
  • level: 属性を持つ (space /house/a room X1..X2 Y1..Y2 level:L1)

上の例はパスを集計の階層 (/house/…) で切っているので、先頭セグメント house はレベル名ではない。

逆向きの取り違えのほうが多い。/L1/a と書いていてこれが出るなら、level L1 0 の行が無い。パスに /L1/ と書いただけではレベルは宣言されない。

なぜエラーか — z が決まらないので、この空間からは立体が一つも生成されない。床も天井も屋根も壁も無く、平面図にも現れない。koyu plan がそのレベルに領域を持つ空間が無いと言って落ちるのは、この状態である。

直し方 — 二つのどちらかである。

grid X 0 3600
grid Y 0 4000
level L1 0 h:2400 slab:150
space /house/a room X1..X2 Y1..Y2 level:L1

集計の階層でパスを切りたい (住戸・棟・用途で束ねたい) ならこちら。パスの先頭でレベルを言いたいなら、level L1 0 h:2400 slab:150 の行を base 層に足して space /L1/a … と書く。

SUF03 — slab が無く、床が生成されません

warning

grid X 0 3600
grid Y 0 4000
level L1 0 h:2400
space /L1/a room X1..X2 Y1..Y2
Level L1 has no slab:, so not one floor is generated on this storey

原因 — 床を与えるのは levelslab: (床組み厚 — スラブ + 懐 + 仕上) だけである。床を置く操作は無く、slab: を書いたことが床を宣言したことである。書かなければ、その階に床は一枚も生成されない。

巻き添えがある。高さの不変量 は上階の slab が無いと立式できないので、slab: を書き忘れた階のの階も検査されなくなる。SUF03 を無視すると HGT01 が黙る。

なぜ警告どまりか — 形そのものは定まっているからである。「slab が無ければ床要素を作らない」は決定的な規則であって、同じ構成から複数の形が出るわけではない。ただし床の無い建物になることは知らされるべきである

直し方 — レベルに slab: を書く。

grid X 0 3600
grid Y 0 4000
level L1 0 h:2400 slab:150
space /L1/a room X1..X2 Y1..Y2

出ない場合がある。床を持ちうる空間 (void でも exterior でもない領域つき空間) がそのレベルに一つも載っていなければ、SUF03 は出ない。最上階の上限を与えるためだけの屋上レベル (level R 5800 slab:500) がまさにそれで、生成されなかった床が無いのだから言うことも無い。

SUF04 — 上にレベルが無いため形が生成されません

warning

grid X 0 3000 6000
grid Y 0 6000
level L1 0 h:2700 slab:300
level L2 3000 h:2700 slab:300
space /L1/a room X1..X2 Y1..Y2
space /L2/s stair X1..X2 Y1..Y2 stair:N
No level sits above L2, so no form is generated for /L2/s

原因 — 縦動線の形は「自レベルの床上面から次のレベルの床上面まで」で決まる。最上階の階段には上る先が無いので、段は一段も生成されない。その階の平面には、下階から上ってくる走りだけが現れる。宣言はあるのに形が無い、という充足性の話である。

昇降機 (lift:) は例外で、SUF04 の対象にならない — 形が段割りではないからである。

直し方 — 屋上へ抜ける階段なら、屋根面を level R として宣言する。

grid X 0 3000 6000
grid Y 0 6000
level L1 0 h:2700 slab:300
level L2 3000 h:2700 slab:300
level R 6000 slab:300
space /L1/a room X1..X2 Y1..Y2
space /L2/s stair X1..X2 Y1..Y2 stair:N

抜けないなら、その階の宣言を外す。

関連