forked from 1b-agent/opencadstudio-upstream
fix(viewport): frame paper viewports on the robust cluster centre
Floating viewports on a survey-coordinate drawing rendered blank: the model camera was correct, but content viewports whose saved view was rejected auto-fitted onto empty space. Two causes, both in model-space extents handling: - compute_model_space_extents tested vertex finiteness in f64 but stored f32. A long RAY/XLINE endpoint is a huge-but-finite f64 that overflows to inf in f32, poisoning the extents to (inf, inf). Also, the wire/mesh AABB paths checked only x while folding y in, so a vertical ray's infinite y leaked through. Now every component is validated after the f32 cast. - camera_for_viewport framed its overlap test and auto-fit on the raw extents centre. When a drawing has a second, far cluster (a small- coordinate legend beside a UTM survey), that centre sits in the empty gap, so a valid saved view fails the overlap test and the auto-fit aims at blank space. cluster_extent_from_centers already computed a robust centre (median of entity centroids) but discarded it; surface it as Scene.local_center and frame on that instead. Co-Authored-By: Claude Opus 4.8 <[email protected]>
This commit is contained in:
1 parent
dfdf8f6702
commit
d641ecfea2
2 files changed
+62
-26
No files matched your search
@@ -634,6 +634,7 @@ impl OpenCADStudio {
|
||||
|
||||
// Caches were built on the background thread inside open_path().
|
||||
self.tabs[i].scene.local_extent_max = caches.local_extent_max;
|
||||
self.tabs[i].scene.local_center = caches.local_center;
|
||||
self.tabs[i].scene.hatches = caches.hatches;
|
||||
self.tabs[i].scene.images = caches.images;
|
||||
self.tabs[i].scene.meshes = caches.meshes;
|
||||
|
||||
Reference in new issue
Block a user