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>
This commit is contained in:
ahnyongjooandClaude Sonnet 5.5 committed 2026-10-28 11:20:18 +09:00
commit 964a841de1
3978 files changed
+58013356

No files matched your search

@@ -0,0 +1,36 @@
"""Ramp-A교 DXF 철근상세 ↔ 모델 마크별 대조 이미지 2장 기록(R-28). 하루 1백업."""
import copy, hashlib, shutil, sys
from pathlib import Path
import openpyxl
from openpyxl.drawing.image import Image as XLImage
from openpyxl.styles import Font, PatternFill
from xlsx_backup_once import backup_once, NAME
ROOT = Path(r"D:\★Pier 자료\프로그램\Pier_T"); REV = ROOT / "검토파일"; ORIG = Path(r"D:\★Pier 자료\심수석님 검토 파일"); CAP = REV / "수정후_캡처"
print("backup:", backup_once())
wb = openpyxl.load_workbook(REV / NAME); ws, sh = wb["수정 내역"], wb["형상 일람(모델)"]
if any(r[0].value == "R-28" 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
YEL = PatternFill("solid", fgColor="FFFFF2CC")
r = append_like(ws, ["R-28", "Ramp-A교", "도면(DXF 교각(3).dxf) 철근상세 그림 ↔ 모델 형상 마크별 대조 (코핑 C1~C16·S1~S4, 기둥 P1~P3, 말뚝 P1-1~P3-2)",
"Ramp-A교 P1 코핑·기둥·말뚝 전 마크(이미지 2장)", "철근상세 그림을 마크별로 모델과 한 장에서 비교한 자료가 없었음",
"DXF 철근상세 영역을 렌더(ezdxf)해 마크별 그림을 잘라 모델 형상 옆에 배치(시트 '형상 일람(모델)' 하단). 수정은 하지 않음",
0, "사용자 지시 2026-10-28: DXF 도면을 제1 자료로, 그림은 DXF 에서 잘라 넣기", "ramp-A G5_수정6_20261026.3dm",
"형상 불일치 없음: C1~C5 ㄷ(다리각 107°/103°), C6 soffit 호, C7·C9·C11 사각 링, C8·C10·C12 오각형, C13·C14 사각 링, C15·C16·S1·S2 ㄷ, S3·S4 직선, P1 직선(커플러), P2·P2-1 반원 후프, P3·P3-1 갈고리",
"P1-1·P1-2·P3-2 는 도면에 마크 전용 그림이 없어 같은 계열 그림으로 추정 표시. C14 도면에 j=290×1 이 그려져 있으나 모델 링에 겹침 없음(보류, 사용자 지시로 겹침은 당분간 그대로 둠)"], 4)
ws.cell(row=r, column=1).fill = YEL
row = max(i.anchor._from.row + int(i.height / 20) for i in sh._images) + 6
for part in ("코핑", "기둥말뚝"):
p = CAP / ("도면대조_RampA_%s.png" % part)
sh.cell(row=row, column=1, value="Ramp-A %s — DXF 철근상세 그림 ↔ 모델 대조" % part).font = Font(bold=True, size=12)
im = XLImage(str(p)); w0, h0 = im.width, im.height
im.width, im.height = 1250, int(1250 * h0 / w0); sh.add_image(im, "A%d" % (row + 1)); row += int(im.height / 20) + 4
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))