🏷 태그 자동화
Smart Beam Tag All
활성 구조평면뷰의 보에 태그를 자동 일괄 배치 (타입별 제외, 호스트+링크 지원, 충돌 회피)
⚠️ 일부 기능 개발중
리더선 배치(escape) 옵션은 아직 개발중입니다. 기본 OFF 상태로 두고, 필요하면 체크해서 실험적으로 사용 가능합니다. 도면 경계 밖으로 태그가 보내지길 원하면 View의 Crop Box를 활성화해야 잘 작동합니다.
🖱 쓰는 법
- 태그를 찍을 구조평면뷰를 활성 상태로 연 뒤 YoonDream 탭 → Modeling 패널 → Smart Beam Tag 버튼 클릭
- 태그 타입 드롭다운에서 사용할 구조 프레이밍 태그 선택 (예:
Structural Framing Tag : Mark Only) - 탐색 반경 (inches) 입력 — 태그가 겹침을 피해 이동할 수 있는 거리
- 권장: 일반 도면 12, 촘촘한 철골 평면 18~24
- 제외 대상 체크
- ☑ Brace 툴로 만든 부재 — 기본 ON (브레이스는 태그 안 찍고, 위로 다른 태그가 올라가도 OK)
- 리스트에서 퍼린(YSP 등) · 2차 부재 타입 체크하면 태그 안 찍히고 겹침 회피 대상에서도 빠짐
- 기타 옵션 확인
- ☑ 링크된 모델의 보도 함께 태그 — 컨설턴트 모델 포함
- ☑ 기둥/벽과 겹침 회피 — 기본 ON
- ☑ 다른 보의 기하와도 겹침 회피 — 기본 ON (본인 보는 예외)
- ☐ ⚠ [개발중] 리더선으로 도면 바깥 배치 — 실험적, 기본 OFF
- 태그 적용 클릭
- 결과 알림에서 태그 생성 / 실패 / 공간 부족 폴백 개수 확인
- 겹친 태그는 수작업으로 드래그해서 마무리 (리더 자동 유지)
💡 이럴 때 쓰세요
- 구조평면뷰에 보 태그가 수십~수백 개 필요할 때 — 기본 Tag All은 브레이스까지 다 찍혀서 일일이 지워야 함. 이 도구는 자동 제외 + 겹침 회피
- 퍼린(YSP) · 2차 부재를 태그에서 빼고 싶을 때 — 리스트에서 체크 한 번으로 끝
- 링크된 컨설턴트 모델의 보도 같이 태그할 때 — 링크 요소에 태그 자동 연결
- 이미 일부 태그된 뷰에 나머지만 채울 때 — 이미 태그된 보는 자동 스킵 (중복 방지)
- 한 뷰에서 완성 후 다른 구조평면 5~6장에 동일 태그 타입 · 탐색 반경으로 반복 적용
겹침 최소화 팁
- 탐색 반경을 충분히 크게 (18~24) 주면 교차점 겹침이 대폭 줄어듦
- 퍼린/브레이스 제외 체크 → 주 부재 태그 공간 확 넓어짐
- 결과 알림의 "공간 부족" 개수가 많으면 반경 더 키워서 재시도
🔍 UI 미리보기
Smart Beam Tag All
활성 구조평면뷰의 보 자동 태그 (제외 타입 선택, 링크 지원)
태그 타입:
Structural Framing Tag : Mark Only
탐색 반경 (inches):
18
권장: 일반 12 / 촘촘한 평면 18~24
태그 방향:
Horizontal (수평 고정)
제외 대상 (체크한 타입은 태그 안 찍고, 다른 태그가 위로 올라가도 OK):
☑ Brace 툴로 만든 부재
☐ Family A : YSB19 (42개)
☑ Family A : YSP12 (15개)
☐ Family B : YSG19 (28개)
☑ Brace Family : BR (8개)
기타 옵션:
☐ 리더선 포함 / ☑ 링크된 모델 함께 / ☑ 기둥·벽 회피 / ☑ 다른 보 회피
☐ ⚠ [개발중] 리더선으로 도면 바깥 배치
Developed by Yoon Dream태그 적용 취소
🔧 개발자 정보 (API · 로직 · 파일)
파일 위치
Modeling.panel/smart_beam_tag_all.pushbutton/— script.py, ui.xaml, bundle.yaml
핵심 API
| API | 용도 |
|---|---|
IndependentTag.Create(doc, typeId, viewId, ref, addLeader, orientation, point) |
태그 생성 |
Reference(elem).CreateLinkReference(linkInstance) |
링크 요소 참조 |
tag.GetTaggedElementIds() |
이미 태그된 요소 탐지 (Revit 2022+) |
RevitLinkInstance.GetLinkDocument() |
링크 문서 접근 |
link.GetTotalTransform() |
링크 좌표계 → 호스트 좌표 변환 |
배치 단계 (Fallback Chain)
- 일반 후보 11개 — 중점 · 1/3 · 2/3 · 1/4 · 3/4 지점 × ±1·±2 오프셋
- Escape 후보 90+ (개발중) — 도면 경계 바깥 4방향, 각 1x/2x/4x, 리더선 강제
- 최종 폴백 — 기본 위치 강제 배치 (겹치더라도 태그 찍음)
각 단계에서 겹침 회피 체크: 기존 태그 · 기둥 · 벽 · 다른 보 BBox (본인 보는 예외).
제외 로직 이중 적용
체크한 타입은 ① 태그 생성에서 스킵 ② 충돌 회피 대상에서도 스킵 → 퍼린·브레이스 위로 다른 태그가 자유롭게 배치됨.
링크 좌표 변환
링크 보의 BBox는 모델 좌표계 기준. 8개 코너를 transform.OfPoint()로 변환 후 XY min/max 계산 (회전 변환 대응).
미구현 / 개선 후보
- Escape 리더선 라우팅 최적화 (리더 교차 방지)
- 뷰 축척 자동 감지 → 탐색 반경 자동 조정
- 6장 구조평면 일괄 처리 모드
관련 에러 기록
ERROR/ironpython_element_name_error.md— Element.Name 안전 접근ERROR/pyrevit_show_dialog_method.md—.show_dialog()vs.ShowDialog()주의
개발 기록
- 2026-04-22: 최초 구현 + 타입별 제외 + 링크 지원 + 충돌 회피 3단계 + 코드 리뷰 완료
- Escape 기능 개발중 (리더선 기본 OFF)