콘텐츠로 이동

지붕 · 개구부 · 난간

지붕 경사·분할, 문/창 Opening 파라미터 일괄 적용, 난간 → 패밀리 변환까지 묶음.


지붕경사

참조선(모델선·상세선)을 기준으로 여러 지붕에 경사를 한 번에 적용

🖱 쓰는 법

  1. YoonDream 탭 → Modeling 패널 → 지붕경사 버튼 클릭
  2. Revit 뷰에서 지붕 + 참조선(모델선 또는 상세선) 선택
    • 선택 필터가 적용되어 지붕과 선 외 다른 요소는 선택 안 됨
  3. 경사 각도 입력
  4. 적용 클릭 → 도구가 자동으로 참조선에 가장 가까운 지붕 엣지를 올려 경사 설정

💡 이럴 때 쓰세요

  • 평지붕 여러 개를 한 번에 경사 지붕으로 변환할 때
  • 방향 기준선을 긋고 그쪽 방향으로 경사를 주고 싶을 때 — 가장 가까운 엣지 자동 판별
  • 수동으로 지붕마다 경사 지정하는 번거로움 제거

🔍 UI 미리보기

지붕경사 적용
선택된 요소
지붕Flat Roof - A1Area 45m²
지붕Flat Roof - A2Area 32m²
지붕Flat Roof - B1Area 28m²
참조선Model Line길이 12m
경사 각도:15°
💡 참조선에 가장 가까운 지붕 엣지를 자동 판별하여 경사 설정
Developed by Yoon Dream취소 적용
🔧 개발자 정보 (API · 경로 · 내부 로직)

파일 위치

  • Modeling.panel/roof_slope_setter.pushbutton/

선택 필터

RoofAndLineFilter(ISelectionFilter) — 지붕(FootPrintRoof)과 선(ModelLine, DetailLine)만 선택 가능.

경사 적용 알고리즘

  1. 지붕과 참조선을 함께 선택
  2. get_roof_boundary_curves() — 지붕의 경계 커브 추출
  3. point_to_line_distance() — 각 경계 엣지와 참조선 간 XY 평면 거리 계산
  4. 참조선에 가장 가까운 엣지를 찾아 높이를 올려 경사 설정
  5. get_line_direction_2d() — 선의 2D 방향 벡터로 경사 방향 자동 결정
  6. get_edge_midpoint() — 엣지 중점 계산

기하학적 처리

  • XY 평면 투영 거리 (Z 무시)
  • 방향 벡터 정규화
  • 여러 지붕 동시 처리

Roof Splitter

FootPrint 평지붕을 지정한 선을 따라 두 조각으로 자동 분할

🖱 쓰는 법

  1. YoonDream 탭 → Modeling 패널 → Roof Splitter 버튼 클릭
  2. 분할할 지붕 선택
  3. 분할선 선택 (모델선 · 상세선 · CAD 링크 선 모두 가능)
  4. 실행 클릭 → 원본 지붕 삭제 + 2개의 새 지붕 자동 생성

💡 이럴 때 쓰세요

  • 한 지붕을 구역별로 나누어 다른 재질/타입 적용하고 싶을 때
  • CAD 도면의 분할선을 기준으로 Revit 지붕도 똑같이 분할할 때
  • 복잡한 지붕 형상을 손으로 다시 그리지 않고 자동 분할
🔧 개발자 정보 (API · 경로 · 내부 로직)

파일 위치

  • Modeling.panel/roof_splitter.pushbutton/

지원 분할선

선 타입 설명
ModelLine Revit 모델선
DetailLine Revit 상세선
CAD 링크 선 링크된 CAD 파일 내 선

워크플로우

  1. 지붕 선택
  2. 분할선 선택
  3. 지붕 경계와 분할선의 교차점 계산
  4. 교차점을 기준으로 경계를 2개의 CurveLoop으로 재구성
  5. 원본 지붕 삭제 → 2개의 새 지붕 생성

Opening 일괄입력

프로젝트에 로드된 문/창 패밀리를 직접 열어 Opening 파라미터에 수식을 일괄 적용

🖱 쓰는 법

  1. YoonDream 탭 → Modeling 패널 → Opening 일괄 버튼 클릭
  2. 적용할 수식 또는 값 입력 (예: Width/2, 300)
  3. 프로젝트에 로드된 문/창 패밀리 선택 (여러 개 가능)
  4. 실행 클릭 → 각 패밀리를 자동으로 편집 · 저장 · 재로드

💡 이럴 때 쓰세요

  • 모든 문 패밀리의 Opening Width를 Width - 50 같은 수식으로 통일할 때
  • 수작업으로 패밀리 10개 이상 열어 파라미터 수정하기 번거로울 때
  • 프로젝트 전체 문/창의 Opening 치수 규칙 일괄 변경

패밀리 정의 자체가 수정됩니다

이 도구는 프로젝트의 파라미터가 아니라 .rfa 패밀리 정의 자체를 수정합니다. 패밀리가 다른 프로젝트에서도 쓰이고 있다면 영향 범위를 확인하세요.

🔍 UI 미리보기

Opening 일괄입력 (패밀리 수식 적용)
적용할 수식/값:Width - 50
예시: Width/2, 300, Width - 50
대상 문/창 패밀리5개 선택
전체 선택해제
패밀리카테고리인스턴스
SD_Single_Door24
DD_Double_Door8
SW_Sash_Window42
CW_Casement18
FW_Fixed_Window11
⚠️ .rfa 패밀리 정의 자체를 수정합니다
Developed by Yoon Dream닫기 실행
🔧 개발자 정보 (API · 경로 · 내부 로직)

파일 위치

  • Modeling.panel/family_opening_formula.pushbutton/

워크플로우

  1. 수식/값 입력 (예: Width/2, 300)
  2. 프로젝트에 로드된 문/창 패밀리 선택
  3. 각 패밀리를 FamilyManager API로 열기
  4. Opening 파라미터(인스턴스)에 수식 적용
  5. 패밀리 저장 → 프로젝트에 자동 재로드

IFamilyLoadOptions

class TargetFamilyLoadOptions(IFamilyLoadOptions):
    # 항상 덮어쓰기 허용
    def OnFamilyFound(self, ...):
        return True

핵심 포인트

  • .rfa 파일을 직접 편집하는 방식 (프로젝트 내 파라미터가 아닌 패밀리 정의 수정)
  • FamilyManager API로 파라미터 값 또는 수식 설정
  • 편집 완료 후 LoadFamily()로 프로젝트에 재로드

Railing to Family

🚧 개발 진행 중

시스템 패밀리인 난간(Railing)을 3D 형상으로 추출해 원점 정렬된 일반 모델 패밀리(RFA)로 자동 변환

🖱 쓰는 법 (개발 중)

  1. YoonDream 탭 → Modeling 패널 → Railing to Family 버튼 클릭
  2. 변환할 난간 선택
  3. 실행 → 원점 정렬된 일반 모델 패밀리(.rfa) 자동 생성

💡 이럴 때 쓰게 될 예정

  • 다른 프로젝트로 난간 디자인을 공유해야 할 때 — 시스템 패밀리는 직접 전송 불가
  • 난간을 컴포넌트로 재활용하고 싶을 때
  • 카탈로그에 난간 패밀리 등록할 때
🔧 개발자 정보 (API · 경로 · 내부 로직)

파일 위치

  • Modeling.panel/railing_to_family.pushbutton/

문제

Revit의 난간(Railing)은 시스템 패밀리라 다른 프로젝트로 전송이 어렵습니다. 일반 모델 패밀리(로더블)로 변환하면 자유롭게 활용 가능.

기술 접근

  1. RailingSelectionFilter — 난간만 선택 가능
  2. extract_solids_from_element() — 난간에서 Solid 기하학 추출
  3. get_all_railing_solids() — 난간 + 하위 요소의 모든 Solid 수집
  4. Generic Model 패밀리 템플릿 로드 (언어별 다중 경로 탐색)
  5. DirectShape 또는 FreeFormElement로 Solid를 패밀리에 삽입
  6. 원점 정렬 처리

패밀리 템플릿 탐색 (언어 호환)

Metric Generic Model.rft
일반 모델.rft
Generic Model.rft
... (언어별 변형)