Téléverser les fichiers vers "bimr"

This commit is contained in:
Milovann Yanatchkov 2026-03-18 14:27:52 +01:00
parent 47a52920b1
commit 06e5930ae2

38
bimr/curved.py Normal file
View file

@ -0,0 +1,38 @@
# BIMR example : curved.py
import random
random.seed(128)
# Control points
BASE = [(-1500,-300),(0,1000),(850,800),(300,0),(500,-800),(0,-1000),(-500,-800),(-300,0)]
N_LEVELS = 8
N_FRAMES = 40
FRAME_H = 180
FRAME_D = 35
FRAME_T = 10
SLAB_T = 150
LEVEL_H = FRAME_H + 2 * SLAB_T
for lvl in range(N_LEVELS):
z_bot = lvl * LEVEL_H
z_ceil = z_bot + FRAME_H + SLAB_T
pts_xy = [(bx + int(random.uniform(-150, 150)),
by + int(random.uniform(-150, 150)))
for bx, by in BASE]
c = Curve([Point(x, y, z_bot) for x, y in pts_xy])
# Floor slab
Slab(c, SLAB_T, z_bot)
# Facade frames
arc = CurveLen(c)
fw = max(50, min(300, int(arc / N_FRAMES)))
div = list(Divide(c, N_FRAMES))
for i, pt in enumerate(div):
nxt = div[(i + 1) % N_FRAMES]
Frame(pt, (nxt.x - pt.x, nxt.y - pt.y, 0), fw, FRAME_H, FRAME_D, FRAME_T)
# Ceiling slab
c_ceil = Curve([Point(x, y, z_ceil) for x, y in pts_xy])
Slab(c_ceil, SLAB_T, z_ceil)