forked from 1b-agent/opencadstudio-upstream
fix: honor GRIDUNIT X/Y spacing and LIMITS option in grid display
The viewport grid ignored the configured spacing and forced square grids: compute_grid_step hardcoded a 1.0 base, a single shared step drove both line families (including the tangent derivative used for gap measurement), and the display always clipped to LIMITS despite the beyond-Limits option. Grid spacing now scales per-axis from GRIDUNIT via compute_grid_steps (adaptive 5x growth, fixed passthrough), GridParams carries step_x/step_y, snap tolerances follow the visible steps, and the LIMITS clip is skipped when beyond-Limits is set. Also fixes a per-axis overflow fallback that returned the X base for Y. Spacing state (X/Y, adaptive, beyond-Limits) is stored on the app and persisted to UserSettings at defaults; dialog wiring follows separately.
This commit is contained in:
1 parent
bb29b987c2
commit
05f462f294
7 files changed
+246
-73
No files matched your search
+19
-6
@@ -443,18 +443,31 @@ impl OpenCADStudio {
|
||||
);
|
||||
axes = (ux.as_vec3(), uy.as_vec3(), uz.as_vec3());
|
||||
}
|
||||
// BUG FIX: the display step used to ignore GRIDUNIT entirely
|
||||
// (hardcoded 1.0 base). It now resizes from the DSettings
|
||||
// grid spacing, and honors "Display grid beyond Limits".
|
||||
let (step_x, step_y) = crate::ui::overlay::compute_grid_steps(
|
||||
self.grid_spacing_x,
|
||||
self.grid_spacing_y,
|
||||
cam.distance,
|
||||
cam.fov_y,
|
||||
bounds,
|
||||
self.grid_adaptive,
|
||||
);
|
||||
let limits = if self.grid_beyond_limits {
|
||||
None
|
||||
} else {
|
||||
tab.scene.grid_limits_for_viewport(handle)
|
||||
};
|
||||
crate::ui::overlay::GridParams {
|
||||
view_rot: cam.view_proj_rte(bounds),
|
||||
eye: cam.eye(),
|
||||
bounds,
|
||||
step: crate::ui::overlay::compute_grid_step(
|
||||
cam.distance,
|
||||
cam.fov_y,
|
||||
bounds,
|
||||
),
|
||||
step_x,
|
||||
step_y,
|
||||
origin,
|
||||
axes,
|
||||
limits: tab.scene.grid_limits_for_viewport(handle),
|
||||
limits,
|
||||
}
|
||||
})
|
||||
.collect();
|
||||
|
||||
Reference in new issue
Block a user