Files
Pier_v1/Code/검토수정/스크립트/add_pent_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

36 lines
3.3 KiB
Python

"""옥성 C9·C11·C13 오각형 스터럽 c=630 겹침(수정8) 기록: '수정 내역' R-24 + 이미지(형상 일람 시트 하단). 백업(양쪽) → Pier_T → 원본 복사 → SHA 확인."""
import copy, datetime, hashlib, shutil, sys
from pathlib import Path
import openpyxl
from openpyxl.drawing.image import Image as XLImage
from openpyxl.styles import Font, PatternFill
ROOT = Path(r"D:\★Pier 자료\프로그램\Pier_T"); REV = ROOT / "검토파일"; ORIG = Path(r"D:\★Pier 자료\심수석님 검토 파일"); NAME = "4개교_공통사항_종합.xlsx"
stamp = datetime.date.today().strftime("%Y%m%d")
for d in (REV, ORIG):
shutil.copy2(d / NAME, d / ("4개교_공통사항_종합_백업_%s_옥성오각형겹침.xlsx" % stamp))
wb = openpyxl.load_workbook(REV / NAME); ws, sh = wb["수정 내역"], wb["형상 일람(모델)"]
if any(r[0].value == "R-24" for r in ws.iter_rows(min_row=4)):
sys.exit("이미 있음")
def append_like(sheet, values, like_row):
r = sheet.max_row + 1
for j, v in enumerate(values, 1):
c = sheet.cell(row=r, column=j, value=v); s = sheet.cell(row=like_row, column=j)
c.font = copy.copy(s.font); c.fill = copy.copy(s.fill); c.border = copy.copy(s.border); c.alignment = copy.copy(s.alignment); c.number_format = s.number_format
sheet.auto_filter.ref = "A3:%s%d" % (openpyxl.utils.get_column_letter(sheet.max_column), r)
return r
r = append_like(ws, ["R-24", "옥성교", "코핑 오각형 스터럽 C9·C11·C13 — 도면 c=630 겹침 반영 (2조각)",
"C9 78본, C11 54본, C13 80본 (P1-CP)", "모델: 끝이 맞닿은 닫힌 링(겹침 없음). 도면: 긴 세로 변 위쪽에서 아래로 c=630 만큼 두 끝이 겹침",
"겹침 구간(c=630)을 긴 세로 변 위쪽 끝에서 아래로 두고 철근을 2조각으로 분할. 조각 길이 합 = 기존 + 630 (C9 6205→6835, C11 7454→8084, C13 6139→6769 평균)",
212, "사용자 지시 2026-10-27: '전단철근 오각형인데 J 위치에서 잘라 만들기, 위치는 도면 상세·길이 산정으로'. c=630 겹침, c1=변하는 길이",
"옥성교P1_G5_수정8_20261027.3dm (수정7 기반)",
"도면 평균 치수 합(a+b+d+c1+c2)+630 ≈ 재료표 L (C9 7,489↔7,401, C13 6,741↔6,662). 이미지: 수정후_캡처\옥성교_오각형스터럽_C9C11C13_겹침_전후.png",
"C11 은 같은 산식으로 7,361↔7,992 로 안 맞음(재료표 값·d 범위 확인 필요). C15·C17 갈고리 형상 보정은 미반영. 파이프 겹침부는 같은 선상에 중복(기존 J 방식과 동일)"], 4)
ws.cell(row=r, column=1).fill = PatternFill("solid", fgColor="FFFFF2CC")
row = max(i.anchor._from.row + int(i.height / 20) for i in sh._images) + 6
sh.cell(row=row, column=1, value="옥성 C9·C11·C13 오각형 스터럽 c=630 겹침 — 전후 (R-24)").font = Font(bold=True, size=12)
im = XLImage(str(REV / "수정후_캡처" / "옥성교_오각형스터럽_C9C11C13_겹침_전후.png")); w0, h0 = im.width, im.height
im.width, im.height = 1000, int(1000 * h0 / w0); sh.add_image(im, "A%d" % (row + 1))
wb.save(REV / NAME); shutil.copy2(REV / NAME, ORIG / NAME)
sha = lambda p: hashlib.sha256(Path(p).read_bytes()).hexdigest()
print("sha equal:", sha(REV / NAME) == sha(ORIG / NAME), sha(REV / NAME)[:16], len(sh._images))