콘텐츠로 이동

뷰 · 링크 · 기타

뷰 설정 복제

기준 뷰의 크롭 박스 · 숨김 요소 · Far Clip 깊이를 여러 뷰에 한 번에 복제 (뷰 템플릿이 관리하지 않는 개별 설정 전용)

🖱 쓰는 법

  1. 기준이 될 뷰를 열어둔 상태에서
  2. YoonDream 탭 → Coco 패널 → 뷰 설정 복제 버튼 클릭
  3. ① 소스 뷰 — ComboBox에서 선택하거나 현재 뷰 버튼으로 활성 뷰 지정
  4. ② 복제 항목 체크박스에서 원하는 항목만 켜기
    • 크롭 박스 (Crop Region)
    • 숨김 요소 (EH로 숨긴 레벨/그리드 등)
    • Far Clip Offset (절단선 깊이)
    • Grid/Level 2D Extent (같은 방향 뷰끼리만)
  5. ③ 타겟 뷰 — 복제 대상 뷰 체크 (검색 · 전체 · 해제 지원)
  6. 실행 ▶ 클릭 → 단일 Transaction으로 일괄 적용

📂 복제 가능한 4항목

항목 언제 쓰나요?
크롭 박스 입면도 여러 개를 같은 범위로 맞추고 싶을 때 (뷰 Transform은 유지되어 구조 입면도가 45° 안 돌아감)
숨김 요소 한 뷰에서 숨긴 레벨/그리드를 다른 뷰들에도 동일하게 숨기고 싶을 때
Far Clip Offset 뷰마다 절단 깊이가 다를 때 기준 뷰 깊이로 통일
Grid/Level 2D Extent 뷰별로 조정한 그리드 끝단 위치 복제 (같은 방향 뷰끼리만 의미 있음, 기본 OFF)

💡 이럴 때 쓰세요

  • 같은 방향으로 배치된 여러 입면도/단면도를 한 번에 정돈할 때
  • 뷰 템플릿이 관리하지 않는 뷰별 개별 설정을 일괄 복사할 때
  • 기준 뷰 하나만 예쁘게 맞춰두고 나머지 뷰는 자동으로 따라오게 하고 싶을 때
  • 구조 입면도가 45° 회전된 상태에서도 안전하게 크롭 복제할 때 (Transform 유지)

Grid/Level Leader(구부림)는 복제되지 않습니다

Revit API의 Leader 세터가 내부적으로 거리/각도를 제약(clamp)하여 정확한 값 복제가 불가능 → 기능 제거됨.

🔍 UI 미리보기

뷰 설정 복제 (View Settings Clone)
① 소스 뷰
Elevation - North현재 뷰
② 복제 항목
크롭 박스 (Crop Region)
숨김 요소 (EH)
Far Clip Offset
Grid / Level 2D Extent
③ 타겟 뷰 (다중 선택)전체 해제
Elevation - South
Elevation - East
Elevation - West
Section - A-A'
Section - B-B'
3개 선택됨 / 총 5개
Developed by Yoon Dream취소 실행 ▶
🔧 개발자 정보 (API · 경로 · 내부 로직)

파일 위치

  • Coco.panel/Crop.pushbutton/ — script.py, ui.xaml, bundle.yaml

지원 뷰 타입

FloorPlan, CeilingPlan, EngineeringPlan, Elevation, Section

복제 가능한 항목 상세

항목 설명 기본값
크롭 박스 (Crop Region) 월드 좌표 기반 변환, 타겟 뷰의 Transform(방향)은 유지 ON
숨김 요소 소스에서 EH로 숨긴 레벨/그리드 등을 타겟에도 동일하게 숨김 ON
Far Clip Offset 절단선 깊이 (VIEWER_BOUND_OFFSET_FAR + _ACTIVE_FAR 세트) ON
Grid/Level 2D Extent 뷰별로 조정된 그리드/레벨 끝단 위치 (같은 방향 뷰끼리만 의미) OFF

핵심 로직

  • 크롭 박스: 소스의 8개 모서리를 월드 좌표로 변환 → 타겟 뷰 로컬로 역변환 후 AABB 계산. 타겟 뷰의 Transform을 유지해 구조 입면도 등 회전된 뷰가 45° 돌아가지 않음.
  • 숨김 요소: Revit API에 GetHiddenElementIds 메서드가 없어, FilteredElementCollector + Element.IsHidden(view)로 전체 순회 수집. IronPython 3단계 fallback(인스턴스 → unbound → 리플렉션)으로 파생 뷰 타입 호환성 확보.
  • Grid/Level Extent: GetCurvesInViewSetCurveInView 적용. 실패 시 타겟 뷰 평면에 끝점 투영 fallback.

알려진 한계

  • Grid/Level Leader(구부림) 복제: Revit API의 Leader 세터가 내부적으로 geometric constraint로 값을 clamp하여 거리/각도가 정확히 복제되지 않음 → 기능 제거
  • Grid/Level Extent: 뷰 방향이 동일한 뷰끼리만 의미 있음 (입면도 → 측면도는 곡선이 뷰 평면 밖이라 자동 스킵)

여러 뷰에 DWG 도면을 이름 자동 매칭으로 일괄 링크

🖱 쓰는 법

  1. YoonDream 탭 → Coco 패널 → Link Helper 버튼 클릭
  2. DWG 파일들이 있는 폴더 지정
  3. 링크할 뷰 선택 (도구가 뷰 이름 ↔ DWG 파일명 유사도로 자동 매핑 제안)
  4. 매핑 조정 (자동 매핑이 틀렸다면 수동 수정)
  5. 배치 옵션 · 단위 선택
  6. 링크 클릭 → 각 뷰에 DWG 자동 링크

📂 매핑 예시

뷰 이름: "S-001 구조평면도 1F"
DWG 파일: "S-001_구조평면도_1F.dwg"
→ 유사도 높음 → 자동 매핑

💡 이럴 때 쓰세요

  • 분야별 DWG 도면을 대응하는 Revit 뷰에 일괄 링크해야 할 때 — 100개 뷰 수동 링크 불필요
  • CAD 원도를 Revit 뷰와 나란히 배치해 비교 · 보완 작업할 때
  • 이미 링크된 DWG는 자동 스킵되어 중복 링크 걱정 없음
  • DWG 파일이 다른 프로세스에 잠겨 있어도 임시 복제본으로 우회

🔍 UI 미리보기

Link Helper — DWG 일괄 링크
DWG 폴더:📂 선택D:\CAD\2026-원도\
뷰 ↔ DWG 자동 매핑18 매핑
뷰 이름매칭된 DWG유사도
S-001 구조평면도 1FS-001_구조평면도_1F.dwg98%
S-002 구조평면도 2FS-002_구조평면도_2F.dwg98%
A-101 단면도 A-AA101_단면_A-A.dwg82%
배치:Center to Center단위:mm
Developed by Yoon Dream닫기 링크
🔧 개발자 정보 (API · 경로 · 내부 로직)

파일 위치

  • Coco.panel/linkhelper.pushbutton/

자동 매핑

뷰 이름과 DWG 파일명의 유사도를 계산하여 자동 매칭:

뷰 이름: "S-001 구조평면도 1F"
DWG 파일: "S-001_구조평면도_1F.dwg"
→ 유사도 높음 → 자동 매핑

링크 옵션

옵션 선택지
배치 (ImportPlacement) 6가지 옵션 (Center to Center, Origin to Origin 등)
단위 (ImportUnit) 6가지 옵션 (mm, cm, m, inch, foot, auto)

파일 잠김 처리

다른 프로세스가 DWG를 잠근 경우 → 임시 폴더로 복제 후 복제본을 링크.

중복 방지

뷰에 이미 링크된 DWG가 있으면 자동 감지하여 스킵.


Schedule ↔ Excel 🚧 진행중

현재 개발 진행 중 — 엑셀 포맷 · 스케줄 동기화 로직 개선 작업 중

Revit 일람표와 Excel 사이 데이터를 양방향으로 주고받기 (DiRoots 플러그인의 무료 대안)

🖱 쓰는 법

  1. YoonDream 탭 → Coco 패널 → Schedule ↔ Excel 버튼 클릭
  2. 모드 선택 (4가지 중 하나)
  3. 대상 선택 · 엑셀 파일 지정
  4. 실행 클릭

📂 4가지 모드

모드 언제 쓰나요?
요소 내보내기 특정 카테고리 요소 데이터를 엑셀로 덤프
Excel 가져오기 엑셀에서 편집한 값을 요소 파라미터에 일괄 입력
스케줄 내보내기 ViewSchedule 전체를 엑셀로 내보내기
스케줄 가져오기 엑셀에서 편집한 스케줄을 다시 Revit으로

💡 이럴 때 쓰세요

  • 수백 개 요소의 파라미터를 엑셀로 뽑아 일괄 수정 후 다시 Revit에 반영할 때
  • 일람표를 엑셀에서 더 편하게 필터/정렬하고 싶을 때
  • DiRoots 같은 유료 플러그인 없이 무료로 해결하고 싶을 때
🔧 개발자 정보 (API · 경로 · 내부 로직)

파일 위치

  • Coco.panel/SheetSchedule.stack/schedule_excel.pushbutton/

라이브러리 구조

모듈 역할
lib/element_data.py 요소 데이터 수집/쓰기
lib/schedule_export.py 스케줄 데이터 추출
lib/excel_utils.py Excel COM 연동

DiRoots 플러그인의 대안. 무료 + 맞춤 커스터마이징.


시트 복사

외부 Revit 파일에 있는 시트를 파라미터 값까지 그대로 현재 문서로 복사

🖱 쓰는 법

  1. YoonDream 탭 → Coco 패널 → 시트 복사 버튼 클릭
  2. 소스 파일 지정 (디스크 탐색 또는 열린 문서 선택)
  3. 시트 목록에서 복사할 시트 체크
    • 검색·필터 지원
    • Shift+클릭 으로 범위 선택
  4. 복사 실행 클릭 → 현재 문서로 시트 + 파라미터 이관

💡 이럴 때 쓰세요

  • 이전 프로젝트의 시트 레이아웃을 그대로 재사용하고 싶을 때
  • 시트 파라미터(발주처·프로젝트 번호 등)도 함께 가져와야 할 때
  • 여러 시트를 한 번에 복사하고 싶을 때 (Shift+클릭 범위 선택)

🔍 UI 미리보기

시트 복사
소스 파일:📂 찾아보기열린 문서STR_Old_2025.rvt
시트 목록🔍 검색4개 선택
전체 선택해제💡 Shift+클릭 범위 선택
시트번호시트이름
S-001구조평면도 - 1F
S-002구조평면도 - 2F
S-101구조단면도 A-A
S-102구조단면도 B-B
S-201입면도 동측
Developed by Yoon Dream취소 복사 실행
🔧 개발자 정보 (API · 경로 · 내부 로직)

파일 위치

  • Coco.panel/SheetSchedule.stack/copy_sheets.pushbutton/

기능

  • 소스 파일 탐색 또는 열린 문서에서 선택
  • 시트 목록 표시 + 검색/필터
  • Shift+클릭 범위 선택 지원
  • 시트 복사 시 파라미터 값도 함께 전송

IronPython 2 호환

.Name property 접근 시 .NET 워크어라운드 적용 (IronPython 2.7 제약).


타입별 자동 색칠

기둥·보 타입마다 뷰 필터를 자동 생성해서 인스턴스 타입이 바뀌면 색상이 실시간으로 따라감 (기존 애드인의 \"스냅샷\" 한계 해결)

🖱 쓰는 법

  1. 색칠할 뷰(3D · 평면 등)를 활성 상태로 둡니다
  2. YoonDream 탭 → Coco 패널 → 타입별 자동 색칠 버튼 클릭
  3. 카테고리 선택 — 기둥 또는 보 중 하나
  4. 도구가 해당 카테고리의 타입을 자동 수집 + 20색 팔레트 할당
  5. 필요 시 타입별 색상을 색상 스와치 클릭해 개별 커스텀
  6. 적용 대상 — 활성 뷰 또는 뷰 템플릿 선택
  7. 🎨 색상 적용 클릭

💡 이럴 때 쓰세요

  • 검토용 3D 뷰에서 타입별로 색을 달리 보고 싶을 때 — 태그 달 필요 없음
  • 한 번 색칠한 후에도 인스턴스 타입을 바꾸면 색상이 자동 갱신되길 바랄 때 (기존 애드인은 "다시 실행"해야 함)
  • 프로젝트 전체 철골 기둥/보 검토 뷰를 자동 색상화할 때
  • 타입이 새로 추가되면 도구 한 번 더 실행만으로 새 타입에 색 할당 (기존 색은 유지)

실시간으로 따라오는 원리

뷰 필터(ParameterFilterElement)를 타입별로 미리 만들어 두는 방식입니다. Revit이 뷰를 그릴 때마다 규칙을 재평가하므로, 인스턴스 타입을 A → B로 바꾸면 A 필터에서 이탈, B 필터에 자동 매칭되어 색이 즉시 전환됩니다.

새 타입이 생기면 도구를 한 번 더 실행해야 합니다

필터는 자동으로 새 타입을 감지하지 않습니다. 새 타입 추가 후 도구를 재실행하면 기존 타입 색은 유지되고 새 타입에만 신규 색이 할당됩니다.

🔍 UI 미리보기

타입별 자동 색칠 (실시간)
적용 대상: [활성 뷰] 3D - map_aec
57 개
타입별 색상 설정8 종류
전체 선택전체 해제🎨 색상 자동 재배치🗑 TCF 전체 제거
SC_BEAM, W10x33, A992, YSB246 개#1F77B4
SC_BEAM, W8x21, A992, YSB1912 개#FF7F0E
SC_GIRDER, W10x33, A992, YSG244 개#2CA02C
SC_GIRDER, W12x40, A992, YSG298 개#D62728
SC_BRACING, L3X3X1/4, A572, HBR13 개#9467BD
Developed by Yoon Dream취소 🎨 색상 적용
🔧 개발자 정보 (API · 경로 · 내부 로직)

파일 위치

  • Coco.panel/type_color_filter.pushbutton/ — script.py, ui.xaml, bundle.yaml

실시간성의 원리

뷰 필터(ParameterFilterElement)를 타입별로 하나씩 생성. Revit이 뷰 렌더링마다 규칙을 재평가하므로, 인스턴스가 Type A에서 Type B로 바뀌면 A 필터에서 이탈하고 B 필터에 자동 매칭되어 색상이 즉시 전환됩니다.

인스턴스.Type = A → 필터 "TCF-COL (A)" 매칭 → A 색상
    ↓ 사용자가 Type B로 변경
인스턴스.Type = B → 필터 "TCF-COL (B)" 매칭 → B 색상  (자동!)

주요 기능

기능 설명
카테고리 선택 기둥 / 보 중 단일 선택 (한 번에 한 관점)
20색 팔레트 Tableau 20 변형 — 시인성 우선 범주형
색상 자동 재배치 팔레트 순환 재할당
개별 색상 수정 WinForms ColorDialog (커스텀 색상 지원)
대상 선택 활성 뷰 또는 뷰 템플릿
TCF 필터 전체 제거 이 도구가 만든 필터만 안전하게 일괄 삭제
재실행 시 색상 유지 기존 타입의 색은 유지, 새 타입만 팔레트에서 할당

기술적 디테일

  • 필터 규칙: SYMBOL_NAME_PARAM 또는 ALL_MODEL_TYPE_NAME 문자열 매칭 — ParameterFilterUtilities.GetFilterableParametersInCommon()으로 카테고리별 가용 파라미터 동적 선택
  • 왜 동적 선택인가: Revit은 카테고리마다 필터에 사용 가능한 파라미터 집합이 다름. 기둥에서 되는 파라미터가 보에선 안 될 수 있음
  • 필터 이름 규칙: TCF-{TAG} ({type_name}) (예: TCF-COL (H-400x200)) — TCF- 프리픽스로 다른 필터와 격리
  • 금지 문자 처리: Revit 필터 이름에 허용되지 않는 { } [ ] | ; < > ? \ ~_`로 치환
  • OGS 적용: Surface/Cut Foreground(Solid Drafting 패턴) + 투영/절단 선 색 동시 설정