지붕 · 개구부 · 난간
지붕 경사·분할, 문/창 Opening 파라미터 일괄 적용, 난간 → 패밀리 변환까지 묶음.
지붕경사
참조선(모델선·상세선)을 기준으로 여러 지붕에 경사를 한 번에 적용
🖱 쓰는 법
- YoonDream 탭 → Modeling 패널 → 지붕경사 버튼 클릭
- Revit 뷰에서 지붕 + 참조선(모델선 또는 상세선) 선택
- 선택 필터가 적용되어 지붕과 선 외 다른 요소는 선택 안 됨
- 경사 각도 입력
- 적용 클릭 → 도구가 자동으로 참조선에 가장 가까운 지붕 엣지를 올려 경사 설정
💡 이럴 때 쓰세요
- 평지붕 여러 개를 한 번에 경사 지붕으로 변환할 때
- 방향 기준선을 긋고 그쪽 방향으로 경사를 주고 싶을 때 — 가장 가까운 엣지 자동 판별
- 수동으로 지붕마다 경사 지정하는 번거로움 제거
🔍 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)만 선택 가능.
경사 적용 알고리즘
- 지붕과 참조선을 함께 선택
get_roof_boundary_curves()— 지붕의 경계 커브 추출point_to_line_distance()— 각 경계 엣지와 참조선 간 XY 평면 거리 계산- 참조선에 가장 가까운 엣지를 찾아 높이를 올려 경사 설정
get_line_direction_2d()— 선의 2D 방향 벡터로 경사 방향 자동 결정get_edge_midpoint()— 엣지 중점 계산
기하학적 처리
- XY 평면 투영 거리 (Z 무시)
- 방향 벡터 정규화
- 여러 지붕 동시 처리
Roof Splitter
FootPrint 평지붕을 지정한 선을 따라 두 조각으로 자동 분할
🖱 쓰는 법
- YoonDream 탭 → Modeling 패널 → Roof Splitter 버튼 클릭
- 분할할 지붕 선택
- 분할선 선택 (모델선 · 상세선 · CAD 링크 선 모두 가능)
- 실행 클릭 → 원본 지붕 삭제 + 2개의 새 지붕 자동 생성
💡 이럴 때 쓰세요
- 한 지붕을 구역별로 나누어 다른 재질/타입 적용하고 싶을 때
- CAD 도면의 분할선을 기준으로 Revit 지붕도 똑같이 분할할 때
- 복잡한 지붕 형상을 손으로 다시 그리지 않고 자동 분할
🔧 개발자 정보 (API · 경로 · 내부 로직)
파일 위치
Modeling.panel/roof_splitter.pushbutton/
지원 분할선
| 선 타입 | 설명 |
|---|---|
| ModelLine | Revit 모델선 |
| DetailLine | Revit 상세선 |
| CAD 링크 선 | 링크된 CAD 파일 내 선 |
워크플로우
- 지붕 선택
- 분할선 선택
- 지붕 경계와 분할선의 교차점 계산
- 교차점을 기준으로 경계를 2개의 CurveLoop으로 재구성
- 원본 지붕 삭제 → 2개의 새 지붕 생성
Opening 일괄입력
프로젝트에 로드된 문/창 패밀리를 직접 열어 Opening 파라미터에 수식을 일괄 적용
🖱 쓰는 법
- YoonDream 탭 → Modeling 패널 → Opening 일괄 버튼 클릭
- 적용할 수식 또는 값 입력 (예:
Width/2,300) - 프로젝트에 로드된 문/창 패밀리 선택 (여러 개 가능)
- 실행 클릭 → 각 패밀리를 자동으로 편집 · 저장 · 재로드
💡 이럴 때 쓰세요
- 모든 문 패밀리의 Opening Width를
Width - 50같은 수식으로 통일할 때 - 수작업으로 패밀리 10개 이상 열어 파라미터 수정하기 번거로울 때
- 프로젝트 전체 문/창의 Opening 치수 규칙 일괄 변경 시
패밀리 정의 자체가 수정됩니다
이 도구는 프로젝트의 파라미터가 아니라 .rfa 패밀리 정의 자체를 수정합니다. 패밀리가 다른 프로젝트에서도 쓰이고 있다면 영향 범위를 확인하세요.
🔍 UI 미리보기
Opening 일괄입력 (패밀리 수식 적용)
적용할 수식/값:Width - 50
예시:
Width/2, 300, Width - 50대상 문/창 패밀리5개 선택
전체 선택해제
패밀리카테고리인스턴스
SD_Single_Door문24
DD_Double_Door문8
SW_Sash_Window창42
CW_Casement창18
FW_Fixed_Window창11
⚠️ .rfa 패밀리 정의 자체를 수정합니다
Developed by Yoon Dream닫기 실행
🔧 개발자 정보 (API · 경로 · 내부 로직)
파일 위치
Modeling.panel/family_opening_formula.pushbutton/
워크플로우
- 수식/값 입력 (예:
Width/2,300) - 프로젝트에 로드된 문/창 패밀리 선택
- 각 패밀리를 FamilyManager API로 열기
- Opening 파라미터(인스턴스)에 수식 적용
- 패밀리 저장 → 프로젝트에 자동 재로드
IFamilyLoadOptions
class TargetFamilyLoadOptions(IFamilyLoadOptions):
# 항상 덮어쓰기 허용
def OnFamilyFound(self, ...):
return True
핵심 포인트
.rfa파일을 직접 편집하는 방식 (프로젝트 내 파라미터가 아닌 패밀리 정의 수정)- FamilyManager API로 파라미터 값 또는 수식 설정
- 편집 완료 후
LoadFamily()로 프로젝트에 재로드
Railing to Family
🚧 개발 진행 중
시스템 패밀리인 난간(Railing)을 3D 형상으로 추출해 원점 정렬된 일반 모델 패밀리(RFA)로 자동 변환
🖱 쓰는 법 (개발 중)
- YoonDream 탭 → Modeling 패널 → Railing to Family 버튼 클릭
- 변환할 난간 선택
- 실행 → 원점 정렬된 일반 모델 패밀리(.rfa) 자동 생성
💡 이럴 때 쓰게 될 예정
- 다른 프로젝트로 난간 디자인을 공유해야 할 때 — 시스템 패밀리는 직접 전송 불가
- 난간을 컴포넌트로 재활용하고 싶을 때
- 카탈로그에 난간 패밀리 등록할 때
🔧 개발자 정보 (API · 경로 · 내부 로직)
파일 위치
Modeling.panel/railing_to_family.pushbutton/
문제
Revit의 난간(Railing)은 시스템 패밀리라 다른 프로젝트로 전송이 어렵습니다. 일반 모델 패밀리(로더블)로 변환하면 자유롭게 활용 가능.
기술 접근
RailingSelectionFilter— 난간만 선택 가능extract_solids_from_element()— 난간에서 Solid 기하학 추출get_all_railing_solids()— 난간 + 하위 요소의 모든 Solid 수집- Generic Model 패밀리 템플릿 로드 (언어별 다중 경로 탐색)
- DirectShape 또는 FreeFormElement로 Solid를 패밀리에 삽입
- 원점 정렬 처리
패밀리 템플릿 탐색 (언어 호환)
Metric Generic Model.rft
일반 모델.rft
Generic Model.rft
... (언어별 변형)