- 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>
181 lines
21 KiB
Python
181 lines
21 KiB
Python
import json, re, os
|
||
SCR = r"C:\Users\User\AppData\Local\Temp\claude\D--Rhino-MCP-rhino-mcp-main\f46b47bc-9105-4079-9b62-fcbee31b26ae\scratchpad"
|
||
tab = json.load(open(SCR + r"\ok_table.json", encoding="utf-8"))
|
||
S = json.load(open(SCR + r"\ok_shapes.json", encoding="utf-8"))
|
||
Mo = json.load(open(SCR + r"\ok_model_dims.json", encoding="utf-8"))
|
||
IM = json.load(open(SCR + r"\ok_images.json", encoding="utf-8"))
|
||
_t = {}
|
||
for k, v in tab.items():
|
||
_t[k] = v
|
||
if k == "S4":
|
||
_t["UM"] = {"dia": "H22", "L": 4504.0, "n": 92, "tot": 414.368}
|
||
tab = _t
|
||
D = {}
|
||
for e in S:
|
||
D.setdefault(e["mark"], e)
|
||
|
||
HALF = ("P3", "P4")
|
||
J = {"C1": "1.510", "C2": "1.510", "C3": "1.510", "C4": "1.510", "C5": "1.510", "C6": "1.510", "C7": "1.050",
|
||
"B1": "1.530", "B2": "1.070", "B3": "1.530", "B4": "1.070", "B5": "1.530", "B6": "1.070", "B7": "1.530", "B8": "1.070",
|
||
"B10": "0.560×6", "B11": "0.560", "B12": "0.560", "C14": "0.550×4", "C16": "0.550×4", "C17": "0.550"}
|
||
KDS = {"C8": "H25", "C9": "H25", "C10": "H25", "C11": "H25", "C12": "H25", "C13": "H25", "C14": "H22", "C16": "H22",
|
||
"B9": "H19", "B10": "H19", "B11": "H19", "B12": "H19", "C18": "H19", "C19": "H19", "C20": "H19", "S1": "H19", "S2": "H19"}
|
||
KDS_TXT = {"H25": "[M-7] H25 굽힘 내면지름 87.0 < 3.5db 88.9 (1.9 mm 부족).", "H22": "[M-7] H22 굽힘 내면지름 76.8 < 77.7 (0.9 mm 부족).",
|
||
"H19": "[M-7] H19 굽힘 내면지름 66.5 < 66.85 (0.35 mm 부족)."}
|
||
V = {}
|
||
for mk in ("C1", "C2", "C3", "C4", "C5", "C6"):
|
||
d = {"C1": "-19.630", "C2": "-19.630", "C3": "-19.630", "C4": "-18.120", "C5": "-18.120", "C6": "-18.120"}[mk]
|
||
V[mk] = ("차이 (j)", "[M-2] 모델 설계길이 = a+b+c (재료표 L 은 j 1.510 포함). 모델 총길이 %s m." % d, "도면↔모델")
|
||
V["C7"] = ("차이", "[M-3] 바깥 2본(y ±1525) 형상 다름(a·e 606 없음, b·d 4.309). [M-2] j 1.050 제외. 모델 총길이 -17.940 m.", "도면↔모델")
|
||
for mk in ("B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8"):
|
||
V[mk] = ("일치 (j 형상 없음)", "a·b 일치, 설계길이 = 재료표 L. [M-2] j %s 는 모델 형상에 없음." % J[mk], "도면↔모델")
|
||
V["B9"] = ("일치 (경미)", "철근상세 a 586~548 범위 ↔ 모델 567 단일 (재료표 L 4.763 은 567 기준). 길이·본수 일치.", "일치")
|
||
V["B10"] = ("일치 (경미)", "a·b 9.448 ↔ 모델 9.445 (3 mm). [M-2] j 0.560×6 은 모델 형상에 없음.", "도면↔모델")
|
||
V["B11"] = ("일치 (j 형상 없음)", "a·b 일치. [M-2] j 0.560 은 모델 형상에 없음.", "도면↔모델")
|
||
V["B12"] = V["B11"]
|
||
for mk in ("C8", "C9", "C10", "C11", "C12", "C13"):
|
||
V[mk] = ("차이", ("[M-11] 오각형 스터럽 모따기 d 가 도면보다 33~43 mm 큼. " if mk in ("C9", "C11", "C13") else "") + "[M-10] 코핑 스터럽 상·하단이 도면 선보다 22.5 mm씩 더 나감. [M-4] 철근상세 a·c(630)·d 가 모델 폐합 형상과 다름, 재료표 L 은 b 평균 기준, 모델은 철근마다 b 가 달라 길이 개별.", "도면↔모델")
|
||
V["C14"] = ("차이", "[M-5] a 도면 10.475~3.496 = 모델 +54, b 3.207 단일 ↔ 모델 변화. [M-2] j 0.550×4 는 형상에 없음.", "도면↔모델")
|
||
V["C16"] = ("차이", "[M-5] a 11.804 = 모델 11.750 +54, b 3.207 ↔ 모델 3.160. [M-2] j 0.550×4 는 형상에 없음.", "도면↔모델")
|
||
V["C15"] = ("차이", "[M-5] 모델 직선 3.442~10.421, 도면 b 188 · c 140 끝 갈고리 없음.", "도면↔모델")
|
||
V["C17"] = ("차이", "[M-5] 모델 직선 11.750, 도면 a 11.794 · b 188 · c 140 갈고리 없음. j 0.550 형상 없음.", "도면↔모델")
|
||
V["C18"] = ("차이", "[M-6] 도면 a 3.050 단일 ↔ 모델 a 3.207/3.126/2.565 (총길이 +14.302 m).", "도면↔모델")
|
||
V["C19"] = ("일치", "a 2.226 · b 370 일치.", "일치")
|
||
V["C20"] = ("일치 (경미)", "a 2.721~2.472 범위가 모델과 일치, 평균 3.008 ↔ 재료표 L 2.967 (총길이 +3.095 m).", "일치")
|
||
V["P1"] = ("일치", "a 8.313 · b 424(호) · c 500 · r 270 일치.", "일치")
|
||
V["P2"] = V["P1"]
|
||
V["P3"] = ("일치 (각도 미확인)", "a 3.533 일치(호 3532.8, 반원 2조각 = 1본 환산). b 80 끝 연장은 모델 형상에 없음 (형상 합 7065.6 + 160 = 설계길이 7226, [M-2] 유형). [M-8] 이음 각도 도면에 없음.", "미확인")
|
||
V["P4"] = ("일치 (각도 미확인)", "a 3.538 일치(호 3538.4, 반원 2조각 = 1본 환산). b 65 끝 연장은 모델 형상에 없음 (형상 합 7076.8 + 129 = 설계길이 7206, [M-2] 유형). [M-8] 이음 각도 도면에 없음.", "미확인")
|
||
V["P5"] = ("차이 (c, d)", "a 160 · b 2.341 일치. 끝 c 도면 141 ↔ 모델 150 (+9), d 80 은 모델 형상에 없음 (모델: 90°·135° 갈고리 R24 호). 도면 c·d 정의 확인 필요.", "도면↔모델")
|
||
V["S1"] = ("일치", "a 2.629 · b 700 일치.", "일치")
|
||
V["S2"] = ("일치", "a 1.262 · b 700 일치.", "일치")
|
||
for mk in ("S3", "S4", "S5", "S6", "S7", "S8"):
|
||
V[mk] = ("일치", "길이·본수 일치.", "일치")
|
||
V["UM"] = ("모델 없음", "[M-1] 기초 조립용 철근. 모델에 0본.", "도면↔모델")
|
||
|
||
|
||
M9 = {"B5": "상면 122.5 (도면 100, +22.5)", "B6": "상면 77.5 (-22.5) · 하면 172.5 (도면 150, +22.5)", "B7": "상면 122.5 (도면 100, +22.5)", "B8": "상면 77.5 (-22.5) · 하면 172.5 (+22.5)"}
|
||
for mk, t in M9.items():
|
||
v, n_, k_ = V[mk]
|
||
V[mk] = ("차이 (높이)", n_ + " [M-9] 철근 중심 높이가 도면 철근선과 다름: " + t + ".", "도면↔모델")
|
||
for mk, t in (("B1", "상면 100"), ("B3", "상면 100"), ("B2", "하면 150"), ("B4", "하면 150")):
|
||
v, n_, k_ = V[mk]
|
||
V[mk] = (v, n_ + " 기초 중심 높이는 도면 선과 일치(" + t + ").", k_)
|
||
|
||
def m3(x):
|
||
return "%.3f" % (x / 1000.0)
|
||
|
||
|
||
rows = []
|
||
last_dia = None
|
||
n = 0
|
||
tot_t = 0.0
|
||
tot_m = 0.0
|
||
for mk, t in tab.items():
|
||
n += 1
|
||
verdict, note, kind = V[mk]
|
||
if mk in KDS:
|
||
note = note + " " + KDS_TXT[KDS[mk]]
|
||
m = Mo.get(mk)
|
||
d = D.get(mk)
|
||
dd = list(d["dims"]) if d else []
|
||
if mk in ("C1", "C2", "C3", "C4", "C5", "C6", "C8", "C10", "C12"):
|
||
dd = [x for x in dd if not x.startswith("r=")]
|
||
if mk == "C7" and d:
|
||
dd += d["dims2"]
|
||
detail = " ".join(dd) if d and dd else ("(철근상세 치수 없음: 직선)" if mk in ("S3", "S4", "S7", "S8") else "-")
|
||
if mk == "UM" and d:
|
||
detail = " ".join(d["dims"])
|
||
if m:
|
||
k = 2 if mk in HALF else 1
|
||
cnt = m["n"] // k
|
||
dl = [x * k for x in m["dl"]]
|
||
mean = sum(dl) / len(dl)
|
||
tot = sum(dl) / 1000.0 / k
|
||
tot = sum(m["dl"]) / 1000.0
|
||
model = "N %d · 설계길이 %s m" % (cnt, m3(mean)) if min(dl) == max(dl) else "N %d · 설계길이 %s~%s m (평균 %s)" % (cnt, m3(min(dl)), m3(max(dl)), m3(mean))
|
||
model += " · 총 %.3f m" % tot
|
||
vals = m["values"]
|
||
if mk not in HALF and vals:
|
||
sv = [str(int(x)) for x in vals[:6]]
|
||
model += " · 꼭짓점 치수 " + "/".join(sv) + ("…" if len(vals) > 6 else "")
|
||
tot_m += tot
|
||
else:
|
||
model = "모델 없음 (0본)"
|
||
tot_t += t["tot"]
|
||
if t["dia"] not in ('"', None):
|
||
last_dia = t["dia"]
|
||
dia = Mo[mk]["dia"] if mk in Mo else last_dia
|
||
table = "L %s × N %d = %.3f m" % (m3(t["L"]), t["n"], t["tot"])
|
||
rows.append(dict(no=str(n), mark=mk, item="형상·길이·본수 (%s)" % dia, table=table, detail=detail, model=model, verdict=verdict, note=note, kind=kind))
|
||
|
||
items = [
|
||
dict(code="M-1", mark="UM", content="UM(H22, 기초 조립용 철근) 92본 모델에 없음", cmp="재료표·철근상세 ↔ 모델", diff="L 4.504 m × 92본 = 414.368 m 누락", drawing_side="상세·재료표에 있음 (a 200 · b 1.952 · c 200, 70° 사각 설치). 배치 위치·간격은 예시도뿐", action="모델에 넣을지 판단 필요 (운곡교 UA1 과 같은 유형)", kind="도면↔모델", image=IM["M-1"]),
|
||
dict(code="M-2", mark="C1~C7, B1~B8, B10~B12, C14·C16·C17", content="j(겹침) 길이가 재료표 L 에만 있고 모델 형상에는 없음. C1~C7 은 모델 설계길이에도 j 제외", cmp="재료표 L = a+b+c+j ↔ 모델 a+b+c", diff="C1~C6 총길이 -113.25 m, C7 -17.94 m. 그 외 마크는 설계길이 포함, 형상에서만 j 만큼 짧음(합 약 600 m)", drawing_side="j 는 상세의 작은 박스로만 표시, 작도 위치 없음", action="형상에 넣을지 가산 길이로만 둘지 판단. C1~C7 만 설계길이에서 j 가 빠진 점 확인", kind="도면↔모델", image=IM["M-2"]),
|
||
dict(code="M-3", mark="C7", content="C7 바깥 2본(y ±1525) 형상이 도면(13본 동일)과 다름", cmp="철근상세 C7 ↔ 모델", diff="a·e 606 없음, b·d 4.309 (도면 4.774), 길이 11.280 (나머지 13.424)", drawing_side="N=13 에 형상 하나, L 14.474", action="바깥 2본을 도면 형상대로 맞출지, 의도된 단축인지 확인", kind="도면↔모델", image=IM["M-3"]),
|
||
dict(code="M-4", mark="C8~C13", content="스터럽 폭 a(2.057 ↔ 2.103)와 끝 길이 c 630 이 모델 폐합 형상과 다름", cmp="철근상세 ↔ 모델", diff="총길이 C8 -40.8, C9 -86.6, C10 -30.6, C11 -24.4, C12 -41.8, C13 -35.0 m (합 -259 m)", drawing_side="재료표 L 은 b 범위 평균 기준(예 C8 9.570 = 2×2.057 + 2×2.098 + 2×0.630)", action="c 630(겹침·갈고리) 모델 반영 여부, a 2.057 ↔ 2.103 어느 쪽이 맞는지 판단", kind="도면↔모델", image=IM["M-4"]),
|
||
dict(code="M-5", mark="C14~C17", content="루프 a 가산 54, b 단일 3.207 ↔ 모델 변화, C15·C17 끝 갈고리(b 188 · c 140) 없음", cmp="철근상세 ↔ 모델", diff="총길이 C14 -22.5, C15 -23.0, C16 -14.4, C17 -30.0 m", drawing_side="C14 a 10.475~3.496, b 3.207, j 0.550×4 / C15 b 188 · c 140", action="갈고리·j 반영 여부, b 단일값 ↔ 모델 변화 판단", kind="도면↔모델", image=IM["M-5"]),
|
||
dict(code="M-6", mark="C18", content="a 3.050 단일값 ↔ 모델 3종 (3.207 / 3.126 / 2.565)", cmp="철근상세 ↔ 모델", diff="총길이 +14.302 m (모델 457.732 / 재료표 443.430)", drawing_side="a 3.050 · b 370 · L 3.790 · 117본", action="모델의 개별 길이가 의도인지 확인", kind="도면↔모델", image=IM["M-6"]),
|
||
dict(code="M-7", mark="C8~C13, C14·C16, B9~B12, C18~C20, S1·S2", content="굽힘 내면지름: H25 87.0 < 88.9, H22 76.8 < 77.7, H19 66.5 < 66.85 (3.5db)", cmp="KDS 24 14 21 표 4.5-1 ↔ 모델", diff="1.9 / 0.9 / 0.35 mm 부족", drawing_side="도면에 내면반지름 표기 없음", action="모델 R 을 KDS 기준으로 키울지 결정", kind="기준↔모델", image=IM["M-7"]),
|
||
dict(code="M-9", mark="B5~B8", content="기초 직각 방향 철근 B5~B8 중심 높이가 도면 철근선(상면 100 아래 / 하면 150 위)과 ±22.5 mm 다름 (B1~B4 는 일치)", cmp="도면 정면도·측면도 철근선 ↔ 모델", diff="상면 122.5/77.5, 하면 172.5 (±22.5)", drawing_side="철근 선은 상면 -100 / 하면 +150 같은 높이. ※ 단, 도면 측면 단면의 철근 점(원)은 모델과 같은 높이(하면 321527.3, 상면 323432.3)에 그려져 있고 정면 단면 점과 22.5 다름 (선·점이 도면 안에서 다름)", action="모델 철근을 도면 선 높이에 맞출지 결정 (지시된 적 없는 모델 쪽 가정). 점 기준으로는 모델 = 도면 — 도면 내부 불일치 여부 판단 필요", kind="도면↔모델", image=IM["M-9"], image2=IM.get("M-9b")),
|
||
dict(code="M-10", mark="C8~C13", content="코핑 스터럽 상·하단이 도면 정면도 철근선보다 22.5 mm씩 더 나감 (106곳 전부 동일)", cmp="도면 정면도 수직선 ↔ 모델 중심선", diff="상단 +22.5 (피복 얕아짐), 하단 -22.5", drawing_side="상·하 끝이 철근선 위치로 작도 (예 C10 상단 코핑 상면 -120), 어긋나게 하라는 지시 없음", action="모델 스터럽 상·하단을 도면 선에 맞출지 결정 (M-9 와 같은 22.5 mm)", kind="도면↔모델", image=IM["M-10"]),
|
||
dict(code="M-11", mark="C9, C11, C13", content="오각형 스터럽 모따기 아래 평면부 d 가 도면 철근상세보다 33~43 mm 큼, C11 b 최대 +54", cmp="철근상세 범위 ↔ 모델 꼭짓점 치수", diff="d +33~43, b +54, c2 +5~6, a -4 (mm)", drawing_side="범위(~)로만 표기, 철근별 값 없음", action="모따기 d·b 를 도면 범위대로 맞출지 확인 (M-4 와 같은 계열)", kind="도면↔모델", image=IM["M-11"]),
|
||
dict(code="M-12", mark="B12", content="기초 중앙 B12(H19, x방향) 중간층 높이가 도면 점보다 19.0 mm 높음 (B11 은 일치, 도면은 B11·B12 같은 높이)", cmp="도면 정면·측면 단면 점 ↔ 모델 중심선", diff="+19.0 (z 322023.8/323023.8 ↔ 322004.8/323004.8)", drawing_side="B11·B12 모두 바닥 위 650·1650 에 점으로 작도", action="모델 B12 를 도면 점 높이에 맞출지 결정 (B11 과 간섭 피해 올린 것으로 보임, 지시된 적 없는 가정 — M-9 와 같은 유형)", kind="도면↔모델"),
|
||
dict(code="M-8", mark="P3, P4", content="링 이음(커플러) 각도·위치 도면에 기준 없음 (모델 90°/270° 가정)", cmp="도면 없음 ↔ 모델 가정", diff="-", drawing_side="철근상세 a·b 뿐, 방향·엇갈림 없음", action="각도 기준 확인 (설계자)", kind="미확인", image=IM["M-8"]),
|
||
]
|
||
|
||
CHECKS = [
|
||
["재료표","본수(전 마크)","재료표 N","모델 본수","일치 (UM 제외)","UM 92본 모델 없음 (M-1)"],
|
||
["재료표","길이·총길이·형상 치수","재료표 L·철근상세 a b c j","모델 설계길이·꼭짓점 치수","불일치 (M-1~M-6)","46마크 중 30마크 차이"],
|
||
["CTC","기초 상면 B1+B3 (x)","2@100 + 72@125 + 2@100 = 77본","77본, 위치 차이 0.0 mm","일치",""],
|
||
["CTC","기초 하면 B2+B4 (x)","2@100 + 72@125 + 2@100 = 77본","77본, 0.0 mm","일치",""],
|
||
["CTC","기초 상면 B5+B7 (y)","2@163 + 70@125 + 2@163 = 75본","75본, 0.0 mm","일치","2@163 = 162.5"],
|
||
["CTC","기초 하면 B6+B8 (y)","2@163 + 70@125 + 2@163 = 75본","75본, 0.0 mm","일치",""],
|
||
["CTC","기초 중앙 B12 (x)","18@500=9.000 (19본)","19본, 0.0 mm","일치",""],
|
||
["CTC","기초 중앙 B11 (y)","16@500=8.000 (17본)","19본 (±4537.5 에 2본 추가), 재료표 N=19","확인 필요","도면 치수는 17본, 재료표는 19본 → 도면 내부 (보관 D-6)"],
|
||
["CTC","코핑 스터럽 x (C8+C10+C12)","10@150 + 85@100 + 10@150 = 106본","106본, 도면 수직선과 0.4 mm 이내","일치","도면 원점 기준 +25 비대칭 패턴까지 같음"],
|
||
["CTC","코핑 단별 y (1~4단 C1+C4, C2+C5, C3+C6, C7+C19)","22@125 + 가장자리 150/125 = 25본","25본씩, 0.0 mm","일치","단면 A-A·B-B"],
|
||
["CTC","기둥 띠철근 P3·P4 구간","2@300 / 16@150 / 8@300 / 2@600 (z)","P3 13개, P4 16개 위치가 구간과 일치","일치","P3 14375 포함 17개 = 16@150"],
|
||
["형상","코핑 오각형 스터럽 C9·C11·C13 (a b c d c1 c2)","철근상세 범위 치수","모델 꼭짓점 치수","불일치 (M-11)","d +33~43, C11 b +54"],
|
||
["재료표","표 산술 (행 L×N, 소계, 단위중량, 총계)","L×N=총길이, 직경별 합 = 소계, 중량","검산","일치","옥성교·산외교·Ramp-A 모두 산술 오류 없음"],
|
||
["CTC","기둥 띠철근 P5 CTC","C.T.C 300 / 150 / 300 / 600","z 간격 300 (구간별)","일치 (대략)","구간별 세부 위치는 미확인"],
|
||
["피복","기초 B1~B4 (상면/하면)","상면 100 / 하면 150","100 / 150","일치",""],
|
||
["피복","기초 B5~B8","상면 100 / 하면 150","122.5 · 77.5 / 172.5","불일치 (M-9)","±22.5"],
|
||
["피복","기초 B11 중간층 (y방향 점)","도면 점 z 322004.8 / 323004.8 (바닥 위 650·1650)","322004.8 / 323004.8","일치","19본, 위치도 일치"],
|
||
["피복","기초 B12 중간층 (x방향 점)","도면 점 z 322004.8 / 323004.8 (B11 과 같은 높이)","322023.8 / 323023.8 (+19.0)","불일치 (M-12)","x 위치 -4500~4500 @500 19본은 일치, 높이만 +19 (H19 지름)"],
|
||
["점대조","기초 정면·측면 단면 점 (B1~B8, B10, B11)","도면 점 183 / 184개 (z·위치)","모델 직선 끝 위치와 3 mm 이내 일치","일치","B12 제외. 정면 상·하 77본, 측면 상·하 75본 (±4700)"],
|
||
["점대조","기둥 단면 C-C~F-F 점","60점 r 1080 + 60점 r 1125 / 띠철근 링 r 1148","P2 r 1080 (60), P1 r 1125 (60), 띠 P3 1150·P4 1147","일치","띠철근 ±2 mm"],
|
||
["점대조","코핑 단면 B-B 점 (C1~C7·C14~C17·C19·C20·S)","도면 점 173개","173개 전부 위치·높이 일치","일치","코핑 단면 높이·피복 체인 포함"],
|
||
["점대조","코핑 단면 A-A 점","도면 점 137개","124개 일치, C7 바닥 13점(z 19755.1, y ±1525 @250) 불일치","미확인","모델 C7 은 코핑 평면 끝이 사각이라 y 별 높이가 다름 — 절단 위치 확정 필요"],
|
||
["피복","코핑 스터럽 C8~C13 상·하단","도면 수직선 끝","상 +22.5 / 하 -22.5","불일치 (M-10)","106곳 전부"],
|
||
["피복","코핑 최상단 단 (C19 120)","코핑 상면 -120","120.0","일치",""],
|
||
["피복","기둥 주철근 반지름","DIVISION 60, 125+1125+1125+125","P1 1125 (60본), P2 1080 (60본)","일치","P2 는 안쪽 링"],
|
||
["피복","코핑 C1~C7 단별 깊이","단면 B-B 점 (치수 체인 대신 점 좌표)","C1~C7 점 모두 일치","일치 (B-B)","A-A 는 C7 바닥 13점만 미확인"],
|
||
["피복","코핑 C14~C17 루프·타이, S 받침 철근","단면 B-B·A-A 점","B-B 일치, A-A 일치 (C7 외)","일치","S 받침 철근은 점 있는 부분만"],
|
||
["피복","기초 측면 피복(x,y)","양 끝 100(상면/중앙/하면)","100","일치","B 철근 중심 기준"],
|
||
]
|
||
cfg = dict(image2_header="캡처 2 (M-9: 모델 기초 콘크리트 + 철근 중심 피복 치수)", checks=CHECKS, checks_desc="도면 DXF 의 작도 선·치수와 모델 철근 중심선을 좌표로 비교 (2026-10-19). 일치·불일치·미확인 구분. 판정 보류(기록만).",
|
||
|
||
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="받침 세트 10개", content="받침대좌·패드·교량받침·솔플레이트 (ELEVATION TABLE · 솔플레이트 TABLE) 모델 대조", note="선행 보고서 G5 183/183 PASS (표 값 기준)", status="미검토"),
|
||
dict(item="코핑 철근 간 간섭", content="철근끼리 교차·관통", note="사용자 지시로 제외 (검토 단계)", status="제외"),
|
||
dict(item="P5 갈고리 c 141 · d 80", content="철근상세의 끝 길이 정의가 모델(90°·135° 갈고리)과 맞춰지지 않음", note="도면으로 확인 불가", status="확인 불가"),
|
||
],
|
||
basis=[
|
||
dict(item="입력 파일", content="모델: 옥성교P1_G5.3dm (원본 그대로), 도면: 옥성교P1.dwg → 옥성교P1.dxf (라이노 변환)"),
|
||
dict(item="재료표", content="DXF 레이어 CS-TABL-TEX2 의 글자를 x(열)·y(행)로 읽음 (번호 x≈715129, 직경 715879, 길이 717004, 개수 717629, 총길이 719004). 재료표에는 A~J 치수 열이 없음 — 치수는 '철근상세'(레이어 CS-TEXT, 형상 도해 옆 L= N= a= b= c= j=)에서 읽음"),
|
||
dict(item="모델 치수", content="중심선(P1-RC-*)의 직선 구간을 연장한 꼭짓점 사이 거리(각진 치수)로 환산. P1·P2·P3·P4 는 호 길이/접선 길이로 비교. P3·P4 는 반원 2조각 = 1본으로 환산"),
|
||
dict(item="길이 비교", content="모델 철근의 설계길이(user string design_length + coupler_length)와 재료표 L·총길이를 대조. 형상 실길이(중심선)는 굽힘으로 약간 짧아 비교하지 않음"),
|
||
dict(item="KDS 계산", content="내면지름 = 2×(중심선 R − 공칭 db/2). H25 R 56.2 → 87.0, H22 49.5 → 76.8, H19 42.8 → 66.5, H29 65.2 → 101.8, H32 72 → 112.2, H16 24 → 32.1, H13 해당 없음. 기준: D19 이상 3.5db, D16 이하 2db (KDS 24 14 21 표 4.5-1)"),
|
||
dict(item="재료표 총계", content="도면 총계 13806.206 m (소계 합). 모델 설계길이 합 %.3f m (UM 제외 시 도면 %.3f m)" % (tot_m, tot_t - tab["UM"]["tot"])),
|
||
],
|
||
)
|
||
json.dump(cfg, open(SCR + r"\ok_cfg.json", "w", encoding="utf-8"), ensure_ascii=False, indent=1)
|
||
print(len(rows), tot_t, tot_m)
|