diff --git a/docs/kcl-lang/settings/user.md b/docs/kcl-lang/settings/user.md index 22041bafb..6de362a10 100644 --- a/docs/kcl-lang/settings/user.md +++ b/docs/kcl-lang/settings/user.md @@ -85,6 +85,13 @@ Whether to show the debug panel, which lets you see various states of the app to **Default:** None +##### fixed_size_grid + +If true, the grid cells will be fixed-size, where the width is the user's default length unit. If false, the grid's size will scale as the user zooms in and out. + + +**Default:** true + #### modeling diff --git a/e2e/playwright/snapshot-tests.spec.ts-snapshots/Grid-visibility-Grid-turned-off-1-Google-Chrome-linux.png b/e2e/playwright/snapshot-tests.spec.ts-snapshots/Grid-visibility-Grid-turned-off-1-Google-Chrome-linux.png index 1e80da8d2..eacab08ae 100644 Binary files a/e2e/playwright/snapshot-tests.spec.ts-snapshots/Grid-visibility-Grid-turned-off-1-Google-Chrome-linux.png and b/e2e/playwright/snapshot-tests.spec.ts-snapshots/Grid-visibility-Grid-turned-off-1-Google-Chrome-linux.png differ diff --git a/e2e/playwright/snapshot-tests.spec.ts-snapshots/Grid-visibility-Grid-turned-off-to-on-via-command-bar-1-Google-Chrome-linux.png b/e2e/playwright/snapshot-tests.spec.ts-snapshots/Grid-visibility-Grid-turned-off-to-on-via-command-bar-1-Google-Chrome-linux.png index 719006d9f..5f57ff93a 100644 Binary files a/e2e/playwright/snapshot-tests.spec.ts-snapshots/Grid-visibility-Grid-turned-off-to-on-via-command-bar-1-Google-Chrome-linux.png and b/e2e/playwright/snapshot-tests.spec.ts-snapshots/Grid-visibility-Grid-turned-off-to-on-via-command-bar-1-Google-Chrome-linux.png differ diff --git a/e2e/playwright/snapshot-tests.spec.ts-snapshots/Grid-visibility-Grid-turned-on-1-Google-Chrome-linux.png b/e2e/playwright/snapshot-tests.spec.ts-snapshots/Grid-visibility-Grid-turned-on-1-Google-Chrome-linux.png index 213ed4553..e30429789 100644 Binary files a/e2e/playwright/snapshot-tests.spec.ts-snapshots/Grid-visibility-Grid-turned-on-1-Google-Chrome-linux.png and b/e2e/playwright/snapshot-tests.spec.ts-snapshots/Grid-visibility-Grid-turned-on-1-Google-Chrome-linux.png differ diff --git a/e2e/playwright/snapshot-tests.spec.ts-snapshots/Sketch-on-face-with-none-z-up-1-Google-Chrome-linux.png b/e2e/playwright/snapshot-tests.spec.ts-snapshots/Sketch-on-face-with-none-z-up-1-Google-Chrome-linux.png index c0847c94a..4cbe04dfb 100644 Binary files a/e2e/playwright/snapshot-tests.spec.ts-snapshots/Sketch-on-face-with-none-z-up-1-Google-Chrome-linux.png and b/e2e/playwright/snapshot-tests.spec.ts-snapshots/Sketch-on-face-with-none-z-up-1-Google-Chrome-linux.png differ diff --git a/e2e/playwright/snapshot-tests.spec.ts-snapshots/Zoom-to-fit-on-load---solid-2d-1-Google-Chrome-linux.png b/e2e/playwright/snapshot-tests.spec.ts-snapshots/Zoom-to-fit-on-load---solid-2d-1-Google-Chrome-linux.png index 71ab7f7d8..7821a8055 100644 Binary files a/e2e/playwright/snapshot-tests.spec.ts-snapshots/Zoom-to-fit-on-load---solid-2d-1-Google-Chrome-linux.png and b/e2e/playwright/snapshot-tests.spec.ts-snapshots/Zoom-to-fit-on-load---solid-2d-1-Google-Chrome-linux.png differ diff --git a/e2e/playwright/snapshot-tests.spec.ts-snapshots/code-color-goober-code-color-goober-1-Google-Chrome-linux.png b/e2e/playwright/snapshot-tests.spec.ts-snapshots/code-color-goober-code-color-goober-1-Google-Chrome-linux.png index 0746a7283..162c96a49 100644 Binary files a/e2e/playwright/snapshot-tests.spec.ts-snapshots/code-color-goober-code-color-goober-1-Google-Chrome-linux.png and b/e2e/playwright/snapshot-tests.spec.ts-snapshots/code-color-goober-code-color-goober-1-Google-Chrome-linux.png differ diff --git a/e2e/playwright/snapshot-tests.spec.ts-snapshots/code-color-goober-code-color-goober-opening-window-1-Google-Chrome-linux.png b/e2e/playwright/snapshot-tests.spec.ts-snapshots/code-color-goober-code-color-goober-opening-window-1-Google-Chrome-linux.png index 4b158be34..3fbf27f3b 100644 Binary files a/e2e/playwright/snapshot-tests.spec.ts-snapshots/code-color-goober-code-color-goober-opening-window-1-Google-Chrome-linux.png and b/e2e/playwright/snapshot-tests.spec.ts-snapshots/code-color-goober-code-color-goober-opening-window-1-Google-Chrome-linux.png differ diff --git a/e2e/playwright/snapshot-tests.spec.ts-snapshots/code-color-goober-code-color-goober-works-with-single-quotes-1-Google-Chrome-linux.png b/e2e/playwright/snapshot-tests.spec.ts-snapshots/code-color-goober-code-color-goober-works-with-single-quotes-1-Google-Chrome-linux.png index e75d89128..35363cec0 100644 Binary files a/e2e/playwright/snapshot-tests.spec.ts-snapshots/code-color-goober-code-color-goober-works-with-single-quotes-1-Google-Chrome-linux.png and b/e2e/playwright/snapshot-tests.spec.ts-snapshots/code-color-goober-code-color-goober-works-with-single-quotes-1-Google-Chrome-linux.png differ diff --git a/e2e/playwright/snapshot-tests.spec.ts-snapshots/extrude-on-default-planes-should-be-stable--YZ-1-Google-Chrome-linux.png b/e2e/playwright/snapshot-tests.spec.ts-snapshots/extrude-on-default-planes-should-be-stable--YZ-1-Google-Chrome-linux.png index 97974b5f5..da810501c 100644 Binary files a/e2e/playwright/snapshot-tests.spec.ts-snapshots/extrude-on-default-planes-should-be-stable--YZ-1-Google-Chrome-linux.png and b/e2e/playwright/snapshot-tests.spec.ts-snapshots/extrude-on-default-planes-should-be-stable--YZ-1-Google-Chrome-linux.png differ diff --git a/e2e/playwright/snapshot-tests.spec.ts-snapshots/extrude-on-default-planes-should-be-stable-XY-1-Google-Chrome-linux.png b/e2e/playwright/snapshot-tests.spec.ts-snapshots/extrude-on-default-planes-should-be-stable-XY-1-Google-Chrome-linux.png index 713ba6dd0..2a65403b8 100644 Binary files a/e2e/playwright/snapshot-tests.spec.ts-snapshots/extrude-on-default-planes-should-be-stable-XY-1-Google-Chrome-linux.png and b/e2e/playwright/snapshot-tests.spec.ts-snapshots/extrude-on-default-planes-should-be-stable-XY-1-Google-Chrome-linux.png differ diff --git a/e2e/playwright/snapshot-tests.spec.ts-snapshots/extrude-on-default-planes-should-be-stable-XZ-1-Google-Chrome-linux.png b/e2e/playwright/snapshot-tests.spec.ts-snapshots/extrude-on-default-planes-should-be-stable-XZ-1-Google-Chrome-linux.png index bc6bc23f0..683750b57 100644 Binary files a/e2e/playwright/snapshot-tests.spec.ts-snapshots/extrude-on-default-planes-should-be-stable-XZ-1-Google-Chrome-linux.png and b/e2e/playwright/snapshot-tests.spec.ts-snapshots/extrude-on-default-planes-should-be-stable-XZ-1-Google-Chrome-linux.png differ diff --git a/e2e/playwright/snapshot-tests.spec.ts-snapshots/extrude-on-default-planes-should-be-stable-YZ-1-Google-Chrome-linux.png b/e2e/playwright/snapshot-tests.spec.ts-snapshots/extrude-on-default-planes-should-be-stable-YZ-1-Google-Chrome-linux.png index fc674990f..51c07efa2 100644 Binary files a/e2e/playwright/snapshot-tests.spec.ts-snapshots/extrude-on-default-planes-should-be-stable-YZ-1-Google-Chrome-linux.png and b/e2e/playwright/snapshot-tests.spec.ts-snapshots/extrude-on-default-planes-should-be-stable-YZ-1-Google-Chrome-linux.png differ diff --git a/e2e/playwright/storageStates.ts b/e2e/playwright/storageStates.ts index 310ffa3f5..be6d50b0e 100644 --- a/e2e/playwright/storageStates.ts +++ b/e2e/playwright/storageStates.ts @@ -12,6 +12,7 @@ export const TEST_SETTINGS: DeepPartial = { }, onboarding_status: 'dismissed', show_debug_panel: true, + fixed_size_grid: false, }, modeling: { enable_ssao: false, diff --git a/e2e/playwright/test-utils.ts b/e2e/playwright/test-utils.ts index 56c62ddbe..e613c4f5b 100644 --- a/e2e/playwright/test-utils.ts +++ b/e2e/playwright/test-utils.ts @@ -880,6 +880,10 @@ export async function setup( }, ...TEST_SETTINGS.project, onboarding_status: 'dismissed', + // Tests were written before this setting existed. + // It's true by default because it's a good user experience, but + // these tests require it to be false. + fixed_size_grid: false, }, project: { ...TEST_SETTINGS.project, diff --git a/public/kcl-samples/screenshots/axial-fan.png b/public/kcl-samples/screenshots/axial-fan.png index ec1fbbe40..e4246bda5 100644 Binary files a/public/kcl-samples/screenshots/axial-fan.png and b/public/kcl-samples/screenshots/axial-fan.png differ diff --git a/public/kcl-samples/screenshots/bone-plate.png b/public/kcl-samples/screenshots/bone-plate.png index 9567cf038..a824858ae 100644 Binary files a/public/kcl-samples/screenshots/bone-plate.png and b/public/kcl-samples/screenshots/bone-plate.png differ diff --git a/public/kcl-samples/screenshots/bottle.png b/public/kcl-samples/screenshots/bottle.png index 81741e6ef..cd4e93bab 100644 Binary files a/public/kcl-samples/screenshots/bottle.png and b/public/kcl-samples/screenshots/bottle.png differ diff --git a/public/kcl-samples/screenshots/bracket.png b/public/kcl-samples/screenshots/bracket.png index df061cf03..cae7dddb7 100644 Binary files a/public/kcl-samples/screenshots/bracket.png and b/public/kcl-samples/screenshots/bracket.png differ diff --git a/public/kcl-samples/screenshots/brake-rotor.png b/public/kcl-samples/screenshots/brake-rotor.png index 5f81cce42..b3a66a62c 100644 Binary files a/public/kcl-samples/screenshots/brake-rotor.png and b/public/kcl-samples/screenshots/brake-rotor.png differ diff --git a/public/kcl-samples/screenshots/car-wheel-assembly.png b/public/kcl-samples/screenshots/car-wheel-assembly.png index 4bcb3a4dc..23fa30632 100644 Binary files a/public/kcl-samples/screenshots/car-wheel-assembly.png and b/public/kcl-samples/screenshots/car-wheel-assembly.png differ diff --git a/public/kcl-samples/screenshots/clock.png b/public/kcl-samples/screenshots/clock.png index 75b11de3e..b51a2b00a 100644 Binary files a/public/kcl-samples/screenshots/clock.png and b/public/kcl-samples/screenshots/clock.png differ diff --git a/public/kcl-samples/screenshots/cold-plate.png b/public/kcl-samples/screenshots/cold-plate.png index fcfa05b37..071d40843 100644 Binary files a/public/kcl-samples/screenshots/cold-plate.png and b/public/kcl-samples/screenshots/cold-plate.png differ diff --git a/public/kcl-samples/screenshots/color-cube.png b/public/kcl-samples/screenshots/color-cube.png index 38f5ecc3d..0f83a2941 100644 Binary files a/public/kcl-samples/screenshots/color-cube.png and b/public/kcl-samples/screenshots/color-cube.png differ diff --git a/public/kcl-samples/screenshots/counterdrilled-weldment.png b/public/kcl-samples/screenshots/counterdrilled-weldment.png index 256866d43..f69ee6cf3 100644 Binary files a/public/kcl-samples/screenshots/counterdrilled-weldment.png and b/public/kcl-samples/screenshots/counterdrilled-weldment.png differ diff --git a/public/kcl-samples/screenshots/countersunk-plate.png b/public/kcl-samples/screenshots/countersunk-plate.png index fe1ad16c1..137166445 100644 Binary files a/public/kcl-samples/screenshots/countersunk-plate.png and b/public/kcl-samples/screenshots/countersunk-plate.png differ diff --git a/public/kcl-samples/screenshots/cpu-cooler.png b/public/kcl-samples/screenshots/cpu-cooler.png index 0c3aa76f5..592550b2a 100644 Binary files a/public/kcl-samples/screenshots/cpu-cooler.png and b/public/kcl-samples/screenshots/cpu-cooler.png differ diff --git a/public/kcl-samples/screenshots/curtain-wall-anchor-plate.png b/public/kcl-samples/screenshots/curtain-wall-anchor-plate.png index e0fd65806..0927f713d 100644 Binary files a/public/kcl-samples/screenshots/curtain-wall-anchor-plate.png and b/public/kcl-samples/screenshots/curtain-wall-anchor-plate.png differ diff --git a/public/kcl-samples/screenshots/enclosure.png b/public/kcl-samples/screenshots/enclosure.png index 7a956aff9..80a328e6d 100644 Binary files a/public/kcl-samples/screenshots/enclosure.png and b/public/kcl-samples/screenshots/enclosure.png differ diff --git a/public/kcl-samples/screenshots/exhaust-manifold.png b/public/kcl-samples/screenshots/exhaust-manifold.png index 8397d45c8..4962c7185 100644 Binary files a/public/kcl-samples/screenshots/exhaust-manifold.png and b/public/kcl-samples/screenshots/exhaust-manifold.png differ diff --git a/public/kcl-samples/screenshots/flange.png b/public/kcl-samples/screenshots/flange.png index 35f6fe37d..7c086bb7d 100644 Binary files a/public/kcl-samples/screenshots/flange.png and b/public/kcl-samples/screenshots/flange.png differ diff --git a/public/kcl-samples/screenshots/focusrite-scarlett-mounting-bracket.png b/public/kcl-samples/screenshots/focusrite-scarlett-mounting-bracket.png index ae02d1fe3..1089a87b4 100644 Binary files a/public/kcl-samples/screenshots/focusrite-scarlett-mounting-bracket.png and b/public/kcl-samples/screenshots/focusrite-scarlett-mounting-bracket.png differ diff --git a/public/kcl-samples/screenshots/food-service-spatula.png b/public/kcl-samples/screenshots/food-service-spatula.png index b78515ad6..8d967377f 100644 Binary files a/public/kcl-samples/screenshots/food-service-spatula.png and b/public/kcl-samples/screenshots/food-service-spatula.png differ diff --git a/public/kcl-samples/screenshots/french-press.png b/public/kcl-samples/screenshots/french-press.png index a5befe095..7f062aa44 100644 Binary files a/public/kcl-samples/screenshots/french-press.png and b/public/kcl-samples/screenshots/french-press.png differ diff --git a/public/kcl-samples/screenshots/gridfinity-baseplate-magnets.png b/public/kcl-samples/screenshots/gridfinity-baseplate-magnets.png index 5379b881e..92afef8db 100644 Binary files a/public/kcl-samples/screenshots/gridfinity-baseplate-magnets.png and b/public/kcl-samples/screenshots/gridfinity-baseplate-magnets.png differ diff --git a/public/kcl-samples/screenshots/gridfinity-baseplate.png b/public/kcl-samples/screenshots/gridfinity-baseplate.png index e0919bb73..618685fad 100644 Binary files a/public/kcl-samples/screenshots/gridfinity-baseplate.png and b/public/kcl-samples/screenshots/gridfinity-baseplate.png differ diff --git a/public/kcl-samples/screenshots/gridfinity-bins-stacking-lip.png b/public/kcl-samples/screenshots/gridfinity-bins-stacking-lip.png index 3b6b72d3e..65949b7e8 100644 Binary files a/public/kcl-samples/screenshots/gridfinity-bins-stacking-lip.png and b/public/kcl-samples/screenshots/gridfinity-bins-stacking-lip.png differ diff --git a/public/kcl-samples/screenshots/gridfinity-bins.png b/public/kcl-samples/screenshots/gridfinity-bins.png index dddcbc9f5..4921559f8 100644 Binary files a/public/kcl-samples/screenshots/gridfinity-bins.png and b/public/kcl-samples/screenshots/gridfinity-bins.png differ diff --git a/public/kcl-samples/screenshots/hammer.png b/public/kcl-samples/screenshots/hammer.png index 5dc61b23a..04cf65fc9 100644 Binary files a/public/kcl-samples/screenshots/hammer.png and b/public/kcl-samples/screenshots/hammer.png differ diff --git a/public/kcl-samples/screenshots/helium-tank.png b/public/kcl-samples/screenshots/helium-tank.png index ec067878d..c5777ae77 100644 Binary files a/public/kcl-samples/screenshots/helium-tank.png and b/public/kcl-samples/screenshots/helium-tank.png differ diff --git a/public/kcl-samples/screenshots/keyboard.png b/public/kcl-samples/screenshots/keyboard.png index b9e303a43..4f2e2d5e7 100644 Binary files a/public/kcl-samples/screenshots/keyboard.png and b/public/kcl-samples/screenshots/keyboard.png differ diff --git a/public/kcl-samples/screenshots/lego.png b/public/kcl-samples/screenshots/lego.png index 3eb340445..c0a3c9717 100644 Binary files a/public/kcl-samples/screenshots/lego.png and b/public/kcl-samples/screenshots/lego.png differ diff --git a/public/kcl-samples/screenshots/makeup-mirror.png b/public/kcl-samples/screenshots/makeup-mirror.png index 26cf31c81..387bff081 100644 Binary files a/public/kcl-samples/screenshots/makeup-mirror.png and b/public/kcl-samples/screenshots/makeup-mirror.png differ diff --git a/public/kcl-samples/screenshots/mounting-plate.png b/public/kcl-samples/screenshots/mounting-plate.png index c20858030..068119713 100644 Binary files a/public/kcl-samples/screenshots/mounting-plate.png and b/public/kcl-samples/screenshots/mounting-plate.png differ diff --git a/public/kcl-samples/screenshots/mug.png b/public/kcl-samples/screenshots/mug.png index c155303a8..1a64b741d 100644 Binary files a/public/kcl-samples/screenshots/mug.png and b/public/kcl-samples/screenshots/mug.png differ diff --git a/public/kcl-samples/screenshots/multi-axis-robot.png b/public/kcl-samples/screenshots/multi-axis-robot.png index b58825d66..82a6c3659 100644 Binary files a/public/kcl-samples/screenshots/multi-axis-robot.png and b/public/kcl-samples/screenshots/multi-axis-robot.png differ diff --git a/public/kcl-samples/screenshots/pdu-faceplate.png b/public/kcl-samples/screenshots/pdu-faceplate.png index 183c1ef80..5b9e08047 100644 Binary files a/public/kcl-samples/screenshots/pdu-faceplate.png and b/public/kcl-samples/screenshots/pdu-faceplate.png differ diff --git a/public/kcl-samples/screenshots/pillow-block-bearing.png b/public/kcl-samples/screenshots/pillow-block-bearing.png index 3d2294822..3ae8866c5 100644 Binary files a/public/kcl-samples/screenshots/pillow-block-bearing.png and b/public/kcl-samples/screenshots/pillow-block-bearing.png differ diff --git a/public/kcl-samples/screenshots/pipe-flange-assembly.png b/public/kcl-samples/screenshots/pipe-flange-assembly.png index aeb18226d..b951c8d09 100644 Binary files a/public/kcl-samples/screenshots/pipe-flange-assembly.png and b/public/kcl-samples/screenshots/pipe-flange-assembly.png differ diff --git a/public/kcl-samples/screenshots/pipe.png b/public/kcl-samples/screenshots/pipe.png index 47061443b..cbb02eecc 100644 Binary files a/public/kcl-samples/screenshots/pipe.png and b/public/kcl-samples/screenshots/pipe.png differ diff --git a/public/kcl-samples/screenshots/poopy-shoe.png b/public/kcl-samples/screenshots/poopy-shoe.png index d53c57293..5aadd2e2e 100644 Binary files a/public/kcl-samples/screenshots/poopy-shoe.png and b/public/kcl-samples/screenshots/poopy-shoe.png differ diff --git a/public/kcl-samples/screenshots/prosthetic-hip.png b/public/kcl-samples/screenshots/prosthetic-hip.png index 313454984..5d468a892 100644 Binary files a/public/kcl-samples/screenshots/prosthetic-hip.png and b/public/kcl-samples/screenshots/prosthetic-hip.png differ diff --git a/public/kcl-samples/screenshots/router-template-cross-bar.png b/public/kcl-samples/screenshots/router-template-cross-bar.png index 87b6be7b0..3504d60bf 100644 Binary files a/public/kcl-samples/screenshots/router-template-cross-bar.png and b/public/kcl-samples/screenshots/router-template-cross-bar.png differ diff --git a/public/kcl-samples/screenshots/router-template-slate.png b/public/kcl-samples/screenshots/router-template-slate.png index 63e1baefb..c3a8586a7 100644 Binary files a/public/kcl-samples/screenshots/router-template-slate.png and b/public/kcl-samples/screenshots/router-template-slate.png differ diff --git a/public/kcl-samples/screenshots/sash-window.png b/public/kcl-samples/screenshots/sash-window.png index 25b78e749..ad4463e3c 100644 Binary files a/public/kcl-samples/screenshots/sash-window.png and b/public/kcl-samples/screenshots/sash-window.png differ diff --git a/public/kcl-samples/screenshots/sheet-metal-bracket.png b/public/kcl-samples/screenshots/sheet-metal-bracket.png index 3d8663e75..c91bf5947 100644 Binary files a/public/kcl-samples/screenshots/sheet-metal-bracket.png and b/public/kcl-samples/screenshots/sheet-metal-bracket.png differ diff --git a/public/kcl-samples/screenshots/spur-reduction-gearset.png b/public/kcl-samples/screenshots/spur-reduction-gearset.png index 1814a4c11..c4641dd5c 100644 Binary files a/public/kcl-samples/screenshots/spur-reduction-gearset.png and b/public/kcl-samples/screenshots/spur-reduction-gearset.png differ diff --git a/public/kcl-samples/screenshots/surgical-drill-guide.png b/public/kcl-samples/screenshots/surgical-drill-guide.png index 3c85b4ec8..b75b445e2 100644 Binary files a/public/kcl-samples/screenshots/surgical-drill-guide.png and b/public/kcl-samples/screenshots/surgical-drill-guide.png differ diff --git a/public/kcl-samples/screenshots/t-slot-rail.png b/public/kcl-samples/screenshots/t-slot-rail.png index 79000c971..07b9ed261 100644 Binary files a/public/kcl-samples/screenshots/t-slot-rail.png and b/public/kcl-samples/screenshots/t-slot-rail.png differ diff --git a/public/kcl-samples/screenshots/teapot.png b/public/kcl-samples/screenshots/teapot.png index 29ad7eef5..e6e5b5b5f 100644 Binary files a/public/kcl-samples/screenshots/teapot.png and b/public/kcl-samples/screenshots/teapot.png differ diff --git a/public/kcl-samples/screenshots/thermal-block-insert.png b/public/kcl-samples/screenshots/thermal-block-insert.png index 0ad9bdc4c..0133e8045 100644 Binary files a/public/kcl-samples/screenshots/thermal-block-insert.png and b/public/kcl-samples/screenshots/thermal-block-insert.png differ diff --git a/public/kcl-samples/screenshots/utility-sink.png b/public/kcl-samples/screenshots/utility-sink.png index a2f1c0322..e69de29bb 100644 Binary files a/public/kcl-samples/screenshots/utility-sink.png and b/public/kcl-samples/screenshots/utility-sink.png differ diff --git a/public/kcl-samples/screenshots/walkie-talkie.png b/public/kcl-samples/screenshots/walkie-talkie.png index 45350485c..65359b8c1 100644 Binary files a/public/kcl-samples/screenshots/walkie-talkie.png and b/public/kcl-samples/screenshots/walkie-talkie.png differ diff --git a/public/kcl-samples/screenshots/wing-spar.png b/public/kcl-samples/screenshots/wing-spar.png index 65aa48795..3c1186405 100644 Binary files a/public/kcl-samples/screenshots/wing-spar.png and b/public/kcl-samples/screenshots/wing-spar.png differ diff --git a/rust/kcl-lib/e2e/executor/outputs/cache_add_line_preserves_artifact_graph_0.png b/rust/kcl-lib/e2e/executor/outputs/cache_add_line_preserves_artifact_graph_0.png index 604c6ac57..b766dbca2 100644 Binary files a/rust/kcl-lib/e2e/executor/outputs/cache_add_line_preserves_artifact_graph_0.png and b/rust/kcl-lib/e2e/executor/outputs/cache_add_line_preserves_artifact_graph_0.png differ diff --git a/rust/kcl-lib/e2e/executor/outputs/cache_add_offset_plane_preserves_artifact_commands_0.png b/rust/kcl-lib/e2e/executor/outputs/cache_add_offset_plane_preserves_artifact_commands_0.png index d509758c1..68c13c43b 100644 Binary files a/rust/kcl-lib/e2e/executor/outputs/cache_add_offset_plane_preserves_artifact_commands_0.png and b/rust/kcl-lib/e2e/executor/outputs/cache_add_offset_plane_preserves_artifact_commands_0.png differ diff --git a/rust/kcl-lib/e2e/executor/outputs/cache_add_offset_plane_preserves_artifact_commands_1.png b/rust/kcl-lib/e2e/executor/outputs/cache_add_offset_plane_preserves_artifact_commands_1.png index 6a0dec49a..659b3f6a1 100644 Binary files a/rust/kcl-lib/e2e/executor/outputs/cache_add_offset_plane_preserves_artifact_commands_1.png and b/rust/kcl-lib/e2e/executor/outputs/cache_add_offset_plane_preserves_artifact_commands_1.png differ diff --git a/rust/kcl-lib/e2e/executor/outputs/cache_change_grid_visualizes_grid_off_to_on_1.png b/rust/kcl-lib/e2e/executor/outputs/cache_change_grid_visualizes_grid_off_to_on_1.png index b4ab07d29..5f4be48e2 100644 Binary files a/rust/kcl-lib/e2e/executor/outputs/cache_change_grid_visualizes_grid_off_to_on_1.png and b/rust/kcl-lib/e2e/executor/outputs/cache_change_grid_visualizes_grid_off_to_on_1.png differ diff --git a/rust/kcl-lib/e2e/executor/outputs/cache_change_grid_visualizes_grid_on_to_off_0.png b/rust/kcl-lib/e2e/executor/outputs/cache_change_grid_visualizes_grid_on_to_off_0.png index 3fb4d4e2d..5f4be48e2 100644 Binary files a/rust/kcl-lib/e2e/executor/outputs/cache_change_grid_visualizes_grid_on_to_off_0.png and b/rust/kcl-lib/e2e/executor/outputs/cache_change_grid_visualizes_grid_on_to_off_0.png differ diff --git a/rust/kcl-lib/e2e/executor/outputs/cache_multi_file_same_code_dont_reexecute_settings_only_change_0.png b/rust/kcl-lib/e2e/executor/outputs/cache_multi_file_same_code_dont_reexecute_settings_only_change_0.png index 822437343..26938b671 100644 Binary files a/rust/kcl-lib/e2e/executor/outputs/cache_multi_file_same_code_dont_reexecute_settings_only_change_0.png and b/rust/kcl-lib/e2e/executor/outputs/cache_multi_file_same_code_dont_reexecute_settings_only_change_0.png differ diff --git a/rust/kcl-lib/e2e/executor/outputs/cache_multi_file_same_code_dont_reexecute_settings_only_change_1.png b/rust/kcl-lib/e2e/executor/outputs/cache_multi_file_same_code_dont_reexecute_settings_only_change_1.png index 3d47b72c6..014abce75 100644 Binary files a/rust/kcl-lib/e2e/executor/outputs/cache_multi_file_same_code_dont_reexecute_settings_only_change_1.png and b/rust/kcl-lib/e2e/executor/outputs/cache_multi_file_same_code_dont_reexecute_settings_only_change_1.png differ diff --git a/rust/kcl-lib/src/engine/mod.rs b/rust/kcl-lib/src/engine/mod.rs index aa2ceca8a..117a6adce 100644 --- a/rust/kcl-lib/src/engine/mod.rs +++ b/rust/kcl-lib/src/engine/mod.rs @@ -323,13 +323,15 @@ pub trait EngineManager: std::fmt::Debug + Send + Sync + 'static { settings: &crate::ExecutorSettings, source_range: SourceRange, id_generator: &mut IdGenerator, + grid_scale_unit: GridScaleBehavior, ) -> Result<(), crate::errors::KclError> { // Set the edge visibility. self.set_edge_visibility(settings.highlight_edges, source_range, id_generator) .await?; // Send the command to show the grid. - self.modify_grid(!settings.show_grid, source_range, id_generator) + + self.modify_grid(!settings.show_grid, grid_scale_unit, source_range, id_generator) .await?; // We do not have commands for changing ssao on the fly. @@ -760,6 +762,7 @@ pub trait EngineManager: std::fmt::Debug + Send + Sync + 'static { async fn modify_grid( &self, hidden: bool, + grid_scale_behavior: GridScaleBehavior, source_range: SourceRange, id_generator: &mut IdGenerator, ) -> Result<(), KclError> { @@ -774,6 +777,13 @@ pub trait EngineManager: std::fmt::Debug + Send + Sync + 'static { ) .await?; + self.batch_modeling_cmd( + id_generator.next_uuid(), + source_range, + &grid_scale_behavior.into_modeling_cmd(), + ) + .await?; + // Hide/show the grid scale text. self.batch_modeling_cmd( id_generator.next_uuid(), @@ -886,3 +896,22 @@ pub fn new_zoo_client(token: Option, engine_addr: Option) -> any Ok(client) } + +#[derive(Copy, Clone, Debug)] +pub enum GridScaleBehavior { + ScaleWithZoom, + Fixed(Option), +} + +impl GridScaleBehavior { + fn into_modeling_cmd(self) -> ModelingCmd { + const NUMBER_OF_GRID_COLUMNS: f32 = 10.0; + match self { + GridScaleBehavior::ScaleWithZoom => ModelingCmd::from(mcmd::SetGridAutoScale {}), + GridScaleBehavior::Fixed(unit_length) => ModelingCmd::from(mcmd::SetGridScale { + value: NUMBER_OF_GRID_COLUMNS, + units: unit_length.unwrap_or(kcmc::units::UnitLength::Millimeters), + }), + } + } +} diff --git a/rust/kcl-lib/src/execution/mod.rs b/rust/kcl-lib/src/execution/mod.rs index 9c69ac2d6..111a4edaf 100644 --- a/rust/kcl-lib/src/execution/mod.rs +++ b/rust/kcl-lib/src/execution/mod.rs @@ -31,7 +31,7 @@ pub use state::{ExecState, MetaSettings}; use uuid::Uuid; use crate::{ - engine::EngineManager, + engine::{EngineManager, GridScaleBehavior}, errors::{KclError, KclErrorDetails}, execution::{ cache::{CacheInformation, CacheResult}, @@ -295,6 +295,8 @@ pub struct ExecutorSettings { /// This is the path to the current file being executed. /// We use this for preventing cyclic imports. pub current_file: Option, + /// Whether or not to automatically scale the grid when user zooms. + pub fixed_size_grid: bool, } impl Default for ExecutorSettings { @@ -306,33 +308,34 @@ impl Default for ExecutorSettings { replay: None, project_directory: None, current_file: None, + fixed_size_grid: true, } } } impl From for ExecutorSettings { fn from(config: crate::settings::types::Configuration) -> Self { + Self::from(config.settings) + } +} + +impl From for ExecutorSettings { + fn from(settings: crate::settings::types::Settings) -> Self { Self { - highlight_edges: config.settings.modeling.highlight_edges.into(), - enable_ssao: config.settings.modeling.enable_ssao.into(), - show_grid: config.settings.modeling.show_scale_grid, + highlight_edges: settings.modeling.highlight_edges.into(), + enable_ssao: settings.modeling.enable_ssao.into(), + show_grid: settings.modeling.show_scale_grid, replay: None, project_directory: None, current_file: None, + fixed_size_grid: settings.app.fixed_size_grid, } } } impl From for ExecutorSettings { fn from(config: crate::settings::types::project::ProjectConfiguration) -> Self { - Self { - highlight_edges: config.settings.modeling.highlight_edges.into(), - enable_ssao: config.settings.modeling.enable_ssao.into(), - show_grid: Default::default(), - replay: None, - project_directory: None, - current_file: None, - } + Self::from(config.settings.modeling) } } @@ -345,6 +348,7 @@ impl From for ExecutorSettings { replay: None, project_directory: None, current_file: None, + fixed_size_grid: true, } } } @@ -358,6 +362,7 @@ impl From for Executor replay: None, project_directory: None, current_file: None, + fixed_size_grid: true, } } } @@ -497,6 +502,7 @@ impl ExecutorContext { replay: None, project_directory: None, current_file: None, + fixed_size_grid: false, }, None, engine_addr, @@ -592,6 +598,18 @@ impl ExecutorContext { pub async fn run_with_caching(&self, program: crate::Program) -> Result { assert!(!self.is_mock()); + let grid_scale = if self.settings.fixed_size_grid { + GridScaleBehavior::Fixed( + program + .meta_settings() + .ok() + .flatten() + .map(|s| s.default_length_units) + .map(kcmc::units::UnitLength::from), + ) + } else { + GridScaleBehavior::ScaleWithZoom + }; let (program, exec_state, result) = match cache::read_old_ast().await { Some(mut cached_state) => { @@ -618,6 +636,7 @@ impl ExecutorContext { &self.settings, Default::default(), &mut cached_state.main.exec_state.id_generator, + grid_scale, ) .await .is_err() @@ -645,6 +664,7 @@ impl ExecutorContext { &self.settings, Default::default(), &mut cached_state.main.exec_state.id_generator, + grid_scale, ) .await .is_err() @@ -689,6 +709,7 @@ impl ExecutorContext { &self.settings, Default::default(), &mut cached_state.main.exec_state.id_generator, + grid_scale, ) .await .is_ok() @@ -1077,8 +1098,25 @@ impl ExecutorContext { let _stats = crate::log::LogPerfStats::new("Interpretation"); // Re-apply the settings, in case the cache was busted. + let grid_scale = if self.settings.fixed_size_grid { + GridScaleBehavior::Fixed( + program + .meta_settings() + .ok() + .flatten() + .map(|s| s.default_length_units) + .map(kcmc::units::UnitLength::from), + ) + } else { + GridScaleBehavior::ScaleWithZoom + }; self.engine - .reapply_settings(&self.settings, Default::default(), exec_state.id_generator()) + .reapply_settings( + &self.settings, + Default::default(), + exec_state.id_generator(), + grid_scale, + ) .await .map_err(KclErrorWithOutputs::no_outputs)?; diff --git a/rust/kcl-lib/src/settings/types/mod.rs b/rust/kcl-lib/src/settings/types/mod.rs index 1350aa29f..b98a7808e 100644 --- a/rust/kcl-lib/src/settings/types/mod.rs +++ b/rust/kcl-lib/src/settings/types/mod.rs @@ -64,7 +64,7 @@ pub struct Settings { } /// Application wide settings. -#[derive(Debug, Default, Clone, Deserialize, Serialize, JsonSchema, ts_rs::TS, PartialEq, Validate)] +#[derive(Debug, Clone, Deserialize, Serialize, JsonSchema, ts_rs::TS, PartialEq, Validate)] #[ts(export)] #[serde(rename_all = "snake_case")] pub struct AppSettings { @@ -94,6 +94,29 @@ pub struct AppSettings { /// of the app to aid in development. #[serde(default, skip_serializing_if = "is_default")] pub show_debug_panel: bool, + /// If true, the grid cells will be fixed-size, where the width is the user's default length unit. + /// If false, the grid's size will scale as the user zooms in and out. + #[serde(default = "make_it_so")] + pub fixed_size_grid: bool, +} + +/// Default to true. +fn make_it_so() -> bool { + true +} + +impl Default for AppSettings { + fn default() -> Self { + Self { + appearance: Default::default(), + onboarding_status: Default::default(), + dismiss_web_banner: Default::default(), + stream_idle_mode: Default::default(), + allow_orbit_in_sketch_mode: Default::default(), + show_debug_panel: Default::default(), + fixed_size_grid: make_it_so(), + } + } } fn deserialize_stream_idle_mode<'de, D>(deserializer: D) -> Result, D::Error> @@ -660,7 +683,7 @@ text_wrapping = true"#; }, }; let parsed = toml::from_str::(settings_file).unwrap(); - assert_eq!(parsed, expected,); + assert_eq!(parsed, expected); // Write the file back out. let serialized = toml::to_string(&parsed).unwrap(); @@ -668,6 +691,7 @@ text_wrapping = true"#; serialized, r#"[settings.app] onboarding_status = "dismissed" +fixed_size_grid = true [settings.app.appearance] theme = "dark" diff --git a/rust/kcl-lib/src/test_server.rs b/rust/kcl-lib/src/test_server.rs index ad707ac65..3cbaa348b 100644 --- a/rust/kcl-lib/src/test_server.rs +++ b/rust/kcl-lib/src/test_server.rs @@ -141,6 +141,7 @@ pub async fn new_context(with_auth: bool, current_file: Option) -> Resu replay: None, project_directory: None, current_file: None, + fixed_size_grid: true, }; if let Some(current_file) = current_file { settings.with_current_file(crate::TypedPath(current_file)); diff --git a/rust/kcl-lib/tests/artifact_graph_example_code_offset_planes/rendered_model.png b/rust/kcl-lib/tests/artifact_graph_example_code_offset_planes/rendered_model.png index 8ebc133b1..ca70b800f 100644 Binary files a/rust/kcl-lib/tests/artifact_graph_example_code_offset_planes/rendered_model.png and b/rust/kcl-lib/tests/artifact_graph_example_code_offset_planes/rendered_model.png differ diff --git a/rust/kcl-lib/tests/assembly_mixed_units_cubes/rendered_model.png b/rust/kcl-lib/tests/assembly_mixed_units_cubes/rendered_model.png index 2637cc8f0..81467aea4 100644 Binary files a/rust/kcl-lib/tests/assembly_mixed_units_cubes/rendered_model.png and b/rust/kcl-lib/tests/assembly_mixed_units_cubes/rendered_model.png differ diff --git a/rust/kcl-lib/tests/circular_pattern3d_a_pattern/rendered_model.png b/rust/kcl-lib/tests/circular_pattern3d_a_pattern/rendered_model.png index 89ccdd529..29449a3df 100644 Binary files a/rust/kcl-lib/tests/circular_pattern3d_a_pattern/rendered_model.png and b/rust/kcl-lib/tests/circular_pattern3d_a_pattern/rendered_model.png differ diff --git a/rust/kcl-lib/tests/i_shape/rendered_model.png b/rust/kcl-lib/tests/i_shape/rendered_model.png index 6c855cc88..b27b1ec32 100644 Binary files a/rust/kcl-lib/tests/i_shape/rendered_model.png and b/rust/kcl-lib/tests/i_shape/rendered_model.png differ diff --git a/rust/kcl-lib/tests/import_transform/rendered_model.png b/rust/kcl-lib/tests/import_transform/rendered_model.png index c6c9dc8b0..8c2a899fb 100644 Binary files a/rust/kcl-lib/tests/import_transform/rendered_model.png and b/rust/kcl-lib/tests/import_transform/rendered_model.png differ diff --git a/rust/kcl-lib/tests/involute_circular_units/rendered_model.png b/rust/kcl-lib/tests/involute_circular_units/rendered_model.png index 0100952b2..1f64f8fed 100644 Binary files a/rust/kcl-lib/tests/involute_circular_units/rendered_model.png and b/rust/kcl-lib/tests/involute_circular_units/rendered_model.png differ diff --git a/rust/kcl-lib/tests/kcl_samples/axial-fan/rendered_model.png b/rust/kcl-lib/tests/kcl_samples/axial-fan/rendered_model.png index ec1fbbe40..e4246bda5 100644 Binary files a/rust/kcl-lib/tests/kcl_samples/axial-fan/rendered_model.png and b/rust/kcl-lib/tests/kcl_samples/axial-fan/rendered_model.png differ diff --git a/rust/kcl-lib/tests/kcl_samples/bone-plate/rendered_model.png b/rust/kcl-lib/tests/kcl_samples/bone-plate/rendered_model.png index 9567cf038..a824858ae 100644 Binary files a/rust/kcl-lib/tests/kcl_samples/bone-plate/rendered_model.png and b/rust/kcl-lib/tests/kcl_samples/bone-plate/rendered_model.png differ diff --git a/rust/kcl-lib/tests/kcl_samples/bottle/rendered_model.png b/rust/kcl-lib/tests/kcl_samples/bottle/rendered_model.png index 81741e6ef..cd4e93bab 100644 Binary files a/rust/kcl-lib/tests/kcl_samples/bottle/rendered_model.png and b/rust/kcl-lib/tests/kcl_samples/bottle/rendered_model.png differ diff --git a/rust/kcl-lib/tests/kcl_samples/bracket/rendered_model.png b/rust/kcl-lib/tests/kcl_samples/bracket/rendered_model.png index df061cf03..cae7dddb7 100644 Binary files a/rust/kcl-lib/tests/kcl_samples/bracket/rendered_model.png and b/rust/kcl-lib/tests/kcl_samples/bracket/rendered_model.png differ diff --git a/rust/kcl-lib/tests/kcl_samples/brake-rotor/rendered_model.png b/rust/kcl-lib/tests/kcl_samples/brake-rotor/rendered_model.png index 5f81cce42..b3a66a62c 100644 Binary files a/rust/kcl-lib/tests/kcl_samples/brake-rotor/rendered_model.png and b/rust/kcl-lib/tests/kcl_samples/brake-rotor/rendered_model.png differ diff --git a/rust/kcl-lib/tests/kcl_samples/car-wheel-assembly/rendered_model.png b/rust/kcl-lib/tests/kcl_samples/car-wheel-assembly/rendered_model.png index 4bcb3a4dc..23fa30632 100644 Binary files a/rust/kcl-lib/tests/kcl_samples/car-wheel-assembly/rendered_model.png and b/rust/kcl-lib/tests/kcl_samples/car-wheel-assembly/rendered_model.png differ diff --git a/rust/kcl-lib/tests/kcl_samples/clock/rendered_model.png b/rust/kcl-lib/tests/kcl_samples/clock/rendered_model.png index 75b11de3e..b51a2b00a 100644 Binary files a/rust/kcl-lib/tests/kcl_samples/clock/rendered_model.png and b/rust/kcl-lib/tests/kcl_samples/clock/rendered_model.png differ diff --git a/rust/kcl-lib/tests/kcl_samples/cold-plate/rendered_model.png b/rust/kcl-lib/tests/kcl_samples/cold-plate/rendered_model.png index fcfa05b37..071d40843 100644 Binary files a/rust/kcl-lib/tests/kcl_samples/cold-plate/rendered_model.png and b/rust/kcl-lib/tests/kcl_samples/cold-plate/rendered_model.png differ diff --git a/rust/kcl-lib/tests/kcl_samples/color-cube/rendered_model.png b/rust/kcl-lib/tests/kcl_samples/color-cube/rendered_model.png index 38f5ecc3d..0f83a2941 100644 Binary files a/rust/kcl-lib/tests/kcl_samples/color-cube/rendered_model.png and b/rust/kcl-lib/tests/kcl_samples/color-cube/rendered_model.png differ diff --git a/rust/kcl-lib/tests/kcl_samples/counterdrilled-weldment/rendered_model.png b/rust/kcl-lib/tests/kcl_samples/counterdrilled-weldment/rendered_model.png index 256866d43..f69ee6cf3 100644 Binary files a/rust/kcl-lib/tests/kcl_samples/counterdrilled-weldment/rendered_model.png and b/rust/kcl-lib/tests/kcl_samples/counterdrilled-weldment/rendered_model.png differ diff --git a/rust/kcl-lib/tests/kcl_samples/countersunk-plate/rendered_model.png b/rust/kcl-lib/tests/kcl_samples/countersunk-plate/rendered_model.png index fe1ad16c1..137166445 100644 Binary files a/rust/kcl-lib/tests/kcl_samples/countersunk-plate/rendered_model.png and b/rust/kcl-lib/tests/kcl_samples/countersunk-plate/rendered_model.png differ diff --git a/rust/kcl-lib/tests/kcl_samples/cpu-cooler/rendered_model.png b/rust/kcl-lib/tests/kcl_samples/cpu-cooler/rendered_model.png index 0c3aa76f5..592550b2a 100644 Binary files a/rust/kcl-lib/tests/kcl_samples/cpu-cooler/rendered_model.png and b/rust/kcl-lib/tests/kcl_samples/cpu-cooler/rendered_model.png differ diff --git a/rust/kcl-lib/tests/kcl_samples/curtain-wall-anchor-plate/rendered_model.png b/rust/kcl-lib/tests/kcl_samples/curtain-wall-anchor-plate/rendered_model.png index e0fd65806..0927f713d 100644 Binary files a/rust/kcl-lib/tests/kcl_samples/curtain-wall-anchor-plate/rendered_model.png and b/rust/kcl-lib/tests/kcl_samples/curtain-wall-anchor-plate/rendered_model.png differ diff --git a/rust/kcl-lib/tests/kcl_samples/enclosure/rendered_model.png b/rust/kcl-lib/tests/kcl_samples/enclosure/rendered_model.png index 7a956aff9..80a328e6d 100644 Binary files a/rust/kcl-lib/tests/kcl_samples/enclosure/rendered_model.png and b/rust/kcl-lib/tests/kcl_samples/enclosure/rendered_model.png differ diff --git a/rust/kcl-lib/tests/kcl_samples/exhaust-manifold/rendered_model.png b/rust/kcl-lib/tests/kcl_samples/exhaust-manifold/rendered_model.png index 8397d45c8..4962c7185 100644 Binary files a/rust/kcl-lib/tests/kcl_samples/exhaust-manifold/rendered_model.png and b/rust/kcl-lib/tests/kcl_samples/exhaust-manifold/rendered_model.png differ diff --git a/rust/kcl-lib/tests/kcl_samples/flange/rendered_model.png b/rust/kcl-lib/tests/kcl_samples/flange/rendered_model.png index 35f6fe37d..7c086bb7d 100644 Binary files a/rust/kcl-lib/tests/kcl_samples/flange/rendered_model.png and b/rust/kcl-lib/tests/kcl_samples/flange/rendered_model.png differ diff --git a/rust/kcl-lib/tests/kcl_samples/focusrite-scarlett-mounting-bracket/rendered_model.png b/rust/kcl-lib/tests/kcl_samples/focusrite-scarlett-mounting-bracket/rendered_model.png index ae02d1fe3..1089a87b4 100644 Binary files a/rust/kcl-lib/tests/kcl_samples/focusrite-scarlett-mounting-bracket/rendered_model.png and b/rust/kcl-lib/tests/kcl_samples/focusrite-scarlett-mounting-bracket/rendered_model.png differ diff --git a/rust/kcl-lib/tests/kcl_samples/food-service-spatula/rendered_model.png b/rust/kcl-lib/tests/kcl_samples/food-service-spatula/rendered_model.png index b78515ad6..8d967377f 100644 Binary files a/rust/kcl-lib/tests/kcl_samples/food-service-spatula/rendered_model.png and b/rust/kcl-lib/tests/kcl_samples/food-service-spatula/rendered_model.png differ diff --git a/rust/kcl-lib/tests/kcl_samples/french-press/rendered_model.png b/rust/kcl-lib/tests/kcl_samples/french-press/rendered_model.png index a5befe095..7f062aa44 100644 Binary files a/rust/kcl-lib/tests/kcl_samples/french-press/rendered_model.png and b/rust/kcl-lib/tests/kcl_samples/french-press/rendered_model.png differ diff --git a/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate-magnets/rendered_model.png b/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate-magnets/rendered_model.png index 5379b881e..92afef8db 100644 Binary files a/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate-magnets/rendered_model.png and b/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate-magnets/rendered_model.png differ diff --git a/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate/rendered_model.png b/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate/rendered_model.png index e0919bb73..618685fad 100644 Binary files a/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate/rendered_model.png and b/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate/rendered_model.png differ diff --git a/rust/kcl-lib/tests/kcl_samples/gridfinity-bins-stacking-lip/rendered_model.png b/rust/kcl-lib/tests/kcl_samples/gridfinity-bins-stacking-lip/rendered_model.png index 3b6b72d3e..65949b7e8 100644 Binary files a/rust/kcl-lib/tests/kcl_samples/gridfinity-bins-stacking-lip/rendered_model.png and b/rust/kcl-lib/tests/kcl_samples/gridfinity-bins-stacking-lip/rendered_model.png differ diff --git a/rust/kcl-lib/tests/kcl_samples/gridfinity-bins/rendered_model.png b/rust/kcl-lib/tests/kcl_samples/gridfinity-bins/rendered_model.png index dddcbc9f5..4921559f8 100644 Binary files a/rust/kcl-lib/tests/kcl_samples/gridfinity-bins/rendered_model.png and b/rust/kcl-lib/tests/kcl_samples/gridfinity-bins/rendered_model.png differ diff --git a/rust/kcl-lib/tests/kcl_samples/hammer/rendered_model.png b/rust/kcl-lib/tests/kcl_samples/hammer/rendered_model.png index 5dc61b23a..04cf65fc9 100644 Binary files a/rust/kcl-lib/tests/kcl_samples/hammer/rendered_model.png and b/rust/kcl-lib/tests/kcl_samples/hammer/rendered_model.png differ diff --git a/rust/kcl-lib/tests/kcl_samples/helium-tank/rendered_model.png b/rust/kcl-lib/tests/kcl_samples/helium-tank/rendered_model.png index ec067878d..c5777ae77 100644 Binary files a/rust/kcl-lib/tests/kcl_samples/helium-tank/rendered_model.png and b/rust/kcl-lib/tests/kcl_samples/helium-tank/rendered_model.png differ diff --git a/rust/kcl-lib/tests/kcl_samples/keyboard/rendered_model.png b/rust/kcl-lib/tests/kcl_samples/keyboard/rendered_model.png index b9e303a43..4f2e2d5e7 100644 Binary files a/rust/kcl-lib/tests/kcl_samples/keyboard/rendered_model.png and b/rust/kcl-lib/tests/kcl_samples/keyboard/rendered_model.png differ diff --git a/rust/kcl-lib/tests/kcl_samples/lego/rendered_model.png b/rust/kcl-lib/tests/kcl_samples/lego/rendered_model.png index 3eb340445..c0a3c9717 100644 Binary files a/rust/kcl-lib/tests/kcl_samples/lego/rendered_model.png and b/rust/kcl-lib/tests/kcl_samples/lego/rendered_model.png differ diff --git a/rust/kcl-lib/tests/kcl_samples/makeup-mirror/rendered_model.png b/rust/kcl-lib/tests/kcl_samples/makeup-mirror/rendered_model.png index 26cf31c81..387bff081 100644 Binary files a/rust/kcl-lib/tests/kcl_samples/makeup-mirror/rendered_model.png and b/rust/kcl-lib/tests/kcl_samples/makeup-mirror/rendered_model.png differ diff --git a/rust/kcl-lib/tests/kcl_samples/mounting-plate/rendered_model.png b/rust/kcl-lib/tests/kcl_samples/mounting-plate/rendered_model.png index c20858030..068119713 100644 Binary files a/rust/kcl-lib/tests/kcl_samples/mounting-plate/rendered_model.png and b/rust/kcl-lib/tests/kcl_samples/mounting-plate/rendered_model.png differ diff --git a/rust/kcl-lib/tests/kcl_samples/mug/rendered_model.png b/rust/kcl-lib/tests/kcl_samples/mug/rendered_model.png index c155303a8..1a64b741d 100644 Binary files a/rust/kcl-lib/tests/kcl_samples/mug/rendered_model.png and b/rust/kcl-lib/tests/kcl_samples/mug/rendered_model.png differ diff --git a/rust/kcl-lib/tests/kcl_samples/multi-axis-robot/rendered_model.png b/rust/kcl-lib/tests/kcl_samples/multi-axis-robot/rendered_model.png index b58825d66..82a6c3659 100644 Binary files a/rust/kcl-lib/tests/kcl_samples/multi-axis-robot/rendered_model.png and b/rust/kcl-lib/tests/kcl_samples/multi-axis-robot/rendered_model.png differ diff --git a/rust/kcl-lib/tests/kcl_samples/pdu-faceplate/rendered_model.png b/rust/kcl-lib/tests/kcl_samples/pdu-faceplate/rendered_model.png index 183c1ef80..5b9e08047 100644 Binary files a/rust/kcl-lib/tests/kcl_samples/pdu-faceplate/rendered_model.png and b/rust/kcl-lib/tests/kcl_samples/pdu-faceplate/rendered_model.png differ diff --git a/rust/kcl-lib/tests/kcl_samples/pillow-block-bearing/rendered_model.png b/rust/kcl-lib/tests/kcl_samples/pillow-block-bearing/rendered_model.png index 3d2294822..3ae8866c5 100644 Binary files a/rust/kcl-lib/tests/kcl_samples/pillow-block-bearing/rendered_model.png and b/rust/kcl-lib/tests/kcl_samples/pillow-block-bearing/rendered_model.png differ diff --git a/rust/kcl-lib/tests/kcl_samples/pipe-flange-assembly/rendered_model.png b/rust/kcl-lib/tests/kcl_samples/pipe-flange-assembly/rendered_model.png index aeb18226d..b951c8d09 100644 Binary files a/rust/kcl-lib/tests/kcl_samples/pipe-flange-assembly/rendered_model.png and b/rust/kcl-lib/tests/kcl_samples/pipe-flange-assembly/rendered_model.png differ diff --git a/rust/kcl-lib/tests/kcl_samples/pipe/rendered_model.png b/rust/kcl-lib/tests/kcl_samples/pipe/rendered_model.png index 47061443b..cbb02eecc 100644 Binary files a/rust/kcl-lib/tests/kcl_samples/pipe/rendered_model.png and b/rust/kcl-lib/tests/kcl_samples/pipe/rendered_model.png differ diff --git a/rust/kcl-lib/tests/kcl_samples/poopy-shoe/rendered_model.png b/rust/kcl-lib/tests/kcl_samples/poopy-shoe/rendered_model.png index d53c57293..5aadd2e2e 100644 Binary files a/rust/kcl-lib/tests/kcl_samples/poopy-shoe/rendered_model.png and b/rust/kcl-lib/tests/kcl_samples/poopy-shoe/rendered_model.png differ diff --git a/rust/kcl-lib/tests/kcl_samples/prosthetic-hip/rendered_model.png b/rust/kcl-lib/tests/kcl_samples/prosthetic-hip/rendered_model.png index 313454984..5d468a892 100644 Binary files a/rust/kcl-lib/tests/kcl_samples/prosthetic-hip/rendered_model.png and b/rust/kcl-lib/tests/kcl_samples/prosthetic-hip/rendered_model.png differ diff --git a/rust/kcl-lib/tests/kcl_samples/router-template-cross-bar/rendered_model.png b/rust/kcl-lib/tests/kcl_samples/router-template-cross-bar/rendered_model.png index 87b6be7b0..3504d60bf 100644 Binary files a/rust/kcl-lib/tests/kcl_samples/router-template-cross-bar/rendered_model.png and b/rust/kcl-lib/tests/kcl_samples/router-template-cross-bar/rendered_model.png differ diff --git a/rust/kcl-lib/tests/kcl_samples/router-template-slate/rendered_model.png b/rust/kcl-lib/tests/kcl_samples/router-template-slate/rendered_model.png index 63e1baefb..c3a8586a7 100644 Binary files a/rust/kcl-lib/tests/kcl_samples/router-template-slate/rendered_model.png and b/rust/kcl-lib/tests/kcl_samples/router-template-slate/rendered_model.png differ diff --git a/rust/kcl-lib/tests/kcl_samples/sash-window/rendered_model.png b/rust/kcl-lib/tests/kcl_samples/sash-window/rendered_model.png index 25b78e749..ad4463e3c 100644 Binary files a/rust/kcl-lib/tests/kcl_samples/sash-window/rendered_model.png and b/rust/kcl-lib/tests/kcl_samples/sash-window/rendered_model.png differ diff --git a/rust/kcl-lib/tests/kcl_samples/sheet-metal-bracket/rendered_model.png b/rust/kcl-lib/tests/kcl_samples/sheet-metal-bracket/rendered_model.png index 3d8663e75..c91bf5947 100644 Binary files a/rust/kcl-lib/tests/kcl_samples/sheet-metal-bracket/rendered_model.png and b/rust/kcl-lib/tests/kcl_samples/sheet-metal-bracket/rendered_model.png differ diff --git a/rust/kcl-lib/tests/kcl_samples/spool/rendered_model.png b/rust/kcl-lib/tests/kcl_samples/spool/rendered_model.png index a4b475682..393b1723b 100644 Binary files a/rust/kcl-lib/tests/kcl_samples/spool/rendered_model.png and b/rust/kcl-lib/tests/kcl_samples/spool/rendered_model.png differ diff --git a/rust/kcl-lib/tests/kcl_samples/spur-reduction-gearset/rendered_model.png b/rust/kcl-lib/tests/kcl_samples/spur-reduction-gearset/rendered_model.png index 1814a4c11..c4641dd5c 100644 Binary files a/rust/kcl-lib/tests/kcl_samples/spur-reduction-gearset/rendered_model.png and b/rust/kcl-lib/tests/kcl_samples/spur-reduction-gearset/rendered_model.png differ diff --git a/rust/kcl-lib/tests/kcl_samples/surgical-drill-guide/rendered_model.png b/rust/kcl-lib/tests/kcl_samples/surgical-drill-guide/rendered_model.png index 3c85b4ec8..b75b445e2 100644 Binary files a/rust/kcl-lib/tests/kcl_samples/surgical-drill-guide/rendered_model.png and b/rust/kcl-lib/tests/kcl_samples/surgical-drill-guide/rendered_model.png differ diff --git a/rust/kcl-lib/tests/kcl_samples/t-slot-rail/rendered_model.png b/rust/kcl-lib/tests/kcl_samples/t-slot-rail/rendered_model.png index 79000c971..07b9ed261 100644 Binary files a/rust/kcl-lib/tests/kcl_samples/t-slot-rail/rendered_model.png and b/rust/kcl-lib/tests/kcl_samples/t-slot-rail/rendered_model.png differ diff --git a/rust/kcl-lib/tests/kcl_samples/teapot/rendered_model.png b/rust/kcl-lib/tests/kcl_samples/teapot/rendered_model.png index 29ad7eef5..e6e5b5b5f 100644 Binary files a/rust/kcl-lib/tests/kcl_samples/teapot/rendered_model.png and b/rust/kcl-lib/tests/kcl_samples/teapot/rendered_model.png differ diff --git a/rust/kcl-lib/tests/kcl_samples/thermal-block-insert/rendered_model.png b/rust/kcl-lib/tests/kcl_samples/thermal-block-insert/rendered_model.png index 0ad9bdc4c..0133e8045 100644 Binary files a/rust/kcl-lib/tests/kcl_samples/thermal-block-insert/rendered_model.png and b/rust/kcl-lib/tests/kcl_samples/thermal-block-insert/rendered_model.png differ diff --git a/rust/kcl-lib/tests/kcl_samples/walkie-talkie/rendered_model.png b/rust/kcl-lib/tests/kcl_samples/walkie-talkie/rendered_model.png index 45350485c..65359b8c1 100644 Binary files a/rust/kcl-lib/tests/kcl_samples/walkie-talkie/rendered_model.png and b/rust/kcl-lib/tests/kcl_samples/walkie-talkie/rendered_model.png differ diff --git a/rust/kcl-lib/tests/kcl_samples/wing-spar/rendered_model.png b/rust/kcl-lib/tests/kcl_samples/wing-spar/rendered_model.png index 65aa48795..3c1186405 100644 Binary files a/rust/kcl-lib/tests/kcl_samples/wing-spar/rendered_model.png and b/rust/kcl-lib/tests/kcl_samples/wing-spar/rendered_model.png differ diff --git a/rust/kcl-lib/tests/loop_tag/rendered_model.png b/rust/kcl-lib/tests/loop_tag/rendered_model.png index 0423c90a7..ea10d8eb1 100644 Binary files a/rust/kcl-lib/tests/loop_tag/rendered_model.png and b/rust/kcl-lib/tests/loop_tag/rendered_model.png differ diff --git a/rust/kcl-lib/tests/neg_xz_plane/rendered_model.png b/rust/kcl-lib/tests/neg_xz_plane/rendered_model.png index cfd081820..2800ded4c 100644 Binary files a/rust/kcl-lib/tests/neg_xz_plane/rendered_model.png and b/rust/kcl-lib/tests/neg_xz_plane/rendered_model.png differ diff --git a/rust/kcl-lib/tests/out_of_band_sketches/rendered_model.png b/rust/kcl-lib/tests/out_of_band_sketches/rendered_model.png index 39a99076d..437b4d59a 100644 Binary files a/rust/kcl-lib/tests/out_of_band_sketches/rendered_model.png and b/rust/kcl-lib/tests/out_of_band_sketches/rendered_model.png differ diff --git a/rust/kcl-lib/tests/pentagon_fillet_sugar/rendered_model.png b/rust/kcl-lib/tests/pentagon_fillet_sugar/rendered_model.png index 9fb3adc0e..fce6fe9c3 100644 Binary files a/rust/kcl-lib/tests/pentagon_fillet_sugar/rendered_model.png and b/rust/kcl-lib/tests/pentagon_fillet_sugar/rendered_model.png differ diff --git a/rust/kcl-lib/tests/sketch-on-chamfer-two-times-different-order/rendered_model.png b/rust/kcl-lib/tests/sketch-on-chamfer-two-times-different-order/rendered_model.png index 95fbc1e5b..36258b975 100644 Binary files a/rust/kcl-lib/tests/sketch-on-chamfer-two-times-different-order/rendered_model.png and b/rust/kcl-lib/tests/sketch-on-chamfer-two-times-different-order/rendered_model.png differ diff --git a/rust/kcl-lib/tests/sketch-on-chamfer-two-times/rendered_model.png b/rust/kcl-lib/tests/sketch-on-chamfer-two-times/rendered_model.png index 95fbc1e5b..36258b975 100644 Binary files a/rust/kcl-lib/tests/sketch-on-chamfer-two-times/rendered_model.png and b/rust/kcl-lib/tests/sketch-on-chamfer-two-times/rendered_model.png differ diff --git a/rust/kcl-lib/tests/subtract_regression05/rendered_model.png b/rust/kcl-lib/tests/subtract_regression05/rendered_model.png index 0f06282bd..d204f07a5 100644 Binary files a/rust/kcl-lib/tests/subtract_regression05/rendered_model.png and b/rust/kcl-lib/tests/subtract_regression05/rendered_model.png differ diff --git a/rust/kcl-lib/tests/subtract_regression06/rendered_model.png b/rust/kcl-lib/tests/subtract_regression06/rendered_model.png index d04a0117c..7ce05f172 100644 Binary files a/rust/kcl-lib/tests/subtract_regression06/rendered_model.png and b/rust/kcl-lib/tests/subtract_regression06/rendered_model.png differ diff --git a/rust/kcl-lib/tests/subtract_regression08/rendered_model.png b/rust/kcl-lib/tests/subtract_regression08/rendered_model.png index 76d011a41..f275b6f39 100644 Binary files a/rust/kcl-lib/tests/subtract_regression08/rendered_model.png and b/rust/kcl-lib/tests/subtract_regression08/rendered_model.png differ diff --git a/rust/kcl-lib/tests/subtract_regression10/rendered_model.png b/rust/kcl-lib/tests/subtract_regression10/rendered_model.png index 95687abc4..a546522dd 100644 Binary files a/rust/kcl-lib/tests/subtract_regression10/rendered_model.png and b/rust/kcl-lib/tests/subtract_regression10/rendered_model.png differ diff --git a/rust/kcl-lib/tests/subtract_with_pattern/rendered_model.png b/rust/kcl-lib/tests/subtract_with_pattern/rendered_model.png index 68d442107..f9d4b773b 100644 Binary files a/rust/kcl-lib/tests/subtract_with_pattern/rendered_model.png and b/rust/kcl-lib/tests/subtract_with_pattern/rendered_model.png differ diff --git a/rust/kcl-lib/tests/subtract_with_pattern_cut_thru/rendered_model.png b/rust/kcl-lib/tests/subtract_with_pattern_cut_thru/rendered_model.png index 1c4724023..b59832ac5 100644 Binary files a/rust/kcl-lib/tests/subtract_with_pattern_cut_thru/rendered_model.png and b/rust/kcl-lib/tests/subtract_with_pattern_cut_thru/rendered_model.png differ diff --git a/rust/kcl-lib/tests/tangent_to_3_point_arc/rendered_model.png b/rust/kcl-lib/tests/tangent_to_3_point_arc/rendered_model.png index 3f0b98b94..be60fae80 100644 Binary files a/rust/kcl-lib/tests/tangent_to_3_point_arc/rendered_model.png and b/rust/kcl-lib/tests/tangent_to_3_point_arc/rendered_model.png differ diff --git a/rust/kcl-lib/tests/xz_plane/rendered_model.png b/rust/kcl-lib/tests/xz_plane/rendered_model.png index c373ad9d3..5578b4ffe 100644 Binary files a/rust/kcl-lib/tests/xz_plane/rendered_model.png and b/rust/kcl-lib/tests/xz_plane/rendered_model.png differ diff --git a/src/lib/settings/initialSettings.tsx b/src/lib/settings/initialSettings.tsx index 0c2135d6e..2c7b5b7ac 100644 --- a/src/lib/settings/initialSettings.tsx +++ b/src/lib/settings/initialSettings.tsx @@ -208,6 +208,16 @@ export function createSettings() { inputType: 'boolean', }, }), + fixedSizeGrid: new Setting({ + defaultValue: true, + hideOnLevel: 'project', + description: + 'When enabled, the grid will use a fixed size based on your selected units rather than automatically scaling with zoom level.', + validate: (v) => typeof v === 'boolean', + commandConfig: { + inputType: 'boolean', + }, + }), /** * Stream resource saving behavior toggle */ diff --git a/src/lib/settings/settingsUtils.ts b/src/lib/settings/settingsUtils.ts index bda3e9f7d..1eb55b3ac 100644 --- a/src/lib/settings/settingsUtils.ts +++ b/src/lib/settings/settingsUtils.ts @@ -66,6 +66,7 @@ export function configurationToSettingsPayload( configuration?.settings?.app?.allow_orbit_in_sketch_mode, projectDirectory: configuration?.settings?.project?.directory, showDebugPanel: configuration?.settings?.app?.show_debug_panel, + fixedSizeGrid: configuration?.settings?.app?.fixed_size_grid, }, modeling: { defaultUnit: configuration?.settings?.modeling?.base_unit, @@ -109,6 +110,7 @@ export function settingsPayloadToConfiguration( stream_idle_mode: configuration?.app?.streamIdleMode, allow_orbit_in_sketch_mode: configuration?.app?.allowOrbitInSketchMode, show_debug_panel: configuration?.app?.showDebugPanel, + fixed_size_grid: configuration?.app?.fixedSizeGrid, }, modeling: { base_unit: configuration?.modeling?.defaultUnit, diff --git a/src/lib/utils.ts b/src/lib/utils.ts index b818a9577..49b4e59c2 100644 --- a/src/lib/utils.ts +++ b/src/lib/utils.ts @@ -649,11 +649,40 @@ export async function engineViewIsometricWithoutGeometryPresent({ cameraProjection, }: { engineCommandManager: EngineCommandManager - unit?: UnitLength_type + unit: UnitLength_type cameraProjection: CameraProjectionType }) { + // When the video first loads, if the scene is empty (has no sketches/solids/etc defined) + // then the grid has a fixed size of 10 mm/cm/inches/whatever unit the user chose, and it + // will be at some fixed distance. This means the grid could be way too zoomed in or out. + // So, adjust the zoom depending on the chosen unit. + const scaleFactor = (() => { + const mmScale = 300 + const cmScale = mmScale / 10 + const mScale = cmScale / 100 + const inScale = mmScale / 25.4 + const ftScale = mmScale / 304.8 + const ydScale = mmScale / 914.4 + switch (unit) { + case 'mm': + return mmScale + case 'cm': + return cmScale + case 'm': + return mScale + case 'in': + return inScale + case 'yd': + return ydScale + case 'ft': + return ftScale + default: + const _exhaustiveCheck: never = unit + return 0 // unreachable + } + })() // If you load an empty scene with any file unit it will have an eye offset of this - const MAGIC_ENGINE_EYE_OFFSET = 1378.0057 + const magicEngineEyeOffset = 1378.0057 / scaleFactor const quat = computeIsometricQuaternionForEmptyScene() const isometricView: CameraViewState_type = { pivot_rotation: { @@ -667,7 +696,7 @@ export async function engineViewIsometricWithoutGeometryPresent({ y: 0, z: 0, }, - eye_offset: MAGIC_ENGINE_EYE_OFFSET, + eye_offset: magicEngineEyeOffset, fov_y: 45, ortho_scale_factor: 1.4063792, is_ortho: cameraProjection !== 'perspective',