Files
Pier_v1/Code/교각모델링/extract_coping_rebar.py
T
ahnyongjooandClaude Sonnet 5.5 964a841de1 chore(rebar): Pier_T_rebar 작업 폴더 초기 구성 및 외부 의존 파일 통합
- 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>
2026-10-28 11:20:18 +09:00

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()