# SUT Catalog (v0, 정적 분석) > 수동 관찰 기반 초기 카탈로그. `sut-prober` PoC 완료 시 기계 생성 파일로 교체된다. > 마지막 갱신: 2026-04-07 ## 개요 - **이름**: EG-BIM Modeler - **위치**: `EG-BIM Modeler/` (git 제외) - **실행파일**: `EG-BIM Modeler.exe` (.NET / WPF) - **구성**: `.deps.json`, `.runtimeconfig.json`, `.pdb` 동봉 ## 핵심 어셈블리 | 이름 | 역할 | PDB | |------|------|-----| | `HmEG.dll` | 자체 3D 엔진 | ✅ (`HmEG.pdb`, `HmEG.xml`) | | `HmGeometry.dll` / `HmGeometry.V2.dll` | 지오메트리 커널 | ✅ | | `HmTriangle.dll` | 삼각분할 | ✅ | | `HmPG.dll` | (추정) 페러미터 그래프/프로파일 | - | | `HmCommonUI.dll`, `HmCommonBridge.dll` | 공통 UI / 네이티브 브릿지 | - | | `Editor02.HmEGAppManager.dll` | 앱 생명주기 / plugin 매니저 (MEF 로드 추정) | ✅ | | `Editor03.PluginInterface.dll` | Plugin 기본 계약 | ✅ | | `Editor04.CommandControl.dll` | 명령 파이프라인 UI | ✅ | | `Editor05.CommandCore.dll` | 명령 실행 코어 | ✅ | | `Editor06.CommandCustom.dll` | 커스텀 명령 | ✅ | | `Editor07.WidgetPluginInterface.dll` | 위젯 플러그인 계약 | ✅ | | `EditorCore.dll` | Editor 코어 | ✅ | | `Editor01.Localization.dll` | 다국어 | ✅ | | `Editor.AI01.HttpConnector.dll` | AI 연동 | ✅ | ## 렌더링 - **SharpDX** (D3D9/D3D11/DXGI/Direct2D, Mathematics, D3DCompiler) - 3D 뷰포트는 D3D surface → **UIA 사각지대** - `assimp.dll` / `AssimpNet.dll` → 메시 임포트 - `freetype6.dll`, `SharpFont.dll` → 폰트 - `SharpVectors.*` → SVG 지원 ## UI 스택 - `MahApps.Metro`, `ControlzEx`, `Dragablz` - `CommunityToolkit.Mvvm` - `Microsoft.Xaml.Behaviors`, `System.Windows.Interactivity` - `System.Windows.Controls.WpfPropertyGrid` - `Microsoft.Web.WebView2.*` (WebView2 패널) ## 유틸/공용 - `Serilog` + `Serilog.Sinks.File`, `log4net` - `Newtonsoft.Json`, `Google.Protobuf`, `MemoryPack.Core` - `UnitsNet`, `FluentScheduler`, `System.Reactive`, `Flurl.Http` - `BaronSoftware.Auth.dll` — 인증/라이선스 추정 (**레코딩 시 민감정보 주의**) ## Json 설정 (텍스트 golden-file 1차 타깃) `EG-BIM Modeler/Json/`: - `Settings.json`, `DefaultSettings.json` - `CategoryCommands.json`, `DefaultCategoryCommands.json` - `CommandAlias.json`, `DefaultCommandAlias.json` - `KeyShortCut.json`, `DefaultKeyShortCut.json` - `MouseSnap.json`, `DefaultMouseSnap.json` - `StartupCommand.json`, `DefaultStartupCommand.json` - `Units.json`, `DefaultUnits.json` - `Materials.json` - `RecentFiles.json` — **확실히 비결정적** (최근 사용 파일 경로) ### 비결정성 후보 필드 (정규화 대상) - `RecentFiles.json` 전체 - 모든 `Settings.json` 내부의 경로·창 크기·마지막 실행 시간 - GUID·타임스탬프 (포맷 확인 필요) ## 저장 파일 포맷 - `lmd.hme` — 자체 모델 포맷 (`.hme`) - `jversion.egm` — 버전/메타 파일 - **바이너리 추정** — 별도 포맷 분석 contract 필요 ## 로컬라이제이션 - `ko-KR`, `en-US`, `ja-JP`, `es-ES` 리소스 폴더 - `Editor01.Localization.dll` 경유 ## MEF Plugin - 위치: `EG-BIM Modeler/Plugins/Eg*Plugin/` - **총 187개** (2026-04-07 스냅샷) - 카테고리: 생성(Box, Circle, Arc, Curve, Cone, Cylinder …), Boolean(Union/Intersection/Difference), Array(Linear/Polar/Crv), Align, Check(Border/Disjointed/Duplicated/NonManifold/Self-Intersection/Overlap/ZeroArea/ZeroCurve), Audit, Block(Edit), Chamfer, Clash, Cap, Cut, DeleteFaces, Import/Export 등 - 전체 목록: [plugins.md](plugins.md) ## recordingtest 영향 요약 1. **1차 검증 타깃**: `Json/` 텍스트 파일 (정규화 쉬움) 2. **2차**: `.hme`/`.egm` 파서 필요 3. **3D 뷰포트**: 좌표 입력 + engine-bridge 4. **Plugin 카탈로그**: sut-prober 자동 덤프 5. **PDB 풍부** → engine-bridge 리플렉션 비용 낮음 6. **인증/라이선스**: 자동화 테스트 환경에서 로그인 상태 유지/마스킹 필요