- 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>
77 lines
9.5 KiB
Python
77 lines
9.5 KiB
Python
import json, os
|
||
SCR = r"C:\Users\User\AppData\Local\Temp\claude\D--Rhino-MCP-rhino-mcp-main\f46b47bc-9105-4079-9b62-fcbee31b26ae\scratchpad"
|
||
EX = json.load(open(r"D:\★Pier 자료\심수석님 검토 파일\검토_산외교P1\추출데이터\재료표_대조결과.json", encoding="utf-8"))
|
||
IM = json.load(open(SCR + r"\sw_images.json", encoding="utf-8"))
|
||
DIM = ["A", "B", "C", "D", "E", "R", "X1", "X2", "X3", "X4", "J"]
|
||
V = {}
|
||
for mk in ("C1", "C2", "C3", "C4"):
|
||
V[mk] = ("차이", "[M-1] 일부 철근 A 가 단일값보다 짧음. [M-2] J 1.560 은 모델 형상에 없음 (L 에만 포함).", "도면↔모델")
|
||
for mk in ("C5", "C6"):
|
||
V[mk] = ("차이", "[M-1] 일부 철근 B·D 가 4.018/4.016 보다 짧음(3.580~). [M-2] J 0.940 은 모델 형상에 없음.", "도면↔모델")
|
||
for mk in ("C7", "C8", "C9"):
|
||
V[mk] = ("차이", "[M-3] 재료표 A·C·L 대푯값(가산 포함) ↔ 모델 철근별 작도값. [M-2] C 660×2 는 폐합 형상에 없음. [M-7] H22 굽힘 내면지름 76.8 < 77.7.", "도면↔모델")
|
||
V["C10"] = ("차이", "[M-3] B = 모델 +99(일치). [M-4] A 최대 9.570 ↔ 모델 8.687 (대응 철근 없음). [M-2] J 0.660 형상에 없음. [M-7] H22.", "도면↔모델")
|
||
V["C11"] = ("일치 (가산 규칙)", "[M-3] A = 모델 +44 (일치). B 165 는 모델에서 정의 불가(미추출).", "일치")
|
||
V["C12"] = ("차이 (J)", "[M-3] A·B = 모델 +54/+99 (일치). [M-2] J 0.660 은 형상에 없음.", "도면↔모델")
|
||
V["C13"] = ("차이 (J)", "[M-3] A = 모델 +44 (일치). B 165 미추출. [M-2] J 0.660 은 형상에 없음.", "도면↔모델")
|
||
V["C14"] = ("차이", "[M-1] 재료표 A 3.000 단일 ↔ 모델 일부 2.633~2.892 (짧음).", "도면↔모델")
|
||
V["C15"] = ("차이", "[M-1] 재료표 A 4.500 단일 ↔ 모델 4.118/4.489/4.517. [M-7] H22 굽힘 내면지름.", "도면↔모델")
|
||
V["P5"] = ("일치", "A 2.295 · B 150 일치. [M-7] H19 굽힘 내면지름 66.5 < 66.85 (0.35 mm 부족).", "일치")
|
||
V["P2"] = ("미확인", "A·B·J 는 모델에서 정의 불가(미추출). R 1.149 일치. 반링 2조각(140개) = 1본 → 70 으로 환산.", "미확인")
|
||
V["P3"] = ("일치 (각도 미확인)", "A·B·R 일치(반원 2조각 = 1본 환산). [M-8] 이음 각도 도면에 없음.", "미확인")
|
||
V["P4"] = ("일치 (각도 미확인)", "A·B·R 일치. [M-8] 커플러 각도 도면에 없음.", "미확인")
|
||
V["B7"] = ("일치", "길이·본수 일치.", "일치")
|
||
for mk in ("S1", "S2", "S3", "S4", "B1", "B3", "B4", "B6", "B9", "B10"):
|
||
V[mk] = ("일치", "치수·길이·본수 일치.", "일치")
|
||
V["B2"] = ("차이 (J)", "[M-2] J 1.000 은 모델 형상에 없음 (중심선 11.758 < L 12.800). [M-7] H22 굽힘 내면지름.", "도면↔모델")
|
||
V["B5"] = V["B2"]
|
||
V["B8"] = ("차이", "[M-5] 모델 정사각 7.345×7.345 ↔ A 7.300 · B 7.350. [M-2] J 0.570 은 형상에 없음.", "도면↔모델")
|
||
V["P1"] = ("차이", "R 340 · A 27.510 · B 534 · C 500 일치. [M-6] 도면 표의 주철근 커플러 476개가 모델에 없음 (연속 28.545 m).", "도면↔모델")
|
||
rows = []
|
||
n = 0
|
||
for tab in ("SD400", "SD500"):
|
||
for e in EX[tab]:
|
||
if e["kind"] != "bar":
|
||
continue
|
||
mk = e["mark"]
|
||
n += 1
|
||
d = e["d"]
|
||
m = e["m"]
|
||
detail = " ".join("%s=%s" % (k, d[k]) for k in DIM if d.get(k))
|
||
mdl = "N %s · L %s m · 총 %s m" % (m.get("n"), m.get("L"), m.get("tot"))
|
||
mdims = " ".join("%s=%s" % (k, m[k]) for k in DIM if m.get(k))
|
||
if mdims:
|
||
mdl += " · " + mdims
|
||
verdict, note, kind = V[mk]
|
||
rows.append(dict(no=str(n), mark=mk, item="형상·길이·본수 (%s)" % d["dia"], table="L %s × N %s = %s m" % (d["L"], d["n"], d["tot"]), detail=detail or "-", model=mdl, verdict=verdict, note=note, kind=kind))
|
||
items = [
|
||
dict(code="M-1", mark="C1~C6, C14, C15", content="일부 철근이 재료표 단일값보다 짧음 (모델은 철근마다 개별 길이)", cmp="재료표 ↔ 모델", diff="C1 A 8.462~9.259, C5 B 3.580~4.018, C14 A 2.633~3.000, C15 A 4.118~4.517", drawing_side="마크당 값 하나 (13본 동일 표기)", action="코핑 형상에 맞춘 의도된 단축인지 확인", kind="도면↔모델", image=IM["M-1"]),
|
||
dict(code="M-2", mark="C1~C13, P2, B2, B5, B8", content="J·C 길이가 재료표 L 에만 있고 모델 형상에는 없음", cmp="재료표 L = A+B+C+J ↔ 모델 J 제외", diff="C1~C4 J 1.560, C5·C6 0.940, C7~C9 C 660×2, C10·C12·C13 0.660, P2 0.380, B2·B5 1.000, B8 0.570", drawing_side="J 는 표 열 / 형상 III 의 작은 박스, 작도 위치 없음", action="형상에 넣을지 가산 길이로만 둘지 판단", kind="도면↔모델", image=IM["M-2"]),
|
||
dict(code="M-3", mark="C7~C13", content="치수 가산(+54/+44/+99) 산식: 재료표 대푯값·가산값 ↔ 모델 작도값", cmp="재료표 ↔ 모델", diff="C7~C9 L 평균 -0.027/-0.018/-0.027 m, C11~C13 은 가산 규칙으로 일치", drawing_side="NOTE: a=(1.250×2ea+2.000×1ea)/3ea + 주철근D + 수직스터럽D", action="가산 규칙의 적용 범위 확인 (운곡교 M-5 와 같은 유형)", kind="도면↔모델", image=IM["M-3"]),
|
||
dict(code="M-4", mark="C10", content="재료표 A 최대 9.570 에 대응하는 철근이 모델에 없음", cmp="재료표 ↔ 모델", diff="모델 최대 8.687, 설계길이 합 -6.178 m", drawing_side="A 9.570~3.393 (7본)", action="최대 폭 9.570 루프 존재 여부 확인", kind="도면↔모델", image=IM["M-4"]),
|
||
dict(code="M-5", mark="B8", content="모델 정사각 7.345×7.345 ↔ 재료표 A 7.300 · B 7.350", cmp="재료표 ↔ 모델", diff="A -45 / B +5 mm", drawing_side="L 31.581 = 2A+2B+4J", action="어느 값이 맞는지 확인", kind="도면↔모델", image=IM["M-5"]),
|
||
dict(code="M-6", mark="P1", content="주철근 커플러 476개(H32)가 모델에 없음 — P1 은 연속 28.545 m", cmp="커플러 표 ↔ 모델", diff="476개 (68본×7 추정)", drawing_side="재료표 아래 커플러 규격 표에 주철근 476 · 띠철근 49", action="커플러 위치·개수 모델 반영 여부 판단", kind="도면↔모델", image=IM["M-6"]),
|
||
dict(code="M-7", mark="B2, B5, C7~C10, C15, P5", content="굽힘 내면지름: H22 76.8 < 77.7, H19 66.5 < 66.85 (3.5db)", cmp="KDS 24 14 21 표 4.5-1 ↔ 모델", diff="0.9 / 0.35 mm 부족", drawing_side="도면에 내면반지름 표기 없음", action="모델 R 을 KDS 기준으로 키울지 결정", kind="기준↔모델", image=IM["M-7"]),
|
||
dict(code="M-8", mark="P3, P4", content="링 이음(커플러) 각도 도면에 기준 없음 (모델 90°/270° 가정)", cmp="도면 없음 ↔ 모델 가정", diff="-", drawing_side="형상 V·X 도해에 COUPLER 위치만", action="각도 기준 확인 (설계자)", kind="미확인", image=IM["M-8"]),
|
||
]
|
||
cfg = dict(bridge="산외교(울산) P1", title="산외교(울산) P1 철근 도면 ↔ 모델 일치 검토 (불일치 종류별 분류)",
|
||
purpose="목적: 도면(재료표·형상 도해)과 라이노 모델이 일치하는지가 최우선. 범위는 모델↔도면 (도면 내부 불일치는 따로 보관). 작성 2026-10-19, 검토 미확정 초안. 기준: KDS 24 14 21.",
|
||
sheet1_desc="도면에 기준이 있거나 없는데 모델이 다르게 만들어진 항목 (M-n). 캡처: 위 도면(형상 도해·재료표) / 아래 모델(라이노).",
|
||
items=items, rows=rows,
|
||
unchecked=[
|
||
dict(item="코핑·기둥·기초 철근 위치", content="정면도·단면도의 철근 높이·간격·피복(점 좌표)과 모델 위치 대조", note="재료표·형상(길이·본수·치수) 대조만 완료", status="미검토"),
|
||
dict(item="받침 세트", content="받침대좌·패드·교량받침·솔플레이트 (일반도 표) 모델 대조", note="선행 보고서 G5 75/75 PASS (표 값 기준)", status="미검토"),
|
||
dict(item="코핑 철근 간 간섭", content="철근끼리 교차·관통", note="사용자 지시로 제외 (검토 단계)", status="제외"),
|
||
dict(item="형식 V·X 의 사각 치수", content="B8(형식 V)은 도해가 원형 링인데 재료표는 사각 A·B — 형상 정의가 불분명", note="도면으로 확인 불가", status="확인 불가"),
|
||
],
|
||
basis=[
|
||
dict(item="입력 파일", content="모델: 산외교P1 G5.3dm (원본 그대로), 도면: 교각배근도(울산P1)_2016.10.28.dwg → .dxf (라이노 변환)"),
|
||
dict(item="재료표", content="DXF 레이어 CS-TABL-TEX2 글자를 x(열)·y(행)로 읽음. 열: 번호 97922 · 형식 98653 · 직경 99384 · 개수 100115 · A 101099 · B 102337 · C 103575 · D 104813 · E 106051 · R 107162 · X1~X4 107957~109772 · J 110566 · L 112234 · 총길이 113472"),
|
||
dict(item="모델 치수", content="중심선(P1-RC-*)의 직선 구간을 연장한 꼭짓점 사이 거리(각진 치수). R 이 있는 형상(P1·C12)은 접선 직선 길이, P3·P4 는 호 길이. P2·P3 는 반원 2조각 = 1본 환산"),
|
||
dict(item="길이 비교", content="모델 철근의 설계길이(user string design_length + coupler_length)와 재료표 L·총길이를 대조. 중심선 실길이가 L 보다 3% 이상 짧은 마크는 J 등 미작도로 기록"),
|
||
dict(item="KDS 계산", content="내면지름 = 2×(중심선 R − 공칭 db/2). H22 R 49.5 → 76.8, H19 42.8 → 66.5 (기준 3.5db 77.7 / 66.85), H32 72 → 112.2, H16 24 → 32.1, H13 19.5 → 26.3 (기준 2db)"),
|
||
dict(item="가산 규칙", content="C10~C13 재료표 치수 = 모델 작도값 + 54(A, C10·C12) / +99(B) / +44(C11·C13 A) — 재료표 NOTE 의 '주철근D + 수직스터럽D' 산식과 연결"),
|
||
])
|
||
json.dump(cfg, open(SCR + r"\sw_cfg.json", "w", encoding="utf-8"), ensure_ascii=False, indent=1)
|
||
print(len(rows))
|