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:
commit
964a841de1
3978 files changed
+58013356
No files matched your search
@@ -0,0 +1,58 @@
|
||||
"""산외교 기초 B1·B4 재료표↔형상 대조 결과(수정 없음, 2026-10-27)를 엑셀에 기록. 백업(양쪽) → 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 Alignment, 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_B1B4대조.xlsx" % stamp))
|
||||
wb = openpyxl.load_workbook(REV / NAME)
|
||||
ws = wb["수정 내역"]
|
||||
if any(r[0].value == "R-20" for r in ws.iter_rows(min_row=4)):
|
||||
sys.exit("R-20 이미 있음")
|
||||
GREEN = PatternFill("solid", fgColor="FFE2EFDA"); YEL = PatternFill("solid", fgColor="FFFFF2CC")
|
||||
|
||||
|
||||
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-20", "산외교", "기초 B1·B4 재료표↔형상 대조 (사용자 지적: ㄷ자철근 아니냐) — 결과: 수정 없음",
|
||||
"B1·B4 (H16, 형식 I, 31본씩)",
|
||||
"모델 직선 1본 7,300 (재료표 A=7,300, B 칸 없음, 길이 7,300 과 일치)",
|
||||
"변경 없음. 도면 형상 상세가 강종별로 두 벌: SD500 형식 I = 직선(a 만), SD400 형식 I = ㄷ자(a+b 다리). B1·B4 는 SD500 재료표 → 직선",
|
||||
0,
|
||||
"사용자 지적 2026-10-27(SD400 상세 그림 제시). 지금까지 SD400·SD500 상세를 구분해 대조하지 않았음(재료표 숫자 위주) — 보완",
|
||||
"산외교P1 G5_수정5_20261027.3dm (변경 없음)",
|
||||
"재료표 행·SD500 상세·SD400 상세·모델 캡처를 한 장에 대조(공통 문제 상세 27행). B1·B4 모델은 직선 7,300 으로 도면과 일치",
|
||||
"B1·B4 를 ㄷ자로 봐야 하면 b 값이 도면에 없어 설계자 확인(도면 오류 기록). 4개교 기초철근 전체 재료표·형상 상세·모델 마크별 대조표는 별도 진행 예정"], 4)
|
||||
ws.cell(row=r, column=1).fill = YEL
|
||||
hold = wb["미수정·보류"]
|
||||
append_like(hold, ["산외교", "B1·B4 형상 (H16 형식 I)", "-", "수정 없음(대조 결과 직선 일치): SD500 상세 I=직선. SD400 상세 I=ㄷ자(b)와 혼동 가능",
|
||||
"사용자 의견: ㄷ자철근이라는 지적. B1·B4 가 ㄷ자라면 b 값이 도면(재료표 B 칸)에 없음. 'R-20'", "도면 상 B1·B4 형상 확인(직선 vs ㄷ자)"], 4)
|
||||
fs = wb["수정 증거(마크별)"]
|
||||
for m in ("B1", "B4"):
|
||||
append_like(fs, ["산외교", m, "H16", "형상 대조(수정 없음)", 31, "직선 7,300", "직선 7,300 (변경 없음)", 0, "R-20. 재료표 SD500 형식 I(직선)과 일치"], 4)
|
||||
wd = wb["공통 문제 상세(이미지)"]
|
||||
nr = wd.max_row + 1; like = nr - 1
|
||||
vals = {1: "C-4", 2: "[개별] 산외교 B1·B4 — 재료표 · 형상 상세(SD500/SD400) · 모델 대조",
|
||||
7: "재료표 B1·B4: 형식 I, A 7,300, B 없음. SD500 상세 I = 직선 / SD400 상세 I = ㄷ자(b)",
|
||||
8: "모델: 직선 1본 7,300 (수정5). 형상 상세를 강종별로 구분해 대조하지 않았던 점 보완",
|
||||
9: "수정 없음(일치) 'R-20'. B1·B4 를 ㄷ자로 봐야 하면 b 값이 도면에 없어 설계자 확인"}
|
||||
for col, v in vals.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")
|
||||
wd.cell(row=nr, column=9).fill = copy.copy(YEL)
|
||||
wd.row_dimensions[nr].height = 420
|
||||
im = XLImage(str(REV / "수정후_캡처" / "산외교_B1B4_재료표형상_대조.png")); w0, h0 = im.width, im.height
|
||||
im.width, im.height = 1000, int(1000 * h0 / w0); wd.add_image(im, "F%d" % nr)
|
||||
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], "images:", len(openpyxl.load_workbook(REV / NAME)["공통 문제 상세(이미지)"]._images), "row", nr)
|
||||
Reference in new issue
Block a user