- 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>
65 lines
3.5 KiB
Python
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)
|