Grid / Level Manager
그리드와 레벨을 한 UI에서 이름 변경 · 높이 조정 · 신규 작성까지 통합 관리
탭 하나로 Grid / Level을 전환해 작업합니다. 네이밍 충돌 자동 방지, 실시간 프리뷰, 뷰 기반 기준점 클릭 작성 모두 지원.
🖱 쓰는 법
- YoonDream 탭 → Modeling 패널 → Grid/Level Manager 버튼 클릭
- 상단 탭에서 Grid 또는 Level 선택
- 모드 선택
- 이름 변경 — 기존 요소 이름 일괄 변경
- 작성 — 신규 Grid/Level 생성
- 모드별 세부 설정 (아래 참조)
- 적용 또는 작성 클릭
📝 이름 변경 모드
🖱 쓰는 법
- 모드를 이름 변경으로 선택
- 네이밍 규칙 설정
- Prefix (접두사, 예:
G-) - Type (숫자 or 문자)
- Start (시작 값, 예:
1또는A) - Suffix (접미사, 예:
-S)
- Prefix (접두사, 예:
- Grid인 경우 방향 필터 체크 (수직 / 수평 / 대각)
- 실시간 프리뷰 테이블에서
현재 이름 → 새 이름확인 - 체크된 요소만 이름 변경 적용
💡 이럴 때 쓰세요
- 프로젝트 중간에 그리드 네이밍 규칙이 바뀌어 일괄 변경 필요할 때
- "A, B, C"를 "1, 2, 3"으로 바꾸고 기존 "1, 2, 3"은 "A, B, C"로 교차 변경하고 싶을 때 (중복 충돌 자동 해결)
- 수직/수평 그리드만 골라서 한 규칙 적용할 때 — 방향 필터로 선택
중복 충돌은 자동으로 해결됩니다
Revit은 동일 이름을 허용하지 않아 단순 교차 변경이 어렵습니다. 이 도구는 2단계 임시 이름 전략을 써서 어떤 교차 변경도 충돌 없이 처리합니다.
📏 높이 조정 모드 (Level 전용)
🖱 쓰는 법
- 탭을 Level로 전환
- 모드를 높이 조정으로 선택
- 상대값 또는 절대값 선택
- 값 입력 (예:
+300mm,3000mm) - 적용 클릭
📂 두 가지 조정 방식
| 모드 | 설명 | 예시 |
|---|---|---|
| 상대값 (+/-) | 현재 높이에서 가감 | +300mm → 모든 체크 레벨을 300mm 올림 |
| 절대값 | 특정 높이로 설정 | 3000mm → 체크 레벨 전부 3000mm 로 |
분수인치 표시
현재 높이를 3'-6" 같은 피트+분수인치 형태로 표시해 미국 프로젝트에서도 직관적.
➕ 작성 모드
🖱 쓰는 법
- 모드를 작성으로 선택
- Revit 뷰에서 기준점 클릭 (도구가 PickObject 요청)
- UI에서 세부 설정
- 방향 (수직 / 수평) — Grid 만
- 수량 (몇 개 생성)
- 간격 (Grid 간 거리)
- 길이 (Grid 선 길이)
- 네이밍 (이름 변경 모드와 동일 규칙)
- 작성 클릭 → 기준점에서 시작해 순차 생성
💡 이럴 때 쓰세요
- 프로젝트 초기 Grid 10개를 5000mm 간격으로 한 번에 생성할 때
- 기존 그리드 끝에 추가로 5개를 더 만들 때 — 기준점만 지정하면 자동 배치
- 이름 규칙을 생성 단계에서 바로 적용 — 생성 후 이름 바꿀 필요 없음
기준점은 도구 실행 직후 바로 클릭
도구 실행 시 Revit UI가 먼저 "기준점 클릭하세요"를 요청합니다. 클릭 후 WPF 창이 뜨는 흐름이에요.
🔍 UI 미리보기
🔧 개발자 정보 (API · 경로 · 내부 로직)
파일 위치
Modeling.panel/gridlevelmanager.pushbutton/— script.py, ui.xaml- 에러 기록:
ERROR/grid_level_manager_notes.md
네이밍 규칙 파라미터
| 설정 | 설명 | 예시 |
|---|---|---|
| Prefix | 접두사 | G- |
| Type | 숫자 또는 문자 | 숫자: 1,2,3... / 문자: A,B,C... |
| Start | 시작 값 | 1 또는 A |
| Suffix | 접미사 | -S |
결과 예시: G-1-S, G-2-S, G-3-S ...
Grid 방향 자동 분류
classify_grid_direction() 함수가 각 Grid의 방향을 자동 판별:
| 방향 | 판별 기준 | 필터 |
|---|---|---|
| 수직 (V) | 시작↔끝 X좌표 차이 < 임계값 | 체크박스 |
| 수평 (H) | 시작↔끝 Y좌표 차이 < 임계값 | 체크박스 |
| 대각 (D) | 그 외 | 체크박스 |
2단계 임시 이름 전략 (중복 충돌 방지)
Revit은 동일 이름 중복을 허용하지 않음. 교차 변경 시 충돌 해결:
- Phase 1 — 모든 Grid를 고유한 임시 이름으로 변경 (
__TEMP_001__,__TEMP_002__...) - Phase 2 — 임시 이름을 최종 이름으로 변경
단위 표시
feet_to_frac_str() — feet을 feet + 분수인치 형태로 표시:
3.5 feet → 3'-6"
3.25 feet → 3'-3"
기준점 획득
PickObject로 Revit 뷰에서 기준점 클릭.
pyRevit WPF 제약
PickObject는 반드시 ShowDialog() 전에 실행해야 합니다. WPF 창이 열려있으면 Revit UI 입력을 받을 수 없기 때문.
2-Phase Transaction
- Phase 1 — Grid/Level 요소 생성 (Transaction 1)
- Phase 2 — 이름 변경 (Transaction 2, 임시 이름 전략 적용)
pyRevit WPF 제약
XAML Click= 불안정 → 코드에서 += 바인딩, Hide/Show 금지.