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

grid — 通り芯

grid X 0 6400 12800 19200
grid Y 0 5600 7600 13200

grid <軸> <座標mm> <座標mm> ... は、軸上の通り芯の座標を並べる。この記法に座標の直書きは無い — 位置は常に通り芯の言葉で書かれるので、通り芯が無ければ領域も線も開口の位置も書けない。

軸は XY の二つだけである。X は東が正、Y は北が正で、高さ方向 (z) は軸ではなく level が持つ。

通り名は自動でつく

書くのは座標だけで、名は付けられない。grid X に並べた座標が西から順に X1 X2 X3 …、grid Y の座標が南から順に Y1 Y2 Y3 … になる。

grid X 0 6400 12800 19200
#      X1 X2   X3    X4

したがって通り名は軸と序数であって、図面の「通り符号」(A通り・1通り) ではない。符号を運びたいなら空間や境界の属性に書く。

X で始まる名は X 軸、Y で始まる名は Y 軸と読まれるので、参照に軸を書き添える必要は無い。序数は 1 から始まり、X0 は存在しない。

使用より前に宣言する

grid は、その通り名を使う行より前になければ効かない。通り参照はその行を読む時点で座標に解決されるので、後ろに置かれた grid は間に合わない。

level L1 0 h:2400 slab:150
space /L1/a room X1..X2 Y1..Y2
grid X 0 3600
grid Y 0 4000
✖ gridlate.muro:line 2: Undefined grid line name: X1

boundary が空間を前方参照できるのとは対照的である。境界が結ぶのはパスという名前だが、通り参照が指すのは座標そのものだからである。

軸ごとに一度だけ

grid Xgrid Y はそれぞれ一度しか宣言できない。合成しているときも層を跨いで一度で、二本目は同じ座標列でもエラーになる — 通り芯は建物全体で一つの座標系であり、後から足したり差し替えたりする対象ではない。

✖ n5.muro:line 2: grid X is declared once (in the base layer when composing)

座標の規則

規則エラー
軸は X / YA grid axis is X or Y: Z
座標は 2 つ以上grid takes two or more coordinates
昇順で書くgrid coordinates are written in ascending order (等値も不可)

座標は mm の数値で、負でもよい。原点をどこに置くかは自由で、polygon の頂点もの位置もこの同じ座標系で読まれる。

通り参照 — 位置の綴り方

宣言した通り名は、そのまま位置の語になる。

綴り意味
X2X2 通りの座標
X2+600X2 通りから東へ 600mm
Y3-150Y3 通りから南へ 150mm
X1..X2+3200範囲 (両端とも通り参照)

オフセットは整数のみである。X2+600.5 は通り名として読めずエラーになる。

✖ g1.muro:line 4: Undefined grid line name: X2+600.5

宣言していない通りを参照してもエラーになる (Undefined grid line name: Y3)。範囲・領域・線の端点・開口の絶対位置での使い方は 位置と領域 にまとめてある。

通り芯は描かれる線ではない

grid が置くのは座標であって、長さも端点も持たない。通り芯そのものが何かを分けることも無い — 空間を分けるのは空間の領域と境界である。

通り芯が形を生むのは一箇所だけで、がその交点に立つ。columnx: / y: は通り名 (x:X2,X3) で書く。

正準JSON

通り芯は座標の配列として出る。名は序数から決まるので保存されない。

$ npx tsx src/cli.ts json lv.muro
  "grid": {
    "X": [
      0,
      6000
    ],
    "Y": [
      0,
      8000
    ]
  },

最小の例

grid X 0 3600
grid Y 0 4000
level L1 0 h:2400 slab:150
space /L1/a room X1..X2 Y1..Y2
$ npx tsx src/cli.ts check min.muro
✔ Consistent — 1 space / 0 boundaries
  Structural consistency only — architectural validity is what koyu validate says, separately