Drag mode set BodyVisual.Transform = null when clearing the temporary
offset on release. HelixToolkit Viewport3DHelper.GetTransform adds
child.Transform to a GeneralTransform3DGroup without a null check, so
the next FindHits after any drag threw ArgumentException and crashed.
Clear the temporary transform with Transform3D.Identity instead.
Root cause confirmed by decompiling HelixToolkit.Wpf GetTransform.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- New Drag mode (hand cursor): left-press a part and drag to move
its whole file along the screen plane; release to commit
- During drag only a temporary TranslateTransform3D is applied
(GPU-side, smooth even on 430k-triangle assemblies); on release
the offset is baked into B-rep + meshes + edges via TranslateRoot,
so measurement accuracy is unaffected
- Merged-mesh hit-testing via _mergedMap (browse rendering active
in drag mode); edges suspended while dragging
- Mouse capture keeps drag alive outside the window; lost capture
commits at current position
- Right-button rotate / wheel zoom / Shift+left pan unchanged
- Rename small test model to test.stp; docs updated
(ARCHITECTURE Phase 9, CLAUDE.md conventions, README)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>