Closes https://github.com/KittyCAD/engine/issues/3494. Thanks to @nadr0 for helping on the JS side. If users set their units, the grid will stop auto scaling, and instead will be set to 10 of whatever unit they used. If users set their units, and those units are metric, then it'll include a scale bar (see screenshot). Imperial units won't have that bar. This behaviour is configurable via settings. ## Limitations - The scale bar below the grid cannot be disabled in metric units, and cannot be enabled in imperial units <img width="1690" alt="Screenshot 2025-06-05 at 7 51 41 PM" src="https://github.com/user-attachments/assets/c597087c-f96d-4c30-95f4-b3d8ba2b5567" />
137 lines
3.5 KiB
TypeScript
137 lines
3.5 KiB
TypeScript
import type { SaveSettingsPayload } from '@src/lib/settings/settingsTypes'
|
|
import { Themes } from '@src/lib/theme'
|
|
import type { DeepPartial } from '@src/lib/types'
|
|
|
|
import type { Settings } from '@rust/kcl-lib/bindings/Settings'
|
|
|
|
export const TEST_SETTINGS_KEY = '/settings.toml'
|
|
export const TEST_SETTINGS: DeepPartial<Settings> = {
|
|
app: {
|
|
appearance: {
|
|
theme: Themes.Dark,
|
|
},
|
|
onboarding_status: 'dismissed',
|
|
show_debug_panel: true,
|
|
fixed_size_grid: false,
|
|
},
|
|
modeling: {
|
|
enable_ssao: false,
|
|
base_unit: 'in',
|
|
mouse_controls: 'zoo',
|
|
camera_projection: 'perspective',
|
|
},
|
|
project: {
|
|
default_project_name: 'untitled',
|
|
directory: '',
|
|
},
|
|
text_editor: {
|
|
text_wrapping: true,
|
|
},
|
|
}
|
|
|
|
export const TEST_SETTINGS_ONBOARDING_START: DeepPartial<Settings> = {
|
|
...TEST_SETTINGS,
|
|
app: { ...TEST_SETTINGS.app, onboarding_status: '' },
|
|
}
|
|
|
|
export const TEST_SETTINGS_DEFAULT_THEME: DeepPartial<Settings> = {
|
|
...TEST_SETTINGS,
|
|
app: { ...TEST_SETTINGS.app, appearance: { theme: Themes.System } },
|
|
}
|
|
|
|
export const TEST_SETTINGS_CORRUPTED = {
|
|
app: {
|
|
theme: Themes.Dark,
|
|
onboardingStatus: 'dismissed',
|
|
projectDirectory: 123 as any,
|
|
showDebugPanel: true,
|
|
},
|
|
modeling: {
|
|
defaultUnit: 'invalid' as any,
|
|
mouseControls: `() => alert('hack the planet')` as any,
|
|
cameraProjection: 'perspective',
|
|
},
|
|
projects: {
|
|
defaultProjectName: false as any,
|
|
},
|
|
textEditor: {
|
|
textWrapping: true,
|
|
},
|
|
} satisfies Partial<SaveSettingsPayload>
|
|
|
|
export const TEST_CODE_GIZMO = `@settings(defaultLengthUnit = in)
|
|
part001 = startSketchOn(XZ)
|
|
|> startProfile(at = [20, 0])
|
|
|> line(end = [7.13, 4 + 0])
|
|
|> angledLine(angle = 3 + 0, length = 3.14 + 0 )
|
|
|> line(endAbsolute = [20.14 + 0, -0.14 + 0])
|
|
|> xLine(endAbsolute = 29 + 0)
|
|
|> yLine(length = -3.14 + 0, tag = $a)
|
|
|> xLine(length = 1.63)
|
|
|> angledLine(angle = 3 + 0, lengthX = 3.14 )
|
|
|> angledLine(angle = 30, lengthY = 3 + 0 )
|
|
|> angledLine(angle = 22.14 + 0, endAbsoluteX = 12)
|
|
|> angledLine(angle = 30, endAbsoluteY = 11.14)
|
|
|> angledLineThatIntersects(angle = 3.14, intersectTag = a, offset = 0)
|
|
|> tangentialArc(endAbsolute = [13.14 + 0, 13.14])
|
|
|> close()
|
|
|> extrude(length = 5 + 7)
|
|
`
|
|
|
|
export const TEST_CODE_LONG_WITH_ERROR_OUT_OF_VIEW = `width = 50.8
|
|
height = 30
|
|
thickness = 2
|
|
keychainHoleSize = 3
|
|
|
|
keychain = startSketchOn(XY)
|
|
|> startProfile(at = [0, 0])
|
|
|> line(endAbsolute = [width, 0])
|
|
|> line(endAbsolute = [width, height])
|
|
|> line(endAbsolute = [0, height])
|
|
|> close()
|
|
|> extrude(length = thickness)
|
|
|
|
keychain1 = startSketchOn(XY)
|
|
|> startProfile(at = [0, 0])
|
|
|> line(endAbsolute = [width, 0])
|
|
|> line(endAbsolute = [width, height])
|
|
|> line(endAbsolute = [0, height])
|
|
|> close()
|
|
|> extrude(length = thickness)
|
|
|
|
keychain2 = startSketchOn(XY)
|
|
|> startProfile(at = [0, 0])
|
|
|> line(endAbsolute = [width, 0])
|
|
|> line(endAbsolute = [width, height])
|
|
|> line(endAbsolute = [0, height])
|
|
|> close()
|
|
|> extrude(length = thickness)
|
|
|
|
box = startSketchOn(XY)
|
|
|> startProfile(at = [0, 0])
|
|
|> line(end = [0, 10])
|
|
|> line(end = [10, 0])
|
|
|> line(end = [0, -10], tag = $revolveAxis)
|
|
|> close()
|
|
|> extrude(length = 10)
|
|
|
|
sketch001 = startSketchOn(box, face = revolveAxis)
|
|
|> startProfile(at = [5, 10])
|
|
|> line(end = [0, -10])
|
|
|> line(end = [2, 0])
|
|
|> line(end = [0, -10])
|
|
|> close()
|
|
|> revolve(
|
|
axis = revolveAxis,
|
|
angle = 90
|
|
)
|
|
|
|
sketch001 = startSketchOn(XZ)
|
|
|> startProfile(at = [0.0, 0.0])
|
|
|> xLine(length = 0.0)
|
|
|> close()
|
|
|
|
`
|
|
|
|
export const TEST_CODE_TRIGGER_ENGINE_EXPORT_ERROR = `thing = 1`
|