전송 · 배포
Central File Cloner
중앙파일 1개를 여러 경로에 새 중앙파일로 복제 (한 번 돌리면 여러 건물·지역용 중앙파일 자동 생성)
🖱 쓰는 법
- YoonDream 탭 → Admin 패널 → Central File Cloner 버튼 클릭
- Select 버튼으로 복제할 원본 중앙파일 지정
- 워크셰어링 상태를 자동 검증 (녹색 뱃지 ✓ Workshared = OK)
- 대상 경로 추가
- Add Folder — 폴더 하나 선택
- Add Multiple — 부모 폴더 선택 후 하위 폴더 다중 선택 (한 번에 여러 건물 추가)
- 각 경로 옆 파일명 편집
- 기본은 원본 파일명, 필요 시 "STR_Building-A" 처럼 개별 수정
.rvt확장자는 자동 부착
- Run 클릭 → 경로마다 순차 복제
💡 이럴 때 쓰세요
- 템플릿 1개를 10개 건물별 중앙파일로 한 번에 세팅하고 싶을 때 (Building-A, B, C ... 자동 생성)
- 폴더 구조는 만들어 뒀는데 중앙파일을 각각 복제해 넣어야 할 때 — Add Multiple 로 폴더 전부 한 번에 추가
- 권한 반납까지 자동으로 처리해야 할 때 — SaveAs 후 Sync + Relinquish 가 자동으로 실행되어 바로 팀원이 사용 가능한 상태로 남음
복제 원본은 워크셰어링 파일이어야 합니다
워크셰어링이 아닌 파일은 빨간 뱃지로 표시되고 복제 불가. 먼저 "Make Workshared"로 전환 필요.
🔍 UI 미리보기
🔧 개발자 정보 (API · 경로 · 내부 로직)
파일 위치
Admin.panel/central_file_cloner.pushbutton/— script.py, ui.xaml- Revit 2024 대상
API 처리 흐름 (대상 경로마다 반복)
1. OpenDocumentFile(modelPath, openOpts) — DetachAndPreserveWorksets
2. SaveAs(newPath, saveOpts) — WorksharingSaveAsOptions.SaveAsCentral = True
3. SynchronizeWithCentral() — RelinquishOptions(True) 권한 전체 반납
4. Close(False) — 저장 없이 닫기
소스 파일 검증
BasicFileInfo.Extract(path)로 워크셰어링 상태 확인:
- Workshared → 녹색 뱃지, 복제 가능
- Non-workshared → 빨간 뱃지, 복제 불가 경고
대상 폴더 관리
| 기능 | 설명 |
|---|---|
| Add Folder | 단일 폴더 선택 |
| Add Multiple | 부모 폴더 선택 → 하위 폴더 다중 선택 (SelectFromList) |
| 파일명 자동 감지 | 대상 폴더 내 기존 .rvt 파일명을 자동 읽어 표시 |
| 파일명 편집 | 텍스트박스에서 개별 편집 가능, .rvt 자동 추가 |
핵심 Revit API
| API | 용도 |
|---|---|
BasicFileInfo.Extract() |
워크셰어링 상태 사전 확인 |
OpenOptions + DetachFromCentralOption |
Detach 모드 열기 |
SaveAsOptions + WorksharingSaveAsOptions |
새 중앙파일로 저장 |
SynchronizeWithCentralOptions + RelinquishOptions |
동기화 + 권한 반납 |
시스템타입 전송
컨테이너 파일에서 벽/바닥/천장/지붕 타입을 선택해 여러 RVT에 한 번에 복사
🖱 쓰는 법
- YoonDream 탭 → Admin 패널 → 시스템타입 전송 버튼 클릭
- 📄 소스 컨테이너 지정 — 보낼 타입들이 있는
.rvt - 카테고리 필터 버튼 클릭 (전체 · 벽 · 바닥 · 천장 · 지붕)
- 보낼 타입 체크 (색상 뱃지로 카테고리 구분)
- 📁 타겟 RVT 폴더 선택 → 대상 파일 체크
- 🚀 전송 시작 클릭
💡 이럴 때 쓰세요
- 표준 벽·바닥 타입을 50개 파일에 배포하고 싶을 때 — Transfer Project Standards 배치 버전
- 카테고리별로 걸러서만 보내고 싶을 때 — "벽만 전체 전송" 같은 작업
- 이미 있는 타입은 덮어쓰지 않고 새 타입만 추가되길 바랄 때 — 동일 이름 타입 자동 스킵
같은 이름 타입은 자동 스킵
타겟에 이미 있는 동일 이름 타입은 건드리지 않고 새 타입만 추가됩니다. 기존 작업 내용이 덮어쓰이는 걱정 없음.
🔍 UI 미리보기
🔧 개발자 정보 (API · 경로 · 내부 로직)
파일 위치
Admin.panel/system_type_transfer.pushbutton/— script.py, ui.xaml
대상 시스템 타입 클래스
SYSTEM_TYPE_CLASSES = [
(WallType, "벽"), # 색상: #E53E3E
(FloorType, "바닥"), # 색상: #38A169
(CeilingType, "천장"), # 색상: #3182CE
(RoofType, "지붕"), # 색상: #D69E2E
]
전송 메커니즘
ElementTransformUtils.CopyElements(sourceDoc, elementIds, targetDoc, Transform.Identity, CopyPasteOptions())
- 크로스 문서 복사 (Transaction 필요)
- 동일 이름 타입이 타겟에 이미 있으면 자동 스킵
WarningSwallower— 비치명적 경고 자동 무시
카테고리 필터 UI
전체 / 벽 / 바닥 / 천장 / 지붕 버튼으로 즉시 필터링. 카테고리별 색상 뱃지.
로더블패밀리 일괄로더
.rfa 패밀리를 여러 RVT에 한 번에 로드 + 기존 파라미터 값 그대로 유지
🖱 쓰는 법
- YoonDream 탭 → Admin 패널 → 패밀리 일괄로더 버튼 클릭
- 컨테이너 지정 — 로드할 패밀리들이 있는
.rvt(또는 열린 문서) - 🏠 패밀리 목록에서 보낼 패밀리 체크
- 📁 타겟 RVT 추가 → 체크
- 🚀 작업 시작 클릭 → 타겟 각각에 로드 + 파라미터 값 복원
💡 이럴 때 쓰세요
- 표준 패밀리 10개를 150개 파일에 한꺼번에 업데이트해야 할 때
- 패밀리를 덮어쓰되 기존에 입력한 파라미터 값(치수·재질 등)은 유지하고 싶을 때 — 자동 스냅샷 → 복원 패턴
- 다이얼로그 클릭 안 하고 무인 배포하고 싶을 때 — 경고 대화상자 자동 처리
파라미터 값 보존 원리
도구가 로드 전에 기존 파라미터를 찍어두고, 로드 후 다시 써넣습니다. 그래서 패밀리 구조는 새 것으로 바뀌어도 "내가 입력했던 값들"은 남습니다.
🔍 UI 미리보기
🔧 개발자 정보 (API · 경로 · 내부 로직)
파일 위치
Admin.panel/family_batch_loader.pushbutton/— script.py, ui.xaml
파라미터 보존 전략
1. Snapshot — 기존 파라미터 값 저장
2. Load(overwrite=True) — 패밀리 덮어쓰기 로드
3. Restore — 저장해둔 값 복원
overwriteParameterValues는 패밀리 타입 파라미터만 영향 (프로젝트 파라미터 무관).
IFamilyLoadOptions 구현
class FamilyLoadOptions(IFamilyLoadOptions):
def OnFamilyFound(self, ...):
overwriteParameterValues = True
return True
def OnSharedFamilyFound(self, ...):
source = FamilySource.Family
return True
다이얼로그 처리
| 핸들러 | 대상 |
|---|---|
dismiss_dialog() |
모든 다이얼로그 자동 닫기 |
dismiss_warnings_only() |
TaskDialog만 선택적 닫기 |
resolve_failures_on_open() |
파일 열기 시 경고 자동 해결 |
보조 API
FamilyManager.Parameters로 .rfa 파일 파라미터 스캔 가능forms.SelectFromList.show(multiselect=True)+TemplateListItem(checked=True)로 체크박스 UI
프로젝트정보 전송
소스 RVT의 프로젝트 정보 파라미터(프로젝트 이름·번호·주소 등)를 여러 타겟에 일괄 전송
🖱 쓰는 법
- YoonDream 탭 → Admin 패널 → 프로젝트정보 전송 버튼 클릭
- 소스 지정 — 기준이 될 프로젝트 정보 담긴
.rvt - 전송할 파라미터 체크
- 읽기 전용은 자동으로 비활성화
- ElementId 타입(파일간 호환 안 됨)도 자동 비활성화
- 타겟 RVT 추가 → 체크
- 전송 클릭 → 각 파일의 프로젝트 정보 갱신
💡 이럴 때 쓰세요
- 프로젝트 번호·발주처 이름이 변경돼서 100개 파일 모두 수정해야 할 때
- 주소 · 건물명 등 공통 정보를 기준 파일 하나만 수정하고 나머지에 배포할 때
- 시트 제목 블록에 자동 연결된 프로젝트 정보를 일괄로 갈아치울 때
읽기 전용 파라미터는 건드리지 않습니다
ReadOnly, ElementId 등 전송이 불안정한 항목은 UI에서 자동 비활성화되어 실수로 깨는 일이 없습니다.
🔍 UI 미리보기
🔧 개발자 정보 (API · 경로 · 내부 로직)
파일 위치
Admin.panel/project_info_transfer.pushbutton/— script.py, ui.xaml
파라미터 분류
| 속성 | 처리 |
|---|---|
| ReadOnly | 선택 불가, "읽기전용" 뱃지 표시 |
| ElementId 타입 | 선택 불가 (파일간 ID 불일치) |
| 나머지 (String, Double, Integer) | 체크박스로 선택 가능 |
전송 대상 파라미터 예시
프로젝트 이름, 프로젝트 번호, 주소, 발주처, 건물 이름, 건물 번호 등.
프로젝트표준 일괄전송
🚧 작업 중 — View Template 등 추가 카테고리 예정
Revit Transfer Project Standards의 배치 버전 — 소스 1개를 150개 이상 타겟 파일에 한꺼번에 전송
🖱 쓰는 법
- YoonDream 탭 → Admin 패널 → 프로젝트표준 일괄전송 버튼 클릭
- 📄 소스 컨테이너 지정 — 표준이 된
.rvt - 보낼 표준 카테고리 체크 (39개 카테고리, 10그룹)
- 📁 타겟 RVT 폴더 선택 → 파일 체크
- 기존 타입 파라미터 덮어쓰기 체크 여부 결정 (기본 OFF = 스킵)
- 🚀 전송 시작 클릭 → 파일 순차 처리 (진행률 표시, 중단 가능)
📂 전송 가능 카테고리 (39개 / 10그룹)
| 그룹 | 카테고리 수 | 대표 항목 |
|---|---|---|
| Architecture | 9 | Wall, Floor, Ceiling, Roof, Curtain System 등 |
| Stair/Railing | 4 | Stairs, Railing 등 |
| Structure | 3 | Beam System, Rebar Bar, Rebar Cover |
| Piping | 4 | Piping System, Pipe, Flex Pipe, Pipe Insulation |
| Mechanical | 5 | Mechanical System, Duct, Flex Duct 등 |
| Electrical | 2 | Conduit, Cable Tray |
| Annotation | 4 | Dimension, Text Note, Spot Dimension, Filled Region |
| Appearance | 3 | Materials, Line Patterns, Fill Patterns |
| View | 3 | View Types, View Filters, Area Schemes |
| Grid/Level | 2 | Grid, Level |
📂 중복 처리 옵션
| 모드 | 동작 |
|---|---|
| 스킵 (기본) | 타겟에 동일 이름이 이미 있으면 건너뜀 (기존 작업 보존) |
| 덮어쓰기 | 동일 이름 타입의 파라미터 값을 소스 기준으로 갱신 |
💡 이럴 때 쓰세요
- 사내 표준 라이브러리 업데이트 후 모든 프로젝트 파일에 일괄 반영할 때
- 150개 설비 공종 파일에 MEP 시스템 타입을 한 번에 배포할 때 (실제 검증된 규모)
- 재질 · 선두께 · 채우기 패턴 등 외형 요소만 일괄 업데이트할 때 — 그룹별로 카테고리 켜고 끌 수 있음
- 도중에 끊겨도 다시 실행하면 이어서 처리되길 바랄 때 — 이미 처리된 타입은 자동 스킵
대규모 배치용 도구입니다
150+ 파일 대상으로 설계됨. 파일당 시간이 걸리니 가능하면 퇴근 전 실행 · 다음 날 확인 방식 권장. 중단 가능 · 이어하기 지원.
🔍 UI 미리보기
🔧 개발자 정보 (API · 경로 · 내부 로직)
파일 위치
Admin.panel/batchstandardtransfer.pushbutton/— script.py, ui.xaml, bundle.yaml
전송 카테고리 상세 (39개, 10그룹)
| 그룹 | 카테고리 |
|---|---|
| Architecture (9) | Wall, Floor, Ceiling, Roof, Curtain System, Building Pad, Slab Edge, Fascia, Gutter |
| Stair/Railing (4) | Stairs, Stairs Run, Stairs Landing, Railing |
| Structure (3) | Beam System, Rebar Bar, Rebar Cover |
| Piping (4) | Piping System, Pipe, Flex Pipe, Pipe Insulation |
| Mechanical (5) | Mechanical System, Duct, Flex Duct, Duct Insulation, Duct Lining |
| Electrical (2) | Conduit, Cable Tray |
| Annotation (4) | Dimension, Text Note, Spot Dimension, Filled Region |
| Appearance (3) | Materials, Line Patterns, Fill Patterns |
| View (3) | View Types, View Filters, Area Schemes |
| Grid/Level (2) | Grid, Level |
Revit 버전에 따라 없는 클래스는 동적 import로 자동 제외
전송 메커니즘
시스템타입 전송과 동일한 ElementTransformUtils.CopyElements() 패턴:
- 동일 이름 타입 → 기본 스킵 (덮어쓰기 옵션 선택 가능)
- 덮어쓰기 시 ElementId 파라미터 제외 (크로스 문서 무효)
WarningSwallower+ 3-layer 대화상자 핸들러
대규모 배치 처리 특징
- 파일당 Open → Transfer → Save/Sync → Close →
GC.Collect() - 이미 열린 문서 자동 감지 (닫지 않고 재활용)
- ProgressBar(취소 가능) — 중단 후 재실행 시 스킵 로직으로 자동 이어하기
- 파일 열기 실패 → 에러 메시지 + 스킵, 다음 파일 계속
교훈: FasciaType 등 Autodesk.Revit.DB 정적 import 실패 시 치명적 에러 → 새 클래스는 반드시 동적 import. Revit 2024에서 설비공종 150개 파일 배치 검증 완료.