콘텐츠로 이동

🏷 태그 자동화


Smart Beam Tag All

활성 구조평면뷰의 보에 태그를 자동 일괄 배치 (타입별 제외, 호스트+링크 지원, 충돌 회피)

⚠️ 일부 기능 개발중

리더선 배치(escape) 옵션은 아직 개발중입니다. 기본 OFF 상태로 두고, 필요하면 체크해서 실험적으로 사용 가능합니다. 도면 경계 밖으로 태그가 보내지길 원하면 View의 Crop Box를 활성화해야 잘 작동합니다.

🖱 쓰는 법

  1. 태그를 찍을 구조평면뷰를 활성 상태로 연 뒤 YoonDream 탭 → Modeling 패널 → Smart Beam Tag 버튼 클릭
  2. 태그 타입 드롭다운에서 사용할 구조 프레이밍 태그 선택 (예: Structural Framing Tag : Mark Only)
  3. 탐색 반경 (inches) 입력 — 태그가 겹침을 피해 이동할 수 있는 거리
    • 권장: 일반 도면 12, 촘촘한 철골 평면 18~24
  4. 제외 대상 체크
    • Brace 툴로 만든 부재 — 기본 ON (브레이스는 태그 안 찍고, 위로 다른 태그가 올라가도 OK)
    • 리스트에서 퍼린(YSP 등) · 2차 부재 타입 체크하면 태그 안 찍히고 겹침 회피 대상에서도 빠짐
  5. 기타 옵션 확인
    • ☑ 링크된 모델의 보도 함께 태그 — 컨설턴트 모델 포함
    • ☑ 기둥/벽과 겹침 회피 — 기본 ON
    • ☑ 다른 보의 기하와도 겹침 회피 — 기본 ON (본인 보는 예외)
    • ⚠ [개발중] 리더선으로 도면 바깥 배치 — 실험적, 기본 OFF
  6. 태그 적용 클릭
  7. 결과 알림에서 태그 생성 / 실패 / 공간 부족 폴백 개수 확인
  8. 겹친 태그는 수작업으로 드래그해서 마무리 (리더 자동 유지)

💡 이럴 때 쓰세요

  • 구조평면뷰에 보 태그가 수십~수백 개 필요할 때 — 기본 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)

  1. 일반 후보 11개 — 중점 · 1/3 · 2/3 · 1/4 · 3/4 지점 × ±1·±2 오프셋
  2. Escape 후보 90+ (개발중) — 도면 경계 바깥 4방향, 각 1x/2x/4x, 리더선 강제
  3. 최종 폴백 — 기본 위치 강제 배치 (겹치더라도 태그 찍음)

각 단계에서 겹침 회피 체크: 기존 태그 · 기둥 · 벽 · 다른 보 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)