4 Commits
Author SHA1 Message Date
etwenandClaude Fable 5 f5ccc13e9c feat(export): Add STL export with parameter dialog (v0.6.0)
- StlExportService: binary/ASCII STL writer (degenerate triangle
  filtering, per-triangle normals) + B-rep re-tessellation
- StlExportDialog + StlExportViewModel: scope (merged/per-file),
  format, unit scale (mm/inch/custom), mesh quality (current/fine),
  live triangle count + size estimate; confirm before export
- Background export with UI-thread mesh snapshot (GeometryModel3D is
  DispatcherObject; only frozen MeshGeometry3D crosses threads)
- Fine quality = 0.15x import precision: CADability GetTriangulation
  returns cached mesh for coarser requests (no coarse option) and
  triangle count is non-monotonic in precision (0.4x < 1x)
- SmokeTest --stl-export-test: binary round-trip incl. inch scaling,
  ASCII structure, degenerate filtering, real-file fine re-tessellation
- Bump version to 0.6.0; update ARCHITECTURE/CLAUDE docs (Phase 15)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 08:44:34 +08:00
etwenandClaude Fable 5 c657417d6b feat: v0.5.0 feature round - measurement, view, tree, section, export upgrades
Measurement / interaction:
- Circle-center snap in Snap(): click near a circular edge to snap to its
  center (hole-to-hole pitch measuring); nearest of vertex vs circle wins
- Esc cancels pending multi-step measurement, then exits mode, then gizmo;
  hotkeys P/D/E/F/C/A/M toggle measure modes (ignored while typing)
- Volume/centroid via mesh signed volume (open-shell detection rejects
  unreliable results); tree context menu adds it as a measurement

View / UI:
- Standard views (Iso/Front/Top/Right, Z-up) + orthographic toggle;
  gizmo overlay camera now switches type to match main camera
- GridSplitters for tree/measurement panels; node tooltip shows AABB LxWxH
- Tree name filter (matches + ancestors + subtree, auto-expand);
  context menu: isolate node / invert visibility / show all
- Settings persistence (window bounds, unit, 10-file MRU) in
  %LOCALAPPDATA%/STPViewer/settings.json; recent-files dropdown

Files / section:
- Interference accepts >=2 visible files, checks all pairs
- Export STEP: visible Solids/Shells at current aligned positions via
  CADability ExportStep; SmokeTest --export-test round-trip verifies
- Custom section plane by picking 3 points (axis combo 3-pt); plane
  position generalized to AABB-corner projection; numeric position input
- Bump version to 0.5.0

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 08:34:20 +08:00
etwenandClaude Opus 4.8 3556e25e96 chore: Add --bbox SmokeTest diagnostic and v0.3.1 release notes
BBoxDump prints per-leaf world-space bounding boxes (to work out each
connector's mating-face axis); wired as `SmokeTest --bbox <file>`. Also tracks
the previously untracked v0.3.1 release notes.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 16:49:07 +08:00
etwenandClaude Opus 4.8 0e19dbae1b feat: Initial release v0.1.0
STP/STEP 3D viewer (WPF, .NET 8) - CADability + HelixToolkit.Wpf:

- Multi-file import (STEP/STL/DXF) with STEP assembly tree
  (per-node visibility/color cascade, zoom-to)
- Measurements: point / distance / edge / face / circle / angle /
  face-to-face distance (B-rep exact where available)
- Assembly verification: two-point align (translate), 3-point align
  (rotate+translate via RigidAlign), axis rotate 90, interference
  check (tri-tri intersection + min gap)
- Section view (CPU mesh clipping, originals preserved)
- mm/inch toggle, CSV export (UTF-8 BOM), 2x PNG screenshot
- Performance: per-file merged edge lines, per-leaf merged mesh in
  browse mode, no BackMaterial on closed solids, edge suspend during
  camera interaction, parallel leaf triangulation with retry
- SmokeTest CLI: import pipeline, --tree, --clip-test,
  --interference-test, --align-test (all passing)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13 00:16:10 +08:00