Day 16
(2)
レンガを積み上げる
#pattern#grid#transform#structure

✅ Inputs
- brick_w: float – レンガの幅(X方向)
- brick_h: float – レンガの高さ(Z方向)
- brick_d: float – レンガの奥行き(Y方向)
- num_x: int – X方向のレンガ数
- num_z: int – Z方向の段数
- gap_x: float – レンガ間のX方向隙間(横の目地)
- gap_z: float – レンガ間のZ方向隙間(縦の目地)
✅ Outputs
- results: list of Box – レンガブロックの集合体
✅ Code
import Rhino.Geometry as rg
# === 🔧 パラメータ例 ===
# brick_w = 200.0 # レンガの幅(X方向)
# brick_h = 60.0 # レンガの高さ(Z方向)
# brick_d = 100.0 # レンガの奥行き(Y方向)
# num_x = 20 # X方向のレンガ数
# num_z = 40 # Z方向の段数
# gap_x = 4.0 # レンガ間のX方向隙間(横の目地)
# gap_z = 4.0 # レンガ間のZ方向隙間(縦の目地)
# === 🧱 レンガ配置処理 ===
results = []
for z in range(num_z):
z_pos = z * (brick_h + gap_z)
is_odd = z % 2 == 1
x_offset = - (brick_w + gap_x) / 2 if is_odd else 0
for x in range(num_x):
x_pos = x * (brick_w + gap_x) + x_offset
base_pt = rg.Point3d(x_pos, 0, z_pos)
box = rg.Box(
rg.Plane(base_pt, rg.Vector3d.XAxis, rg.Vector3d.YAxis),
rg.Interval(0, brick_w),
rg.Interval(0, brick_d),
rg.Interval(0, brick_h)
)
results.append(box)