"""Ramp-A P3-1 M-9 에 '도면 r 과 c 불일치'를 추가하고 갈고리 치수 확인 이미지를 '공통 문제 상세(이미지)' 에 넣는다 (2026-10-26). 도면 P3-1: r135, c165(호 길이), d150. r135 의 135° 호는 318 이어야 하는데 c 는 165 → c÷r = 70° (비표준). c 165 는 r70 의 135° 호(164.9)와 일치. 이미 추가되어 있으면(M-9 내용에 'r135 의 135°' 포함) 중단. """ import sys from pathlib import Path import copy import openpyxl from openpyxl.drawing.image import Image as XLImage from openpyxl.styles import Alignment ROOT = Path(r"D:\★Pier 자료\프로그램\Pier_T") XLSX = ROOT / "검토파일" / "4개교_공통사항_종합.xlsx" IMG = ROOT / "검토파일" / "수정후_캡처" ADD = (" ※ 도면 r 과 c 가 서로 맞지 않음: r135 의 135° 호는 318 이어야 하는데 c=165 (호 길이). r 로 각도를 구하면 70.03° 로 비표준이고, " "c 165 는 r70 의 135° 호(164.9)와 일치함 [도면 r 오류 의심]. 도면 값(r135·c165·d150) 그대로 만들면 갈고리가 안쪽이 아니라 바깥(아래 오른쪽)으로 꺾여 말뚝 밖으로 나감") wb = openpyxl.load_workbook(XLSX) wg = wb["교량별 항목 합본"] row = next(r for r in wg.iter_rows(min_row=4) if r[0].value == "Ramp-A교" and r[1].value == "M-9") if "r135 의 135°" in str(row[3].value): sys.exit("이미 추가됨 - 중단") row[3].value = str(row[3].value) + ADD row[7].value = str(row[7].value) + " (도면 r 이 70 이면 135° 갈고리로 말뚝 안에 들어옴 — 설계자 확인)" wi = wb["개별 항목"] for r in wi.iter_rows(min_row=4): if r[0].value == "Ramp-A교" and r[1].value == "M-9": r[3].value = str(r[3].value) + ADD for r in wb["미수정·보류"].iter_rows(min_row=4): if r[0].value == "Ramp-A교" and str(r[1].value).startswith("P3-1"): r[4].value = str(r[4].value) + " 도면 r135 와 c165 불일치(c165 는 r70·135° 와 일치) — 설계자 확인" wd = wb["공통 문제 상세(이미지)"] nr = wd.max_row + 1 like = nr - 1 texts = {1: "M-9", 2: "[개별] Ramp-A교 P3-1 갈고리 — 도면 r135 와 c165 불일치, 도면 치수대로면 말뚝 밖으로 나감 (도면 오류 의심)", 7: "도면 r135 에 c165(호 길이)는 70° 호 → 갈고리가 바깥으로 꺾임. 135° 갈고리라면 r70 (c 164.9) 이 맞음", 8: "도면 r 값(135 ↔ 70) 설계자 확인. 확인 전에는 도면 값 그대로 두고 오류로 기록", 9: "[오류 기록] 모델은 도면 값(r135·c165·d150)대로 작성: 호 70.03°, 호 길이 165.0, 곧은 구간 150.0. 아래 말뚝 구간(반지름 1,175) 26본 중심이 말뚝 밖, 위 구간(반지름 1,250) 22본 표면 돌출. '미수정·보류', M-9"} for col, v in texts.items(): c = wd.cell(row=nr, column=col, value=v) s = wd.cell(row=like, column=col) c.font = copy.copy(s.font); c.fill = copy.copy(s.fill); c.border = copy.copy(s.border) c.alignment = Alignment(wrap_text=True, vertical="top") for col in (3, 4, 5, 10, 11, 12): wd.cell(row=nr, column=col, value="(해당 없음 — Ramp-A교 P3-1)" if col < 6 else "(해당 없음)") wd.row_dimensions[nr].height = 420 for fname, anchor in (("RampA_P3-1_갈고리_치수확인.png", "F%d" % nr), ("RampA_P3_갈고리_치수확인.png", "M%d" % nr)): im = XLImage(str(IMG / fname)) w0, h0 = im.width, im.height im.width, im.height = 560, int(560 * h0 / w0) wd.add_image(im, anchor) wb.save(XLSX) print("saved; row", nr)