시트 리비전 일괄 입력
시트리비전 도장
여러 Revit 파일의 시트에 리비전(REV.2) 정보와 발행일을 한 번에 입력
표지(번호 끝 000)에는 발행일을, 표지가 아닌 모든 시트에는 REV.2 체크와 REV.2 날짜·내용·표시, 그리고 발행일을 한꺼번에 채웁니다. 한 파일씩 열어서 손으로 고치던 일을 여러 파일에 자동으로 적용합니다. 건물마다 시트 개수가 달라도 괜찮습니다.
🖱 쓰는 법
- YoonDream 탭 → Admin 패널 → 시트리비전 도장 버튼 클릭
- (선택) 소스 파일에서 값 읽기 — 이미 값을 채워 둔
.rvt를 고르면 아래 칸이 자동으로 채워집니다. 안 골라도 기본값이 들어 있어 바로 쓸 수 있습니다. - 값 확인·수정 — 표지 발행일 · REV.2 날짜 · 내용 · 표시
- 대상 파일 추가 — 파일 · 폴더 · 열린 문서 (백업 파일은 자동 제외)
- 실행 → 확인창에서 한 번 더 확인한 뒤 적용
📋 무엇이 채워지나
| 시트 구분 | 채우는 값 |
|---|---|
표지 (번호 끝 000) |
발행일 (Sheet Issue Date) |
| 일반 (표지가 아닌 전부) | REV.2 체크 = 예 · REV.2 날짜 · REV.2 내용 · REV.2 표시 · 발행일(= REV.2 날짜와 같은 값) |
소스 파일은 '값 빌려주는 곳'일 뿐입니다
소스 파일에서는 값 몇 개만 한 번 읽어 옵니다. 그 다음은 대상 파일이 가진 시트를 하나씩 보고 같은 값을 채웁니다. 그래서 소스와 대상의 시트 개수가 달라도 문제없습니다.
💡 이럴 때 쓰세요
- 도면 한 묶음을 같은 리비전으로 발행할 때 — 날짜·내용·표시를 모든 시트에 똑같이
- 수십 개 빌딩 파일에 같은 발행일·리비전 입력 — 파일을 하나씩 열지 않고 한 번에
- 표지와 일반 시트의 입력 내용이 다를 때 — 표지는 발행일만, 일반은 REV.2까지 자동 구분
파라미터 이름 대소문자가 달라도 찾아줍니다
모델의 실제 이름이 REV.2 Date인데 REV.2 DATE처럼 대문자로 적어도 알아서 찾습니다. 발행일도 Revit 기본 항목이라 항상 잡습니다. REV.2 칸이 시트에 있든 도면틀(타이틀블럭)에 있든 양쪽을 모두 살핍니다.
안전 동작 — 중앙 파일과 열린 문서 보호
- 중앙 파일은 임시 복사본을 만들어 작업한 뒤 자동 동기화합니다.
- 이미 열려 있는 문서는 값만 바꾸고 저장하지 않습니다(작업 중인 파일 보호).
- 결과 리포트에 시트별로
바뀐 값과경고(이름 없음·읽기 전용 등)가 표시됩니다. 처음 쓸 때는 사본 파일 하나로 먼저 돌려 결과를 확인하세요.
🔍 UI 미리보기
시트 리비전 일괄도장
① 소스(선택):파일에서 값 읽기열린 문서→ 값 자동 채움
② 표지 (번호 끝 000)
시트번호 끝000Sheet Issue Date03.Jul.2026
③ 일반 시트 (표지 외 전부)
도면틀 REV.2 체크 = 예
REV.2 Date03.Jul.2026
REV.2 DescriptionISSUED FOR APPROVAL
REV.2 MarksB
일반 시트 Sheet Issue Date도 REV.2 Date와 같은 값으로 채움
④ 대상 파일
중앙U73_Electrical Room.rvt
파일U74_Pump Room.rvt
열림U75_Control Room.rvt
Developed by Yoon Dream취소 실행
🔧 개발자 정보 (API · 경로 · 내부 로직)
파일 위치
Admin.panel/sheet_param_stamper.pushbutton/—script.py,ui.xaml,lib/sps_core.py,bundle.yaml
시트 분류
- 커버 = 시트번호가 지정 접미(기본
000)로 끝남 →Sheet Issue Date설정 - 일반 = 그 외 전부 → 타이틀블럭
REV.2체크(Yes) + 시트REV.2 Date/Description/Marks+Sheet Issue Date(= REV.2 Date 미러)
파라미터 IO (핵심)
| 처리 | 내용 |
|---|---|
| 대소문자 무시 매칭 | LookupParameter(대소문자 구분) 실패 시 elem.Parameters 순회 후 소문자 비교 |
| 시트/타이틀블럭 양쪽 탐색 | [sheet] + FilteredElementCollector(doc, sheet.Id).OfCategory(OST_TitleBlocks) 후보에서 첫 매칭 |
| 빌트인 폴백 | 발행일은 BuiltInParameter.SHEET_ISSUE_DATE 로도 시도 |
| 타입 분기 set | StorageType 보고 Set(str/int/float). 옛값=새값이면 set 생략(점유 최소화) |
배치 인프라 재사용
sheet_note_propagator.pushbutton/lib/snp_target_runner.py— 타겟 열기 · 중앙→로컬 복사 · 동기화 · 닫기 · 이미 열린 문서 감지- 확장
lib/yoon_workshare.py—commit_or_raise(권한 롤백을 거짓 성공으로 안 봄) ·relinquish_all(닫기 전 점유 반납)
소스 = 값 기증자
소스의 대표 커버/일반 시트에서 값 4종만 1회 읽어 입력칸 프리필. 소스↔타겟 시트 개수 무관.
에러 기록
ERROR/sheet_param_stamper_notes.md(설계 노트 · 대소문자 사고 · 일반화 판단)ERROR/cover_sheet_overwritten_by_prefix_classification_error.md(분류형 배치 도구 공통 교훈)