REF — 参照の診断
境界は空間のパスで相手を名指す。名指した先が存在しなければ、関係は成り立たない。REF はその一つだけの族である。
| コード | severity | 一文 |
|---|---|---|
| REF01 | error | 未定義の空間を参照しています |
コードの手に入れ方は診断を読むにある。
REF01 — 未定義の空間を参照しています
error
grid X 0 3600 7200
grid Y 0 4000
level L1 0 h:2400 slab:150
space /L1/a room X1..X2 Y1..Y2
boundary /L1/a /L1/zzz
References an undefined space: /L1/zzz
原因 — boundary に書いたパスに対応する space が無い。原因は三つのどれかである。
- パスの綴り違い。
/L1/bedと/L1/bedroomのような取り違え。 spaceの書き忘れ。境界だけ先に書いて、空間を書いていない。- 合成でそのレイヤーが読まれていない。別ファイルにあるはずの空間が、
importの抜けで入ってきていない。
直し方 — まずパスの綴りを確かめる。別ファイルにあるはずの空間なら、base 層に import があるかを見る。koyu check <entry> --json が返す file は合成に参加したレイヤーを指すので、意図したレイヤーが実際に読まれているかはそこで分かる。
注 — 順序の問題ではない。boundary は空間より前に書いてよい。境界は前方参照できるので、前後を入れ替えても直らない。前方参照できないのは grid と level の二つで、こちらは使用より前に宣言しないと効かない。
注 — 診断は両側のパスを持つ。path には ["/L1/a", "/L1/zzz"] のように境界の両端が入る。存在するほうも入っているのは、どの境界の話かを言うためである。両端とも未定義なら、一本の境界に対して REF01 が二件出る。
注 — 未定義の参照があると、その境界の形の検査には進まない。線分の導出も開口の配置も、相手の空間が無ければ意味を持たないからである。REF01 を直すと、隠れていた BND や OPN の診断が現れることがある。