X자 수평 가새 자동 채움
⚠ 미완성 도구
수평 가새 배치는 잘 작동하지만, 일부 모델에서는 가새의 높이·끝단이 살짝 어긋날 수 있습니다. 화면에서 Z 미세조정·끝단 단축 값을 직접 입력해 보정하는 단계가 필요합니다.
아래 알려진 한계 섹션을 꼭 먼저 읽어주세요.
큰보 + 작은보가 만드는 격자 네모마다 X자 가새를 한 번에 자동 배치
작은보(사이보)가 조밀하게 들어간 베이에서, 모든 작은 네모 안에 X자 사선 가새를 손으로 그리려면 시간이 많이 들어요. 이 도구는 보들을 한 번에 선택만 하면 모든 격자에 자동으로 X자 가새 두 개씩 그려줍니다.
🖱 쓰는 법
- 평면뷰에서 가로 작은보 + 세로 작은보를 모두 선택
- 큰보(메인 보)도 포함해도 괜찮음 — 도구가 알아서 외곽으로 처리
- YoonDream 탭 → Modeling 패널 → X-브레이스 자동 채움 클릭
- 화면이 뜨면 검출 결과 확인 (가로 보·세로 보 개수, 채울 칸 수, 만들어질 가새 수)
- 필요하면 Z 미세조정 값 입력 (인치)
- 필요하면 끝단 단축 값 입력 (인치) — 가새 끝이 다른 보와 겹칠 때 줄이는 값
- 가새 종류 목록에서 원하는 가새 클릭 = 즉시 실행 (별도 실행 버튼 없음)
마지막에 사용한 가새 종류·Z 값·끝단 값은 자동으로 기억됩니다. 다음 실행 때 그대로 채워져 있어서 같은 프로젝트에서 한 번만 맞춰두면 됩니다.
💡 이럴 때 쓰세요
- 한 베이에 수십 개 이상의 작은 격자에 가새를 채워야 할 때 (수동으로는 무리)
- 가새를 모두 같은 종류·같은 높이로 일괄 배치할 때
- 작은보 간격이 균일하지 않아도 — 도구가 격자를 자동으로 인식해서 처리
Beam 종류로 만들면 높이가 자동으로 맞춰집니다
가새를 Beam 종류로 만들면 Revit이 큰보·작은보와 같은 높이 규칙으로 자동 정렬해줘요. 기본값이 Beam이고, 필요하면 화면에서 Brace 분류로 만들기 체크박스로 바꿀 수 있습니다.
🛠 화면 옵션 설명
| 항목 | 설명 |
|---|---|
| 검출 결과 | 선택한 보가 만드는 격자 정보 — 가로/세로 보 개수, 격자선 수, 채울 칸, 만들어질 가새 수 |
| 가새 종류 목록 | 문서에 로드된 모든 보·가새 종류. 클릭 = 즉시 실행 |
| Z 미세조정 (인치) | 가새 전체를 위(+) 또는 아래(−)로 옮길 값. 가새가 보 위에서 떠 있거나 묻혀 있을 때 보정 |
| 끝단 단축 (인치) | 가새 양쪽 끝을 안쪽으로 줄이는 값. 가새 끝이 다른 부재와 겹칠 때 사용 (양수만 입력) |
| Brace 분류로 만들기 | 체크하면 가새 분류로 만듦 (구조 해석용). 기본값은 Beam (높이·이음 자동 보정) |
⚠ 알려진 한계 (미완성 부분)
1. 일부 칸의 가새 높이가 어긋날 수 있음
증상: 작은보와 큰보가 만나는 곳에서 가새가 살짝 위 또는 아래에 그려짐.
원인: 보마다 분석선의 위치 기준이 다르게 설정돼 있을 수 있어요 (상단 기준 / 중심 기준 / 하단 기준 등). 도구는 작은보의 분석선 위치를 그대로 따라가므로, 큰보와 기준이 다르면 보들 사이에 높이 차이가 생깁니다.
해결 방법: 화면의 Z 미세조정 값에 인치 단위로 입력 (예: +1, +2, +0.5). 한 번 맞춰두면 다음 실행에도 자동 적용.
2. Beam으로 만들면 가새 끝이 다른 부재와 겹칠 수 있음
증상: Beam 종류로 만든 가새의 양 끝이 큰보·기둥 안으로 파고들거나 표면에 닿아 있음.
원인: Beam은 자동 잘라내기(컷백) 가 안 되는 경우가 있어요. 가새 분류(Brace)는 자동 잘라내기가 있지만 평면 표현이 다릅니다.
해결 방법: 끝단 단축 값에 1~2 (인치) 정도 입력. 양쪽 끝이 안쪽으로 그만큼 줄어듭니다. 마찬가지로 자동 기억.
3. 보 종류에 따라 끝단 단축이 안 먹힐 수 있음
일부 보 유형(패밀리)은 끝단 늘림·줄임 값이 잠겨 있어서 도구가 못 건드립니다. 결과 화면에 잠긴 패밀리 N개 로 표시돼요. 이 경우 그 패밀리를 Revit 패밀리 편집기에서 직접 풀어줘야 합니다.
4. 다른 층의 보 동시 처리는 안 됨
여러 층(레벨)의 보를 한꺼번에 선택하면 첫 번째 보의 층 하나만 적용돼서 어색해질 수 있어요. 한 층씩 따로 실행해주세요.
🔍 화면 미리보기
📌 권장 사용 순서
- 첫 시도: Z 미세조정 = 0, 끝단 단축 = 0 으로 한 베이만 실행
- 3D로 확인 — 가새 위치·끝단 상태 점검
- 필요한 보정값 입력 (Z 또는 끝단 또는 둘 다)
- OK면 그대로 다른 베이도 실행 — 마지막 값이 자동 채워져 있음
- 다른 프로젝트로 옮길 때는 한 번 더 맞춰주세요 (모델 설정이 다를 수 있음)
🔧 개발자 정보 (파일 위치 · 알고리즘 · 내부 동작)
파일 위치
Modeling.panel/beam_xbrace_fill.pushbutton/script.py— 메인 로직ui.xaml— WPF UI
알고리즘 개요
- 선택된 StructuralFraming 보 수집 (
LocationCurve있는 것만) - 첫 보 방향 기준 dot product 로 가로(H) / 세로(V) 두 그룹 자동 분류
- 모든 보의 양 끝점 + 길이 수집
- 끝점들의 u/v 좌표를 1D 클러스터링 → 격자선 추출
- 각 격자점에 모인 끝점 중 가장 짧은 보 1개의 끝점 선택 (= 작은보 우선)
- 격자 인접 간격 중앙값의 2.5배 점프 → 베이 경계로 판정·제외
- 셀 (i, j+1) × (j, j+1) 마다
NewFamilyInstance로 2 대각선 생성 StructuralType.Beam(기본) 또는StructuralType.Brace(체크 시)START_EXTENSION/END_EXTENSION파라미터에 음수 값 적용 (단축)
상수 (튜닝 포인트)
PARALLEL_DOT = 0.7 # 같은 방향 그룹 판정 (45° 이내)
PERP_DOT = 0.3 # 직교 그룹 판정 (60° 이상)
CLUSTER_TOL = 0.5 # ft, 같은 격자선 위 끝점 묶기
BAY_GAP_RATIO = 2.5 # 격자 점프 = 베이 경계
마지막 선택 저장 위치
- pyRevit
script.get_config()→ JSON - 키:
last_brace_symbol_key,last_z_offset_in,last_extension_in,last_use_brace - 사용자별 영속 (PC 단위)
WPF 함정 회피
show_dialog()소문자 필수 (대문자는 클릭 무반응)- XAML
Click=미사용 → 코드에서+=로 이벤트 연결 PreviewMouseLeftButtonUp+OriginalSource가ListBoxItem자손인지 검증 (스크롤바·빈 영역 클릭 무시)
미완성 영역 (재개 시 참조)
상세는 메모리 project_xbrace_fill_tool_v1.md 참조:
- Family z-justification 자동 보정 (현재 사용자 수동 입력)
- Family 잠금된 익스텐션 우회
- 다중 레벨 동시 처리
- 격자 X 자동 분할 (큰보 위 중간 교차점 검출)