Files
Pier_v1/Code/검토수정/스크립트/add_수정후_이미지_xlsx.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

65 lines
3.5 KiB
Python

"""'공통 문제 상세(이미지)' 시트에 J~M열 '수정 후 캡처'를 만들고 수정 후 이미지를 같은 행의 교량별 열에 넣는다 (2026-10-26).
이미지: 검토파일/수정후_캡처/*.png (make_after_images.py)
J=운곡교, K=산외교, L=옥성교, M=Ramp-A교. 기존 열(C~F)에서 '(해당 없음 …)' 텍스트였던 칸은 같은 텍스트를 J~M 에 복사한다.
J3 이 이미 있으면 중단(이중 적용 방지).
"""
import copy
import sys
from pathlib import Path
import openpyxl
from openpyxl.drawing.image import Image as XLImage
from openpyxl.styles import Alignment
ROOT = Path(r"D:\★Pier 자료\프로그램\Pier_T")
IMG = ROOT / "검토파일" / "수정후_캡처"
XLSX = ROOT / "검토파일" / "4개교_공통사항_종합.xlsx"
COLS = {"운곡교": "J", "산외교": "K", "옥성교": "L", "Ramp-A교": "M"}
BEFORE_COL = {"운곡교": "C", "산외교": "D", "옥성교": "E", "Ramp-A교": "F"}
PLAN = { # row -> {bridge: image file}
6: {"운곡교": "C-1_운곡교_H29_수정후.png", "옥성교": "C-1_옥성교_H29_수정후.png", "Ramp-A교": "C-1_Ramp-A교_H29_수정후.png"},
7: {"운곡교": "C-1_운곡교_H25_수정후.png", "옥성교": "C-1_옥성교_H25_수정후.png", "Ramp-A교": "C-1_Ramp-A교_H25_수정후.png"},
8: {"산외교": "C-1_산외교_H22_수정후.png", "옥성교": "C-1_옥성교_H22_수정후.png"},
9: {"운곡교": "C-1_운곡교_H19_수정후.png", "산외교": "C-1_산외교_H19_수정후.png", "옥성교": "C-1_옥성교_H19_수정후.png", "Ramp-A교": "C-1_Ramp-A교_H19_수정후.png"},
10: {"운곡교": "C-1_운곡교_H16_수정후.png"},
19: {"운곡교": "C-7_정면도_수정후_운곡교.png", "산외교": "C-7_정면도_수정후_산외교.png", "옥성교": "C-7_정면도_수정후_옥성교.png"},
20: {"운곡교": "C-7_단면도_수정후_운곡교.png", "산외교": "C-7_단면도_수정후_산외교.png", "옥성교": "C-7_단면도_수정후_옥성교.png"},
}
wb = openpyxl.load_workbook(XLSX)
ws = wb["공통 문제 상세(이미지)"]
if ws["J3"].value:
sys.exit("J3 이 이미 있음 - 중단")
for br, col in COLS.items():
c = ws["%s3" % col]
c.value = "%s — 수정 후 캡처 (2026-10-26)" % br
for attr in ("font", "fill", "border", "alignment"):
setattr(c, attr, copy.copy(getattr(ws["H3"], attr)))
c.alignment = Alignment(wrap_text=True, vertical="center")
ws.column_dimensions[col].width = 88
added = 0
for row, items in PLAN.items():
for br, col in COLS.items():
if br in items:
p = IMG / items[br]
im = XLImage(str(p))
w0, h0 = im.width, im.height
if row in (19, 20):
im.width, im.height = 620, int(620 * h0 / w0)
else:
im.width, im.height = 600, int(600 * h0 / w0)
ws.add_image(im, "%s%d" % (col, row))
added += 1
else:
t = ws["%s%d" % (BEFORE_COL[br], row)].value
if isinstance(t, str) and t.startswith("("):
c = ws["%s%d" % (col, row)]
c.value = t
c.alignment = Alignment(wrap_text=True, vertical="top")
ws["J5"].value = "※ 수정 후 캡처: C-7 은 수정된 모델의 Rhino Front / Right 뷰 캡처(기초 콘크리트 숨김) + 높이 기준선, C-1 은 수정된 모델의 호 반지름 실측값으로 같은 형식으로 작성"
ws["J5"].alignment = Alignment(wrap_text=True, vertical="top")
wb.save(XLSX)
print("images added:", added)