- Code\rebar_pipeline, review_pipeline, pier-program을 정션에서 실제 폴더로 전환 - Code\rhino_mcp 및 CLAUDE_rhino배경.md 추가, .mcp.json은 PYTHONPATH로 새 위치 사용 - pier-program 내부 .git 제거(이력은 backup\pier-program_20261028.bundle에 보관) - worktree 가이드 반영(CLAUDE.local.md, HANDOFF.md) - D:\Rhino-MCP 경로 참조를 새 위치로 치환 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
51 lines
2.8 KiB
Python
51 lines
2.8 KiB
Python
"""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()
|