"""R-10~R-12(전단·세로철근 수정)를 '취소'로 표시하고 수정2 를 최신으로 되돌린다 (2026-10-26, 사용자 지적). 사유: 재료표 A·C 치수와 수정2 모델이 이미 일치. 재료표 L 은 직선 치수 합이라 모델 중심선 길이보다 굽힘 보정만큼 길다. 모델 파일은 지우지 않고 수정3 두 개를 '폐기'로 표시한다. 같은 표시가 이미 있으면 중단. """ import sys from pathlib import Path import openpyxl from openpyxl.styles import PatternFill XLSX = Path(r"D:\★Pier 자료\프로그램\Pier_T\검토파일\4개교_공통사항_종합.xlsx") wb = openpyxl.load_workbook(XLSX) GRAY = PatternFill("solid", fgColor="FFD9D9D9") RED = PatternFill("solid", fgColor="FFF8CBAD") GREEN = PatternFill("solid", fgColor="FFE2EFDA") ws = wb["수정 내역"] if any(str(r[2].value).startswith("[취소]") for r in ws.iter_rows(min_row=4)): sys.exit("이미 취소 표시가 있음 - 중단") WHY = { "R-10": ("취소(2026-10-26): 수정2 의 옥성 B9 는 도면 a≈567·b 1,998·c 100(곧은 구간 57.1 + R42.93)과 이미 일치. " "재료표 L 4,763 = a+2b+2c 직선 치수 합(굽힘 보정 없음)이라 중심선 길이를 L 에 맞추면 c 가 약 137 로 도면보다 길어짐 → 수정3 폐기, 수정2 로 되돌림. " "KDS 5db 95.5 미달은 도면 c 100 자체의 문제(설계자 확인)"), "R-11": ("취소(2026-10-26): 수정2 의 산외 B7 은 도면 A 2,218(z 166~2384)·C 100(80.5 + R19.5)과 이미 일치. 끝을 바깥 주철근 바깥으로 옮기면 A 가 2,282 가 되어 도면에서 벗어남 → 수정3 폐기. " "참고: A 2,218 은 바깥 주철근 안쪽 면에 접하는 위치(167.5 / 2385.5)와 거의 같음(현재 166 / 2384, 1.5mm 차)"), "R-12": ("취소(2026-10-26): 수정2 의 산외 B9·B10 은 도면 A 7,300(직선 7,252 + R24×2)·C 100(76 + R24)과 이미 일치 → 연장을 늘린 수정3 폐기, 수정2 로 되돌림"), } for r in ws.iter_rows(min_row=4): code = r[0].value if code in WHY: r[2].value = "[취소] " + str(r[2].value) r[10].value = WHY[code] r[0].fill = GRAY r[2].fill = RED ev = wb["수정 증거(마크별)"] for r in ev.iter_rows(min_row=4): if r[3].value and ("전단철근 갈고리 연장" in str(r[3].value) or "세로철근 끝 높이" in str(r[3].value) or "중간 직선철근 갈고리 연장" in str(r[3].value)): r[3].value = "[취소] " + str(r[3].value) r[8].value = "2026-10-26 사용자 지적: 수정2 가 도면 치수(A·C)와 일치하여 되돌림. 수정3 폐기" r[3].fill = RED fs = wb["수정 파일·해시"] for r in fs.iter_rows(min_row=4): p = str(r[1].value) if p.endswith("산외교P1 G5_수정3_20261026.3dm") or p.endswith("옥성교P1_G5_수정3_20261026.3dm"): r[3].value = "폐기" r[3].fill = RED r[2].value = str(r[2].value) + " — 도면 치수와 달라 취소 (2026-10-26)" if p.endswith("산외교P1 G5_수정2_20261026.3dm") or p.endswith("옥성교P1_G5_수정2_20261026.3dm"): r[3].value = "최신" r[3].fill = GREEN hold = wb["미수정·보류"] for r in hold.iter_rows(min_row=4): if r[0].value == "산외교" and str(r[1].value).startswith("B7"): r[3].value = "수정하지 않음(수정 취소): 도면 A 2,218·C 100 과 모델(166~2384, 갈고리 R19.5+80.5)이 일치" r[4].value = ("B7 은 기초 상·하부 철근을 잡아주는 ㄷ철근(사용자 설명). A 2,218 은 바깥 주철근 안쪽 면에 접하는 위치(167.5 / 2385.5)와 거의 같고 현재 166 / 2384 (1.5mm 차). " "'수정 내역' R-11 취소") r[5].value = "필요하면 1.5mm 맞춤 여부 결정" if r[0].value == "옥성교" and str(r[1].value).startswith("B9"): r[3].value = "도면 c 100 (곧은 구간 57.1 + R42.93)은 일치. KDS 5db 95.5 대비 곧은 구간 57.1 부족은 도면 c 100 자체의 문제" r[4].value = "수정 없음. 사용자 설명: B9 는 ㄷ철근이 J 로 겹치는 서로 마주보는 ㄷ자 철근 — 모델의 마주보는 배치·겹침이 도면과 같은지 확인 필요(미확인). '수정 내역' R-10 취소" r[5].value = "설계자 확인 + 도면 평면 배치 확인" wb.save(XLSX) print("saved")