diff --git a/ROADMAP.md b/ROADMAP.md new file mode 100644 index 000000000..e54e3279e --- /dev/null +++ b/ROADMAP.md @@ -0,0 +1,276 @@ +# H7CAD — Roadmap + +acadrust 0.3.1 referans alınarak hazırlanmıştır. + +--- + +## Mevcut Durum (Özet) + +### Entity Desteği + +| Durum | Entity'ler | +|-------|-----------| +| **Tam** (render + grips + props + transform) | Point, Line, Circle, Arc, Ellipse, Spline, LwPolyline, Polyline, Polyline2D, Polyline3D, Ray, XLine, Text, MText, Leader, MultiLeader, RasterImage, Wipeout, AttributeDefinition, AttributeEntity, MLine, Table, Tolerance, Face3D, PolygonMesh, PolyfaceMesh | +| **Özel render, kısmi** | Dimension *(tessellate_dimension — grips yok)*, Hatch *(GPU HatchModel — grips yok)*, Insert *(explode_from_document)*, Viewport *(border render)* | +| **Hiç yok** | Solid *(2D dolu katı)*, Solid3D/Region/Body *(ACIS)*, Underlay *(PDF/DWF/DGN)*, Shape *(font glyph)* | + +### I/O +- DWG okuma/yazma: R14 → R2018 (AC1032) +- DXF okuma/yazma +- PDF export (PlotSettings entegreli, rotation, offset, scale, window) + +### Komutlar +203 benzersiz komut string — çizim, düzenleme, katman, görünüm, annotasyon, yardımcı. + +### acadrust Tablo/Object Kullanımı +Kullanılan: `layers`, `linetypes`, `text_styles`, `dim_styles`, `views`, `ucss`, `vports`, `block_records`, `Layout`, `Group`, `PlotSettings`, `SortEntitiesTable` +Kullanılmayan: `MLineStyle`, `TableStyle`, `ImageDefinition` + +--- + +## Kalan İşler + +### 1 — Entity Tamamlama + +#### 1.1 Dimension Grips ✅ +**Öncelik: Yüksek** — **TAMAMLANDI** + +- [x] DimLinear: definition point, dim line, text grips +- [x] DimAligned: aynı +- [x] DimAngular: vertex + extension grips +- [x] DimRadius / DimDiameter: center + radius point grip +- [x] Grip ile dimension text konumu düzenleme + +**Dosyalar:** `src/entities/dimension.rs` + +--- + +#### 1.2 Hatch Boundary Grips ✅ +**Öncelik: Orta** — **TAMAMLANDI** + +- [x] Her boundary loop köşesi için grip (Polyline, Line, Arc, EllipticArc, Spline) +- [x] Grip sürükleme → boundary vertex güncelleme → hatch yeniden tessellate + +**Dosyalar:** `src/entities/hatch.rs`, `src/scene/mod.rs` + +--- + +#### 1.3 Solid Entity (2D) ✅ +**Öncelik: Düşük** — **TAMAMLANDI** + +- [x] `TruckConvertible`: wireframe çevre + GPU solid-fill (hatch pipeline) +- [x] Grips: 4 köşe +- [x] Properties: 4 köşe koordinatı, thickness +- [x] `Transformable` + +**Dosyalar:** `src/entities/solid.rs` + +--- + +#### 1.4 Underlay (PDF/DWF/DGN Referans) +**Öncelik: Düşük** + +- [ ] Wireframe sınır kutusu render (RasterImage gibi) +- [ ] Fade/contrast/clip properties +- [ ] `UNDERLAY` komutu (dosya seçimi olmadan — sadece mevcut entity düzenleme) + +**Dosyalar:** yeni `src/entities/underlay.rs` + +--- + +### 2 — Viewport & Kağıt Uzayı + +#### 2.1 VPCLIP +**Öncelik: Düşük** | **Bloker: acadrust `Viewport` struct'ında `clip_boundary` alanı yok** + +- [ ] Özel overlay ile polygon clip sınırı çizimi +- [ ] VPCLIP komutu +- [ ] Clip boundary grip düzenlemesi + +--- + +#### 2.2 Yeni Viewport Default Freeze Listesi +**Öncelik: Düşük** | **Bloker: acadrust VPLAYER NEWFRZ desteği yok** + +- [ ] MVIEW ile oluşturulan yeni viewport'lara dondurulmuş layer listesi uygulanması + +--- + +#### 2.3 Per-Viewport Arka Plan Rengi +**Öncelik: Düşük** + +- [ ] Viewport entity'sine arka plan rengi alanı (custom veya overlay) +- [ ] wgpu pipeline'da per-viewport clear color + +--- + +#### 2.4 Layer UI — Per-Viewport Görünürlük +**Öncelik: Düşük** + +- [ ] Layer panelinde her viewport için ayrı freeze/thaw göstergesi + +--- + +#### 2.5 Plot Style Table (CTB/STB) +**Öncelik: Orta** + +- [ ] CTB (color-based) dosya okuma/yazma +- [ ] STB (named) dosya okuma/yazma +- [ ] PDF export sırasında plot style renk/kalınlık dönüşümü +- [ ] PlotSettings'e CTB/STB referansı + +--- + +#### 2.6 PDF Shade Plot (Hidden Line Removal) +**Öncelik: Düşük** + +- [ ] PDF export sırasında shade_plot_mode = Hidden → arka taraftaki kenarları gizle +- [ ] Depth sorting + backface culling (wireframe model için) + +--- + +### 3 — Koordinat Sistemi + +#### 3.1 WCS ↔ UCS Dönüşüm +**Öncelik: Orta** + +Şu an tüm komutlar WCS (world) koordinatında çalışıyor. + +- [ ] Aktif UCS matrisini komutlara entegre (giriş noktaları UCS → WCS dönüşümü) +- [ ] Snap grid'i UCS düzlemine hizala +- [ ] `UCS` komutu ile gerçek koordinat sistemi geçişi + +**Dosyalar:** `src/scene/mod.rs`, `src/app/commands.rs` + +--- + +#### 3.2 UCS Icon Render ✅ +**Öncelik: Düşük** — **TAMAMLANDI** + +- [x] Model space sol alt köşesinde XYZ eksen oku çizimi (iced canvas overlay) +- [x] Kamera rotasyonuna göre eksen yönleri dinamik olarak hesaplanıyor +- [x] `UCSICON` komutu ile toggle (ON/OFF) + +--- + +### 4 — Style Yöneticileri (UI Dialogları) + +#### 4.1 DimStyle Dialog +**Öncelik: Orta** + +`DIMSTYLE LIST/NEW/SET` komutları mevcut; tam UI yok. + +- [ ] Tüm DimStyle özelliklerini gösteren panel/dialog +- [ ] Ok tipi seçici (DIMBLK/DIMBLK1/DIMBLK2) — acadrust `dimblk` alanı var +- [ ] Tolerans format ayarları (DIMTOL, DIMLIM) +- [ ] Preview ile gerçek zamanlı önizleme + +**Dosyalar:** yeni `src/ui/dimstyle_dialog.rs` + +--- + +#### 4.2 TextStyle Font Browser +**Öncelik: Düşük** + +`STYLE LIST/NEW/FONT/WIDTH/OBLIQUE` komutları mevcut; dosya browser yok. + +- [ ] Sistem font listesi +- [ ] SHX font listesi (assets/fonts/) +- [ ] Önizleme metni + +**Dosyalar:** yeni `src/ui/textstyle_dialog.rs` + +--- + +#### 4.3 MLineStyle Yöneticisi +**Öncelik: Düşük** + +`MLineStyle` acadrust'ta mevcut (`objects/mline_style.rs`) ama H7CAD hiç kullanmıyor. + +- [ ] MLineStyle oluştur/düzenle (çizgi sayısı, offset, renk, linetype) +- [ ] Caps (başlangıç/bitiş çizgi, yay) +- [ ] MLINE komutuna stil seçimi entegre + +**Dosyalar:** yeni `src/ui/mlinestyle_dialog.rs` + +--- + +#### 4.4 TableStyle Yöneticisi +**Öncelik: Düşük** + +`TableStyle` acadrust'ta mevcut (`objects/table_style.rs`) ama kullanılmıyor. + +- [ ] Başlık satırı, veri satırı, sütun başlığı stilleri +- [ ] Font, renk, kenarlık, hizalama +- [ ] TABLE komutuna stil seçimi entegre + +--- + +### 5 — Render İyileştirmeleri + +#### 5.1 Wipeout Gerçek Maskeleme +**Öncelik: Düşük** + +Şu an sadece wireframe sınır çiziliyor. + +- [ ] SortEntitiesTable draw order entegrasyonu ile beyaz/arka plan renkli dolgu +- [ ] Polygon şeklini doldur (hatch solid benzeri) + +--- + +#### 5.2 Tolerance GD&T Box Render +**Öncelik: Düşük** + +Şu an sadece ham metin gösteriliyor. + +- [ ] Gerçek feature control frame kutuları (bölmeli dikdörtgen) +- [ ] GD&T sembol seçici (Φ, ⊕, ○, □ vb.) + +--- + +#### 5.3 IMAGE Komutu / Raster Pipeline +**Öncelik: Düşük** + +RasterImage entity render yok (sadece sınır kutusu + X). + +- [ ] PNG/JPEG/BMP decode (image crate) +- [ ] GPU texture upload + quad render +- [ ] `IMAGE` komutu: dosya seçimi dialog +- [ ] `ImageDefinition` object yönetimi + +--- + +### 6 — 3D / ACIS + +#### 6.1 Solid3D / Region / Body (ACIS) +**Öncelik: Çok Düşük** | **Bloker: SAT/SAB parser gerektirir** + +acadrust `Solid3D`, `Region`, `Body` entity'lerini parse ediyor ama ACIS kernel yok. + +- [ ] SAT text parse → B-rep half-edge yapısı +- [ ] Basit tessellation (flat shading, display-only) +- [ ] ACIS primitives: Box, Cylinder, Cone, Sphere, Torus + +--- + +## Hızlı Referans — Kalan İşler Öncelik Sırası + +| # | Özellik | Öncelik | Zorluk | +|---|---------|---------|--------| +| 1 | Dimension grips | Yüksek | Orta | +| 2 | WCS↔UCS dönüşüm | Orta | Yüksek | +| 3 | DimStyle dialog | Orta | Orta | +| 4 | Plot style table CTB/STB | Orta | Orta | +| 5 | Hatch boundary grips | Orta | Orta | +| 6 | Solid entity (2D) | Düşük | Kolay | +| 7 | Underlay entity | Düşük | Kolay | +| 8 | UCS icon render | Düşük | Kolay | +| 9 | Wipeout maskeleme | Düşük | Orta | +| 10 | MLineStyle yöneticisi | Düşük | Orta | +| 11 | TableStyle yöneticisi | Düşük | Orta | +| 12 | TextStyle font browser | Düşük | Kolay | +| 13 | IMAGE / raster pipeline | Düşük | Yüksek | +| 14 | Per-viewport arka plan rengi | Düşük | Yüksek | +| 15 | PDF shade plot | Düşük | Yüksek | +| 16 | VPCLIP | Düşük | Yüksek + Bloker | +| 17 | Solid3D / ACIS | Çok Düşük | Çok Yüksek |