콘텐츠로 이동

전송 · 배포

Central File Cloner

중앙파일 1개를 여러 경로에 새 중앙파일로 복제 (한 번 돌리면 여러 건물·지역용 중앙파일 자동 생성)

🖱 쓰는 법

  1. YoonDream 탭 → Admin 패널 → Central File Cloner 버튼 클릭
  2. Select 버튼으로 복제할 원본 중앙파일 지정
    • 워크셰어링 상태를 자동 검증 (녹색 뱃지 ✓ Workshared = OK)
  3. 대상 경로 추가
    • Add Folder — 폴더 하나 선택
    • Add Multiple — 부모 폴더 선택 후 하위 폴더 다중 선택 (한 번에 여러 건물 추가)
  4. 각 경로 옆 파일명 편집
    • 기본은 원본 파일명, 필요 시 "STR_Building-A" 처럼 개별 수정
    • .rvt 확장자는 자동 부착
  5. Run 클릭 → 경로마다 순차 복제

💡 이럴 때 쓰세요

  • 템플릿 1개를 10개 건물별 중앙파일로 한 번에 세팅하고 싶을 때 (Building-A, B, C ... 자동 생성)
  • 폴더 구조는 만들어 뒀는데 중앙파일을 각각 복제해 넣어야 할 때 — Add Multiple 로 폴더 전부 한 번에 추가
  • 권한 반납까지 자동으로 처리해야 할 때 — SaveAs 후 Sync + Relinquish 가 자동으로 실행되어 바로 팀원이 사용 가능한 상태로 남음

복제 원본은 워크셰어링 파일이어야 합니다

워크셰어링이 아닌 파일은 빨간 뱃지로 표시되고 복제 불가. 먼저 "Make Workshared"로 전환 필요.

🔍 UI 미리보기

Central File Cloner
Select\\Server\BIM\Template\STR_Standard.rvt
✓ Workshared워크셋 3개
📁 대상 경로3개
Add FolderAdd MultipleRemove
\\Server\BIM\Bldg-A\STR_Building-A.rvt
\\Server\BIM\Bldg-B\STR_Building-B.rvt
\\Server\BIM\Bldg-C\STR_Building-C.rvt
Developed by Yoon DreamCancel Run
🔧 개발자 정보 (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에 한 번에 복사

🖱 쓰는 법

  1. YoonDream 탭 → Admin 패널 → 시스템타입 전송 버튼 클릭
  2. 📄 소스 컨테이너 지정 — 보낼 타입들이 있는 .rvt
  3. 카테고리 필터 버튼 클릭 (전체 · 벽 · 바닥 · 천장 · 지붕)
  4. 보낼 타입 체크 (색상 뱃지로 카테고리 구분)
  5. 📁 타겟 RVT 폴더 선택 → 대상 파일 체크
  6. 🚀 전송 시작 클릭

💡 이럴 때 쓰세요

  • 표준 벽·바닥 타입을 50개 파일에 배포하고 싶을 때 — Transfer Project Standards 배치 버전
  • 카테고리별로 걸러서만 보내고 싶을 때 — "벽만 전체 전송" 같은 작업
  • 이미 있는 타입은 덮어쓰지 않고 새 타입만 추가되길 바랄 때 — 동일 이름 타입 자동 스킵

같은 이름 타입은 자동 스킵

타겟에 이미 있는 동일 이름 타입은 건드리지 않고 새 타입만 추가됩니다. 기존 작업 내용이 덮어쓰이는 걱정 없음.

🔍 UI 미리보기

시스템타입 전송
📄 소스 컨테이너
전체바닥천장지붕
RC200
RC300
바닥SLAB-200
천장CLG-GRID
📁 타겟 RVT
📂 폴더 선택
Building-A.rvt245MB
Building-B.rvt189MB
Building-C.rvt156MB
Developed by Yoon Dream닫기 🚀 전송 시작
🔧 개발자 정보 (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에 한 번에 로드 + 기존 파라미터 값 그대로 유지

🖱 쓰는 법

  1. YoonDream 탭 → Admin 패널 → 패밀리 일괄로더 버튼 클릭
  2. 컨테이너 지정 — 로드할 패밀리들이 있는 .rvt (또는 열린 문서)
  3. 🏠 패밀리 목록에서 보낼 패밀리 체크
  4. 📁 타겟 RVT 추가 → 체크
  5. 🚀 작업 시작 클릭 → 타겟 각각에 로드 + 파라미터 값 복원

💡 이럴 때 쓰세요

  • 표준 패밀리 10개를 150개 파일에 한꺼번에 업데이트해야 할 때
  • 패밀리를 덮어쓰되 기존에 입력한 파라미터 값(치수·재질 등)은 유지하고 싶을 때 — 자동 스냅샷 → 복원 패턴
  • 다이얼로그 클릭 안 하고 무인 배포하고 싶을 때 — 경고 대화상자 자동 처리

파라미터 값 보존 원리

도구가 로드 전에 기존 파라미터를 찍어두고, 로드 후 다시 써넣습니다. 그래서 패밀리 구조는 새 것으로 바뀌어도 "내가 입력했던 값들"은 남습니다.

🔍 UI 미리보기

로더블 패밀리 일괄 로더
컨테이너:파일 선택열린 문서STR_Standard_2024.rvt
🏠 패밀리12개
H_Beam_Series구조 보
UC_Column구조 기둥
SD_Single_Door
📁 타겟 RVT3개
Building-A.rvt
Building-B.rvt
Building-C.rvt
Developed by Yoon Dream닫기 🚀 작업 시작
🔧 개발자 정보 (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의 프로젝트 정보 파라미터(프로젝트 이름·번호·주소 등)를 여러 타겟에 일괄 전송

🖱 쓰는 법

  1. YoonDream 탭 → Admin 패널 → 프로젝트정보 전송 버튼 클릭
  2. 소스 지정 — 기준이 될 프로젝트 정보 담긴 .rvt
  3. 전송할 파라미터 체크
    • 읽기 전용은 자동으로 비활성화
    • ElementId 타입(파일간 호환 안 됨)도 자동 비활성화
  4. 타겟 RVT 추가 → 체크
  5. 전송 클릭 → 각 파일의 프로젝트 정보 갱신

💡 이럴 때 쓰세요

  • 프로젝트 번호·발주처 이름이 변경돼서 100개 파일 모두 수정해야 할 때
  • 주소 · 건물명 등 공통 정보를 기준 파일 하나만 수정하고 나머지에 배포할 때
  • 시트 제목 블록에 자동 연결된 프로젝트 정보를 일괄로 갈아치울 때

읽기 전용 파라미터는 건드리지 않습니다

ReadOnly, ElementId 등 전송이 불안정한 항목은 UI에서 자동 비활성화되어 실수로 깨는 일이 없습니다.

🔍 UI 미리보기

프로젝트정보 전송
📄 소스 RVT
파일 선택열린 문서STR_Master_2026.rvt
전송할 파라미터
프로젝트 이름
프로젝트 번호
발주처
주소
Guid읽기전용
Project LocationElementId
📁 타겟 RVT
폴더 선택
Building-A.rvt
Building-B.rvt
Building-C.rvt
Developed by Yoon Dream닫기 전송
🔧 개발자 정보 (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개 이상 타겟 파일에 한꺼번에 전송

🖱 쓰는 법

  1. YoonDream 탭 → Admin 패널 → 프로젝트표준 일괄전송 버튼 클릭
  2. 📄 소스 컨테이너 지정 — 표준이 된 .rvt
  3. 보낼 표준 카테고리 체크 (39개 카테고리, 10그룹)
  4. 📁 타겟 RVT 폴더 선택 → 파일 체크
  5. 기존 타입 파라미터 덮어쓰기 체크 여부 결정 (기본 OFF = 스킵)
  6. 🚀 전송 시작 클릭 → 파일 순차 처리 (진행률 표시, 중단 가능)

📂 전송 가능 카테고리 (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 미리보기

프로젝트 표준 일괄 전송
📄 소스 컨테이너
파일 선택열린 문서
전체 선택전체 해제
ArchitectureWall Types12
MEPPiping System Types8
AnnotationDimension Types5
AppearanceMaterials24
📁 타겟 RVT
폴더 선택열린 문서
Building-A.rvt245MB
Building-B.rvt189MB
Building-C.rvt156MB
기존 타입 파라미터 덮어쓰기
Developed by Yoon Dream닫기 🚀 전송 시작
🔧 개발자 정보 (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개 파일 배치 검증 완료.