구조 기초 · 버림콘 · 기둥
구조 관련 3가지 모델링 도구: 기초 높이별 시각화 (Foundation Filter), 버림 콘크리트 자동 생성 (Lean Concrete), 페데스탈 위 기둥 자동 배치 (Steel Column).
Foundation Filter
구조 기초의 하단 레벨(Elevation at Bottom)을 자동 분석해 뷰 필터 + 해치 패턴을 한 번에 생성
🖱 쓰는 법
- 평면 뷰 열어둔 상태에서
- YoonDream 탭 → Modeling 패널 → Foundation Filter 버튼 클릭
- 도구가 현재 문서 + 링크 모델의 구조 기초를 자동 수집
- 하단 레벨(EL)별로 자동 그룹핑 표시
- 각 레벨에 적용할 해치 패턴 드롭다운에서 선택
- 필터 생성 클릭 → 뷰에 즉시 적용
💡 이럴 때 쓰세요
- 기초 깊이별로 다른 해치를 넣어 도면 가독성 높일 때
- 토공사 범위 구분을 위해 EL -3000 / -2500 / -2000 구간을 시각적으로 나눌 때
- 건축/구조/MEP 링크된 기초까지 한 번에 필터링할 때
- 수동으로 필터 + 해치 만드는 번거로움 제거 — 48개 기초 × 5개 레벨 = 5분 만에 완성
EL 값이 영문 피트+분수인치로 자동 표시
EL -3000 (3'-0") 같은 형태로 미터법·피트법 둘 다 읽기 편하게 표시됩니다.
🔍 UI 미리보기
🔧 개발자 정보 (API · 경로 · 내부 로직)
파일 위치
Modeling.panel/foundation_filter.pushbutton/
워크플로우
FilteredElementCollector로 구조기초 수집 (링크 모델 포함)- 각 기초의
Elevation at Bottom파라미터 값 추출 - 동일 레벨값끼리 자동 그룹핑
- 그룹별 ParameterFilterElement 생성
- 각 필터에 FillPatternElement (해치) 오버라이드 적용
단위 변환
feet_to_frac_str() — feet 값을 사람이 읽기 쉬운 형태로 변환:
gcd() # 분수 단순화를 위한 최대공약수
# 3.5 feet → "3'-6\""
링크 모델 지원
RevitLinkInstance를 통해 다른 공종(건축, MEP)의 기초도 동일하게 처리. 링크 모델의 Transform을 적용하여 좌표 보정.
Lean Concrete
선택한 구조 요소(바닥·기초·기둥·보) 아래에 버림 콘크리트 바닥을 자동 생성
🖱 쓰는 법
- YoonDream 탭 → Modeling 패널 → Lean Concrete 버튼 클릭
- Floor Type 드롭다운에서 버림콘에 쓸 바닥 타입 선택
- Boundary Offset (인치 단위) 입력 — 경계를 바깥쪽으로 얼마나 확장할지 (기본 4")
- Create 클릭
- Revit에서 대상 구조 요소 선택
- 바닥 / 구조 기초 / 구조 기둥 / 구조 보만 선택 가능 (필터 자동 적용)
- 선택 완료 → 도구가 바닥면 경계 추출 + 오프셋 + Floor 자동 생성
💡 이럴 때 쓰세요
- 기초 · 기둥 · 보 하부에 버림콘을 자동으로 깔아야 할 때 — 손으로 Floor 스케치할 필요 없음
- 바닥면 경계에서 밖으로 4인치 오프셋해서 버림콘 범위 확장할 때
- 여러 카테고리를 한 번에 처리할 때 — 구조 기둥과 바닥 섞여 있어도 OK
대상 카테고리는 구조 요소 4종
선택 필터가 활성화되어 바닥/구조기초/구조기둥/구조보만 선택 가능. 다른 요소는 클릭해도 선택 안 됨.
🔍 UI 미리보기
🔧 개발자 정보 (API · 경로 · 내부 로직)
파일 위치
Modeling.panel/lean_concrete.pushbutton/— script.py, ui.xaml
대상 요소 (4개 카테고리)
| 카테고리 | Revit 클래스 |
|---|---|
| 바닥 (Floor) | BuiltInCategory.OST_Floors |
| 구조 기초 (Foundation) | BuiltInCategory.OST_StructuralFoundation |
| 구조 기둥 (Column) | BuiltInCategory.OST_StructuralColumns |
| 구조 보 (Beam) | BuiltInCategory.OST_StructuralFraming |
StructuralElementFilter(ISelectionFilter) — 위 4개 카테고리만 선택 가능하도록 필터링.
처리 흐름
1. 구조 요소 선택 (ISelectionFilter)
2. get_bottom_curveloop() — 바닥면 CurveLoop 추출
3. offset_loops_outward() — 경계를 외부로 오프셋 (인치 단위)
4. Floor.Create() — 오프셋된 경계로 Floor 생성
5. Floor 타입 적용 (사용자 선택)
핵심 유틸리티 (재활용 가능)
| 함수 | 파일 | 용도 |
|---|---|---|
get_bottom_curveloop() |
lib/ew_utils.py |
Solid에서 바닥면 CurveLoop 추출 |
offset_loops_outward() |
lib/ew_utils.py |
CurveLoop 외부 오프셋 |
get_element_elevation_bounds() |
lib/ew_calc.py |
요소의 Top/Bottom Z 값 |
Phase 2 (미구현)
경계 병합 — Solid Boolean Union 접근법 예정.
Steel Column 기둥배치
선택한 페데스탈(구조 기초) 상단에 철골 기둥을 자동으로 일괄 배치
🖱 쓰는 법
- YoonDream 탭 → Modeling 패널 → Steel Column 버튼 클릭
- 배치할 기둥 FamilySymbol 선택
- Revit 뷰에서 페데스탈(구조 기초) 여러 개 선택
- 배치 클릭 → 각 페데스탈 상단 중심점에 기둥 생성
💡 이럴 때 쓰세요
- 페데스탈 수십 개 위에 철골 기둥을 하나씩 손으로 배치하기 번거로울 때
- 배치 기준 레벨을 자동으로 찾아 할당해주길 바랄 때 — Ztop에 가장 가까운 Level 자동 매칭
- 페데스탈이 회전돼 있어도 기둥도 같은 각도로 배치해야 할 때 — 회전각 자동 반영
🔍 UI 미리보기
🔧 개발자 정보 (API · 경로 · 내부 로직)
파일 위치
Modeling.panel/auto_place_columns.pushbutton/
위치 계산 함수
| 함수 | 역할 |
|---|---|
get_pedestal_top_center() |
BoundingBox 상단 중심점 (X, Y, Ztop) |
get_element_rotation() |
LocationPoint에서 회전각 추출 |
get_nearest_level() |
Ztop에 가장 가까운 Level 찾기 |
collect_column_symbols() |
배치 가능한 기둥 FamilySymbol 수집 |
워크플로우
- 사용자가 페데스탈(구조 기초) 선택
- 각 기초의 상단 중심점 계산 (BoundingBox)
- 가장 가까운 Level 자동 매칭
- 기둥
FamilySymbol선택 doc.Create.NewFamilyInstance()— 정확한 위치 + 회전각으로 배치
Auto Finishes
ℹ️ 이 도구는 Coco 패널에 있지만, 요소 자동 생성 성격이 강해 이 페이지에 함께 정리되어 있습니다.
선택한 면을 클릭하면 면 방향에 따라 자동으로 바닥·천장·벽 마감을 생성
🖱 쓰는 법
- YoonDream 탭 → Coco 패널 → Auto Finishes 버튼 클릭
- UI에서 바닥/천장/벽 각각의 마감 타입 선택
- Revit 뷰에서 면(Face) 피킹
- 도구가 자동으로 면 방향 판단 → 해당 마감 요소 생성
📂 면 방향 자동 분류
| 면 | 생성 요소 |
|---|---|
| 위를 향한 면 (바닥판 상면 등) | 바닥 마감 |
| 아래를 향한 면 (슬래브 하부 등) | 천장 마감 |
| 수직 면 (벽 표면) | 벽 마감 |
💡 이럴 때 쓰세요
- 구조 모델만 있고 마감이 없는 상태에서 일괄로 마감을 입힐 때
- 수동으로 바닥/천장/벽 그리기 번거로울 때 — 면 클릭만으로 자동
- 방향 판별을 자동화해서 실수 방지
🔧 개발자 정보 (API · 경로 · 내부 로직)
파일 위치
Coco.panel/auto_finishes.pushbutton/
면 분류 기준
| 법선 벡터 Z | 분류 | 생성 요소 |
|---|---|---|
| > 0.9 | 상면 (Top) | 천장 마감 |
| < -0.9 | 하면 (Bottom) | 바닥 마감 |
| |Z| < 0.1 | 측면 (Side) | 벽 마감 |
워크플로우
- UI에서 마감 타입 선택 (바닥/천장/벽 각각)
- Revit에서 면(Face) 피킹
- 법선 벡터로 면 방향 자동 분류
- 해당 타입으로 마감 요소 자동 생성