Hakan Seven
a99115bda5
feat: Solid3D (3DSOLID) ACIS tessellation
...
Parse SAT geometry directly into GPU MeshModel without going through
the truck B-rep pipeline:
• plane-surface faces → fan-triangulate the coedge-loop polygon
• cone-surface faces → parametric grid (handles cylinders and cones)
• sphere-surface faces → UV sphere grid (GRID_U × GRID_V)
• torus-surface faces → UV torus grid
Scene integration:
• add_entity(): tessellates Solid3D on insert, stores in scene.meshes
• erase_entities(): removes mesh from scene.meshes on delete
• populate_meshes_from_document(): rebuilds all meshes on file load
and undo/redo (called alongside populate_hatches/images)
ROADMAP updated: Solid3D tessellation marked ✅ in sections 2.12, 14.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-07 19:11:24 +03:00
Hakan Seven
efc259fdbe
feat: per-viewport layer freeze columns in Layer Manager
...
Add VP freeze/thaw toggle columns to the layer panel when in a paper
space layout. Each viewport gets its own column (VP 1, VP 2, …) showing
a freeze icon per layer. Clicking toggles frozen_layers on the Viewport
entity and syncs back to the panel.
- scene: viewport_list() → [(handle, label, frozen_handles)]
- LayerPanel: VpCol + vp_frozen per layer, sync_with_viewports()
- Message::LayerToggleVpFreeze(layer_idx, vp_col_idx)
- Sync VP columns on layout switch, VPLAYER cmd, undo/redo, layer ops
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-06 23:41:39 +03:00
Hakan Seven
4312b6c3a5
feat: raster image render pipeline (IMAGE command + GPU textured quad)
...
- Add IMAGE / IMAGEATTACH / IM command with async file-picker (rfd)
- src/scene/image_model.rs: ImageModel with RGBA pixel data + quad corners
- src/scene/pipeline/image_gpu.rs: ImageGpu with wgpu texture, sampler, opacity uniform
- src/scene/pipeline/mod.rs: image render pipeline (pass 2, between hatches and meshes)
- src/scene/render.rs: include images in Primitive, call upload_images in prepare
- src/scene/mod.rs: images HashMap, populate_images_from_document, cache on add_entity
- src/modules/home/draw/raster_image.rs: ImageCommand (two-click: origin + width, aspect-correct preview)
- src/io/mod.rs: pick_image_file() async helper (file dialog + dimension decode)
- app: ImagePick / ImagePickResult messages, populate on file open and undo/redo
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-06 23:19:08 +03:00
Hakan Seven
ed9cbc2092
Refactor src/main.rs into modular src/app/ structure
...
Split the 4500-line main.rs into focused submodules under src/app/:
- mod.rs: H7CAD struct, Message enum, boot/new/run
- document.rs: DocumentTab, HistorySnapshot, HistoryState
- helpers.rs: pure helper functions
- history.rs: undo/redo logic
- properties.rs: properties panel logic
- layers.rs: layer sync
- commands.rs: dispatch_command
- cmd_result.rs: apply_cmd_result
- view.rs: view, subscription, tab bar
- update.rs: update message handler
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-22 22:44:32 +03:00