파일 관리
Quick Open
여러 RVT 파일을 한 번에 열기 — 중앙파일은 로컬 복사본으로 자동 변환
🖱 쓰는 법
- YoonDream 탭 → Admin 패널 → Quick Open 버튼 클릭
- 열고 싶은 파일을 목록에 추가
- 📂 파일 추가 — RVT 파일 하나씩 선택
- 📁 폴더 추가 — 폴더 통째로 추가 (하위 RVT 자동 수집)
- 프리셋 불러오기 — 전에 저장해둔 목록을 한 번에 로드
- 체크박스로 실제 열 파일만 선택 (체크 해제한 파일은 열리지 않음)
- 열기 옵션 드롭다운에서 모드 선택 (아래 3가지)
- 열기 버튼 클릭 → Revit이 순차적으로 파일을 엽니다
📂 열기 옵션 (3가지)
| 옵션 | 언제 쓰나요? |
|---|---|
| 일반 열기 (로컬 복사본) | 중앙파일을 내 PC에 로컬 복사본으로 떠서 작업할 때. 보통 이걸 씁니다. |
| 디태치 (워크셋 유지) | 중앙파일에서 분리된 독립 파일로 열고 싶을 때. 워크셋 구조는 그대로 남음. |
| 디태치 (워크셋 삭제) | 완전히 분리하면서 워크셋까지 없애고 싶을 때 (예: 클라이언트 납품용 클린 파일). |
💡 이럴 때 쓰세요
- 매일 같은 5~10개 파일을 여는 루틴이 있을 때 — 프리셋 한 번 저장해두면 이후엔 한 번에 로드
- 중앙파일을 매번 손으로 "새 로컬 파일" 옵션 체크하며 여는 게 번거로울 때 — 자동으로
~/RevitLocal/안에 로컬 복사본을 만들어 열어줍니다 - 백업 파일(
.0001.rvt,_backup등)은 자동으로 목록에서 빠짐 — 실수로 백업을 열 일 없음 - 납품 전에 워크셋을 완전히 없앤 디태치 파일이 필요할 때 — "디태치 (워크셋 삭제)" 옵션 한 번에 해결
프리셋 활용 팁
프로젝트마다 "구조 검토용", "MEP 조정용" 등 용도별 프리셋을 만들어두면 파일 여는 시간이 거의 0초가 됩니다.
🔍 UI 미리보기
🔧 개발자 정보 (API · 경로 · 내부 로직)
파일 위치
Admin.panel/quick_open.pushbutton/— script.py, ui.xaml, presets.json
핵심 Revit API
| API | 용도 |
|---|---|
BasicFileInfo.Extract() |
파일 메타데이터 (워크셰어링 여부 판별) |
WorksharingUtils.CreateNewLocal() |
중앙파일 → 로컬 복사본 생성 |
uiapp.OpenAndActivateDocument() |
UI에 보이도록 열기 (app.OpenDocumentFile은 UI에 안 보임) |
ModelPathUtils |
경로 문자열 ↔ ModelPath 변환 |
DetachOption 매핑
| UI 옵션 | DetachOption 값 |
|---|---|
| 일반 열기 | DoNotDetach |
| 디태치 (워크셋 유지) | DetachAndPreserveWorksets |
| 디태치 (워크셋 삭제) | DetachAndDiscardWorksets |
로컬 복사본 경로 규칙
~/RevitLocal/{상위폴더명}_{파일명}_{Revit유저이름}.rvt
- 상위 폴더명을 파일명에 포함 → 같은 이름 파일도 충돌 없이 공존
- Revit 유저 이름을 suffix로 포함 → 다중 사용자 환경 대응
백업 파일 필터링 규칙
- 정규식
\.[0-9]{4}\.rvt매칭 (예:Project.0001.rvt) - 키워드 포함 시 제외:
backup,_bak,백업 - UI 체크박스로 "백업 포함" 선택 시 필터 해제
에러 기록: ERROR/quick_open_errors.md (2건)
Quick Close
열린 문서별로 동기화 · 저장 · 저장안함 · 건너뛰기를 각각 선택해 한 번에 닫기
🖱 쓰는 법
- YoonDream 탭 → Admin 패널 → Quick Close 버튼 클릭
- 현재 열려 있는 모든 문서가 목록에 자동으로 나옵니다
- 각 문서 옆에 유형 뱃지로 중앙파일 / 워크셰어 / 패밀리 / 로컬 표시
- "수정됨" 표시는 저장/동기화가 안 된 변경사항이 있다는 뜻
- 각 문서마다 오른쪽 드롭다운에서 원하는 동작을 선택
- 기본값은 유형에 따라 자동 설정됩니다 (워크셰어 → 동기화, 로컬/패밀리 → 저장)
- 체크박스로 실제 처리할 문서만 남김 (체크 해제 시 건너뜀)
- 닫기 실행 버튼 한 번으로 모든 문서가 각자 지정된 방식대로 처리됨
- Revit을 완전히 종료하고 싶다면 상단 "Revit 프로그램도 종료" 체크박스 같이 켜기
📂 4가지 동작 (드롭다운 옵션)
| 옵션 | 언제 쓰나요? |
|---|---|
| 동기화 후 닫기 | 중앙파일 작업 후 동료에게 변경사항을 올리며 닫을 때. 가장 안전한 종료 방식. |
| 저장 후 닫기 | 로컬 파일 · 패밀리 파일처럼 중앙파일이 아닌 것을 저장만 하고 닫을 때. |
| 저장 안 하고 닫기 | 실수로 만진 파일, 뷰만 둘러본 파일처럼 변경사항을 버리고 싶을 때. |
| 건너뛰기 | 이 파일은 닫지 않고 그대로 열어두고 싶을 때. 체크를 풀지 않고도 제외 가능. |
🔁 모든 행을 한 번에 바꾸기
상단의 "일괄 변경..." 드롭다운을 사용하면 모든 행의 동작을 한 번에 같은 값으로 설정할 수 있습니다.
- 퇴근 전 "전부 동기화 후 닫기"를 선택 → 모든 행이 동기화로 바뀜
- 리뷰만 하고 모두 닫을 거면 "전부 저장 안 하고 닫기" 한 번으로 해결
- 개별로 예외가 있으면 일괄 변경 후에 그 행만 다시 드롭다운으로 수정
💡 이럴 때 쓰세요
- 중앙파일 5개 + 패밀리 2개가 섞여 있을 때 — 중앙파일은 동기화, 패밀리는 저장만… 처럼 파일별로 다른 처리가 필요한 상황
- 퇴근 전 10개 넘는 문서를 한 번에 정리하고 싶을 때 — 하나씩 닫지 않고 일괄 종료
- "이 파일만 열어두고 나머지는 닫고 싶어" — 해당 파일만 "건너뛰기"로 지정
- 실수로 만진 파일을 되돌리고 싶을 때 — "저장 안 하고 닫기"로 변경사항 폐기
- Revit 자체를 종료하려는데 열린 문서 정리부터 해야 할 때 — "Revit 종료" 옵션 한 번에 처리
유형 뱃지 읽는 법
- 🟡 중앙파일 — 현재 직접 편집 중인 중앙파일 (로컬 사본이 아닌)
- ⚪ 워크셰어 — 중앙파일에서 내려온 로컬 복사본
- ⬛ 패밀리 —
.rfa패밀리 편집 문서 - ⚪ 로컬 — 워크셰어링을 안 쓰는 일반
.rvt파일
저장 안 하고 닫기 경고
"수정됨" 표시가 있는 문서에 저장 안 하고 닫기를 지정하면 실행 직전에 경고창이 뜹니다. 변경사항이 완전히 버려지므로 신중히 선택하세요.
🔍 UI 미리보기
🔧 개발자 정보 (API · 경로 · 내부 로직)
파일 위치
Admin.panel/quick_close.pushbutton/— script.py, ui.xaml
동작 키 (per-item)
action_key |
인덱스 | 동작 | 대상 유형 기본값 |
|---|---|---|---|
sync |
0 | SynchronizeWithCentral() → Close(False) |
워크셰어·중앙파일 |
save |
1 | Save() → Close(False) |
로컬·패밀리 |
nosave |
2 | Close(False) 직접 |
명시 선택 시만 |
skip |
3 | 아무 동작 안 함 | 명시 선택 시만 |
DocItem 상태
DocItem._default_action_index() — doc.IsWorkshared 여부로 초기 action_index 결정.
UI ComboBox → action_index 양방향 동기화 (action_loaded / action_changed 핸들러).
문서 유형 판별 로직
central_path = doc.GetWorksharingCentralModelPath()
visible = ModelPathUtils.ConvertModelPathToUserVisiblePath(central_path)
is_central = (doc.PathName == visible) # 직접 중앙파일 편집 중인지
활성 문서 처리
활성 문서는 doc.Close() 불가 → 저장/동기화만 수행 후 PostCommand()로 Revit 내부 닫기 명령 실행. Revit 종료 옵션 선택 시 PostableCommand.ExitRevit.
WPF 이벤트 초기화 순서 주의
<ComboBoxItem IsSelected="True"/>가 XAML 로드 중 SelectionChanged를 발동시킴 → _suppress_bulk_event 플래그는 반드시 forms.WPFWindow.__init__() 호출 이전에 초기화. 자세한 내용은 ERROR/wpf_combobox_isselected_xaml_load_error.md.
핵심 Revit API
| API | 용도 |
|---|---|
SynchronizeWithCentralOptions |
동기화 옵션 |
RelinquishOptions(True) |
워크셋 권한 전체 반납 |
TransactWithCentralOptions |
중앙파일 트랜잭션 |
PostableCommand.Close / ExitRevit |
활성 문서 닫기 / Revit 종료 |
단축키 할당 (선택)
Revit File → Options → User Interface → Keyboard Shortcuts에서 "Quick Close" 검색 → 원하는 조합 지정. pyRevit 측에서는 코드로 단축키 지정 불가.