"""Coping rebar C1-C11 (1st batch) -> params.json `coping_rebar` (existing keys unchanged). All values are read from D1 front view / section A-A and the D3 schedule during Task 코핑철근모델링 (판독서 DOC/02_분석/분석_운곡교P1코핑철근판독_2026-10-07_v0.1.01.md). HITL 2026-10-07: batch C1-C11, stirrup widths as drawn in section A-A (K1), alternation starts with cycle (1) marks at Y=-1450 (K5). Model axes: X transverse (front view), Y longitudinal (width 3,100), Z absolute EL x 1000. """ import json from pathlib import Path HERE = Path(__file__).resolve().parent Y_CHAIN = [100, 237] + [237 + 125 * k for k in range(1, 22)] + [3000] # A-A '100','137','21@125','138','100' coping = dict( _note="1st batch C1-C11; C12-C16, S1, S2 pending (OPEN)", y_positions=[y - 1550 for y in Y_CHAIN], top=dict( tiers={"1": dict(z=43311, marks=["C1", "C4"], a=11855, legs=[1319, 1315]), "2": dict(z=43211, marks=["C2", "C5"], a=11880, legs=[101, 101]), "3": dict(z=43111, marks=["C3", "C6"], a=11904, legs=[101, 101])}, src="D1 정면도 수평선 43,311/43,211/43,111 (반길이 5,942/5,953/5,964), A-A 3단 24곳; a 증가 순서로 단 배정 [추론]; " "다리는 선단 경사면과 평행 (x1 98 좌, x2 96 우)"), bottom=dict(marks=["C7", "C8"], z_flat=40511, half_flat=1073.9, R_offset=12100, arc_len=5273, leg=650, src="D1 정면도 40,511 (X 0~1,074) = 하면 100 위; 곡선부 = 하면 원호와 동심 R 12,100; " "arc_len = (13,994 - 2,148 - 2x650)/2; 끝 다리 650은 선단 경사면 평행"), stirrups=dict( loops_y=[[100 - 1550, 1260 - 1550], [680 - 1550, 2420 - 1550], [1840 - 1550, 3000 - 1550]], x_c10=[0, 300, -300, 600, -600, 900, -900], x_c11=[1150 + 250 * i for i in range(20)], x_c9=[-(1150 + 250 * i) for i in range(20)], bottom="z=40,511 for |X|<=1,073.9 else circle R 12,100 about (+-6,951.9, 29,934.6)", top_right={"X<3900": 43454.7, "X>=3900": 43598.4}, top_left_inferred={"|X|<1296": 43455, "1296<=|X|<3801": 43383, "|X|>=3801": 43311}, b_offset=54.3, a_sched=1407, c_sched=750, src="D1 정면도 수직선 (우측 절반), A-A 다리 Y 100/680/1,260/1,840/2,420/3,000; 높이 + 54.3 = 재료표 b " "(C10 2,998, C11 최소 1,664로 확인); 좌측 상단은 소단 - 100 [추론] (C9 최소 1,376과 일치); " "재료표 L = 2a + 2b + 2c, 변길이는 b = (최대+최소)/2"), ) def main(): pp = HERE / "params.json" params = json.loads(pp.read_text(encoding="utf-8")) params["coping_rebar"] = coping pp.write_text(json.dumps(params, ensure_ascii=False, indent=2), encoding="utf-8") print(len(coping["y_positions"]), coping["y_positions"][:3], coping["y_positions"][-2:]) if __name__ == "__main__": main()