콘텐츠로 이동

Room · Door

Room 요소 조회

벽 · 천장 · 문 · 창 · 기둥 등이 어느 Room에 속하는지 자동으로 찾아 HAS_RM/UNIT 파라미터에 일괄 입력

🖱 쓰는 법

  1. Room이 배치된 Revit 문서를 엽니다
  2. YoonDream 탭 → Coco 패널 → Room 요소 조회 버튼 클릭
  3. 조회할 카테고리 체크 (벽 / 천장 / 문 / 창 / 레일링 / 계단 / 구조기둥 / 구조 보)
  4. 상단 통계 카드에서 결과 확인 (미배정 요소는 노란색 뱃지)
  5. 필요한 작업 실행
    • Excel — 전체 결과를 엑셀로 내보내기
    • 파라미터 입력 — HAS_RM/UNIT 파라미터에 일괄 입력
    • Revit 선택 — 행 선택 후 Revit 뷰에서 하이라이트
    • 더블클릭 — 해당 요소로 즉시 화면 이동

💡 이럴 때 쓰세요

  • 실별 마감·도어 물량 집계를 위해 요소별 Room 정보를 일람표에 넣어야 할 때 — 수동 입력 수백 건 → 자동화
  • Room 미배정 벽/천장 찾아서 수정하고 싶을 때 — 노란 뱃지로 한눈에
  • Room Separator로 경계를 만든 프로젝트에서도 정확한 Room 매칭이 필요할 때 (자동 fallback 지원)
  • 다층 Room(예: 아트리움)에서도 여러 층에 걸친 요소를 감지해야 할 때

Room Separator 환경도 자동 처리

벽 대신 Room Separator로 경계를 짠 프로젝트에서 문/창의 FromRoom/ToRoom이 비어 있어도, 도구가 자동으로 위치 기반 탐색으로 전환해 정확히 매칭합니다.

🔍 UI 미리보기

Room 요소 조회271 elements
천장창문레일링🔍 Room 검색
124
천장
38
67
창문
42
미배정
5
ID카테고리패밀리타입레벨HAS_RM / UNIT
485231기본 벽RC2001FA동-101호 거실
485235SD_Single900x21001FA동-101호 거실
485248기본 벽RC1502F— (미배정)
Developed by Yoon DreamExcel 파라미터 입력 Revit 선택 닫기
🔧 개발자 정보 (API · 경로 · 내부 로직)

파일 위치

  • Coco.panel/room_element_query.pushbutton/ — script.py, ui.xaml
  • 라이브러리: lib/yoon_room_utils.py

지원 카테고리 (8종)

벽, 천장, 문, 창문, 레일링, 계단, 구조기둥, 구조 보

Room 판별 알고리즘

모든 판별의 핵심은 doc.GetRoomAtPoint(XYZ, phase) — 좌표 기반 Room 탐색.

요소 판별 방식
다중 샘플링 — 벽 중심선 + 양쪽 법선 방향(3단계 오프셋)에서 GetRoomAtPoint(). 전체 높이에 걸쳐 Z 샘플링하여 다층 Room도 감지
문/창 FromRoom/ToRoom 1차 시도 → 둘 다 None이면 GetRoomAtPoint() fallback + Host 벽 법선으로 반대편 Room 탐색
천장 BoundingBox 중심+4분점에서 아래쪽으로 Z 탐색 (천장 아래 = Room 내부)
기타 (기둥/보/레일링/계단) BoundingBox 중심+4분점에서 Z 샘플링. 못 찾으면 아래쪽 확장 탐색

필터링 규칙

  • EXT 타입 벽 제외 — 외벽은 Room 경계가 아니므로 스킵
  • 레벨 매칭 필터 — 요소의 레벨과 Room의 레벨이 일치하는 경우만
  • Room 검색 — 텍스트 필터로 특정 Room만 표시

파라미터 입력

HAS_RM / UNIT (인스턴스, 텍스트 타입) — 프로젝트에 이미 존재하는 파라미터 사용 (새로 생성하지 않음).

사용자 프로젝트 특성: Room Separator로 Room 경계를 설정 (벽이 아닌).


MEP Room 조회

덕트·파이프·트레이 등 MEP 요소가 어떤 Room을 통과하는지 링크된 건축 모델을 기준으로 자동 조회

🖱 쓰는 법

  1. 건축 모델이 RevitLink로 로드된 MEP 문서를 엽니다
  2. YoonDream 탭 → Coco 패널 → MEP Room 조회 버튼 클릭
  3. 도구가 자동으로 건축 링크를 읽어 MEP 요소별 통과 Room 목록 표시

💡 이럴 때 쓰세요

  • 덕트가 지나가는 Room 리스트 뽑아 누락 구간 찾을 때
  • 스프링클러 · 전등 등이 어느 Room에 속하는지 일괄 확인할 때
  • MEP 모델에서 건축 Room 정보를 가져오려는데 링크만 있고 직접 접근 불가할 때 — 도구가 링크 내부 Room을 읽어냄

🔍 UI 미리보기

MEP Room 조회187 elements
✓ 건축 링크 감지ARC_Building-A.rvt (Room 124개)
덕트
64
파이프
48
트레이
42
장비
33
ID종류이름통과 Room
492841덕트Supply-1F-01101호 · 102호 · 복도
492842덕트Return-1F-01101호 · 102호
492905파이프Cooling-2F-05201호 · 202호 · 203호
Developed by Yoon DreamExcel 닫기
🔧 개발자 정보 (API · 경로 · 내부 로직)

파일 위치

  • Coco.panel/mep_room_query.pushbutton/

지원 MEP 카테고리

덕트, 파이프, 플렉스덕트, 플렉스파이프, 케이블트레이, 전선관, 피팅, 터미널, 액세서리, 장비, 기구, 스프링클러, 전기 요소

조회 방식

  1. 링크된 건축 모델 접근 (RevitLinkInstance)
  2. MEP 요소의 LocationCurve를 따라 포인트 샘플링
  3. 각 샘플 포인트에서 건축 모델의 Room 판별
  4. 요소가 통과하는 모든 Room 목록 출력

Door Material 일괄변경

프로젝트 내 모든 Door 타입의 재질 파라미터를 한 번에 일괄 변경

🖱 쓰는 법

  1. YoonDream 탭 → Coco 패널 → Door Material 일괄 버튼 클릭
  2. 새 재질 값 입력
  3. 실행 클릭 → 모든 Door 타입의 Material 파라미터 일괄 적용
  4. 성공 / 스킵 / 실패 카운트 확인

💡 이럴 때 쓰세요

  • 프로젝트 후반 도어 재질이 바뀌어 수백 개 타입 일괄 수정 필요할 때
  • 표준 재질로 도어 전체 통일이 필요할 때
  • 수동으로 하나씩 타입 열어 바꾸기 불가능한 규모일 때

읽기 전용 파라미터는 건너뜁니다

ReadOnly 파라미터는 자동으로 스킵되고 결과에 기록됩니다. 에러 없이 완료.

🔧 개발자 정보 (API · 경로 · 내부 로직)

파일 위치

  • Coco.panel/DoorRoom.stack/bulk_door_material.pushbutton/

워크플로우

  1. FilteredElementCollector로 전체 FamilySymbol (Door 카테고리) 수집
  2. 새 재질 값 입력
  3. set_door_material() — 순회하며 파라미터 설정
  4. 결과: 성공/스킵/실패 카운트 반환

WarningSwallower로 비치명적 경고 자동 무시. ReadOnly 파라미터는 graceful 스킵.


도어룸 자동입력

Door Number에서 Room 번호를 자동으로 뽑아내 Room Number/Name 파라미터에 자동 입력

🖱 쓰는 법

  1. Door Number 네이밍 규칙이 동-호-도어번호 형태로 된 프로젝트를 엽니다
  2. YoonDream 탭 → Coco 패널 → 도어룸 자동입력 버튼 클릭
  3. 도구가 Door Number 파싱 → 대응 Room 찾아 자동 입력

📋 파싱 규칙 예시

Door Number: "A-101-SD01"
→ 파싱: "A-101"
→ Room Number "A-101"과 자동 매칭
→ Door의 Room Number/Name 파라미터에 자동 입력

💡 이럴 때 쓰세요

  • Door 일람표에 Room 정보 컬럼이 비어 있어 수동 입력 수백 건이 쌓여 있을 때
  • Door Number 네이밍에서 규칙을 뽑아 자동화할 수 있는 프로젝트일 때
  • Room 번호가 변경되어도 Door Number만 올바르면 자동 반영 가능

유령 Room은 자동 제외

Area=0인 유령 Room은 매칭에서 제외됩니다. 유령 Room이 많다면 먼저 유령룸 삭제 도구를 돌리면 깔끔합니다.

🔧 개발자 정보 (API · 경로 · 내부 로직)

파일 위치

  • Coco.panel/DoorRoom.stack/door_room_autofill.pushbutton/

파싱 규칙

Door Number를 "-"로 분리하여 Room 번호 추출:

Door Number: "A-101-SD01"
→ 파싱: ["A", "101", "SD01"]
→ Room 번호: "A-101"

워크플로우

  1. get_room_dict(){room_number: room_name} 딕셔너리 구축 (Area=0 유령룸 제외)
  2. get_parsed_door_number() — Door Number 파싱
  3. Room 번호 매칭 → Door의 Room Number/Name 파라미터에 자동 입력

유령룸 삭제

여러 RVT 파일에서 면적이 0인 유령 Room을 일괄 탐색하여 삭제

🖱 쓰는 법

  1. YoonDream 탭 → Coco 패널 → 유령룸 삭제 버튼 클릭
  2. 대상 파일 추가
    • 열린 문서 추가 — Revit에 이미 열린 파일
    • 파일 추가 — 디스크에서 직접 선택
    • 폴더 추가 — 폴더 내 재귀 탐색 (백업 자동 제외)
  3. 실행 클릭 → 파일별로 유령 Room 탐색 + 삭제

💡 이럴 때 쓰세요

  • Room 일람표에 이상한 행(Area=0)이 섞여 있어 정리할 때
  • 도어룸 자동입력 전 정리 단계로 유령 Room 제거
  • 100개 파일 일괄 정리해야 할 때

링크 문서는 스캔만 가능, 삭제 불가

RevitLink로 로드된 문서의 유령 Room은 스캔만 되고 삭제할 수 없습니다. 직접 열어야 삭제 가능.

🔍 UI 미리보기

유령 룸 배치 삭제
열린 문서 추가파일 추가폴더 추가선택 제거초기화3개
열림STR_Building-A.rvt245MB
파일STR_Building-B.rvt189MB
링크ARC_Building-A.rvt스캔만
Developed by Yoon Dream닫기 실행
🔧 개발자 정보 (API · 경로 · 내부 로직)

파일 위치

  • Coco.panel/DoorRoom.stack/ghost_room_cleaner.pushbutton/ — script.py, ui.xaml

유령 룸 정의

Room.Area == 0 — 경계가 없거나 올바르지 않아 면적이 0인 Room. 모델에 존재하지만 실제 공간을 나타내지 않는 무효 데이터.

파일 소스

소스 설명
열린 문서 추가 현재 Revit에서 열린 프로젝트 목록 (SelectFromList)
파일 추가 디스크에서 .rvt 직접 선택
폴더 추가 폴더 내 재귀 탐색 (백업 자동 제외)

링크 문서 처리

링크로 로드된 문서는 유령 룸 스캔만 가능하고 삭제는 불가 — 알림 표시. 직접 열어야만 삭제 가능.

에러 기록: ERROR/ghost_room_cleaner_errors.md (5건)