Add rectangle tool to sketch mode (#2005)
* Initial draft rectangle appear on screen * rectangle tool extra * Fix draft lines in all quadrants * Wait for first click to set up draft rectangle * Working rectangle commit * Update toolbar icon and disabling logic * A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu) * fmt * Working tool, one remaining bug around naively updating sketch nodes * Break out rectangle AST utilities * Remove unused imports * Disable Rectangle tool if sketch is not empty * Use existing tools for generating tag names * Add snapshot test for tool * A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu) * Rerun CI * Add comments, remove unrelated changes * fix rectangle bug from bad ast * Make rectangle tool equippable when the line tool is equipped * Change snapshot test to check the draft rectangle instead of commited one * A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu) * A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu) * Rerun CI * A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu) * Rerun CI --------- Co-authored-by: Kurt Hutten Irev-Dev <k.hutten@protonmail.ch> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
This commit is contained in:
@ -42,8 +42,12 @@ import {
|
||||
getSketchQuaternion,
|
||||
} from 'clientSideScene/sceneEntities'
|
||||
import { sketchOnExtrudedFace, startSketchOnDefault } from 'lang/modifyAst'
|
||||
import { Program, coreDump } from 'lang/wasm'
|
||||
import { getNodePathFromSourceRange, isSingleCursorInPipe } from 'lang/queryAst'
|
||||
import { Program, VariableDeclaration, coreDump } from 'lang/wasm'
|
||||
import {
|
||||
getNodeFromPath,
|
||||
getNodePathFromSourceRange,
|
||||
isSingleCursorInPipe,
|
||||
} from 'lang/queryAst'
|
||||
import { TEST } from 'env'
|
||||
import { exportFromEngine } from 'lib/exportFromEngine'
|
||||
import { Models } from '@kittycad/lib/dist/types/src'
|
||||
@ -278,6 +282,12 @@ export const ModelingMachineProvider = ({
|
||||
|
||||
return canExtrudeSelection(selectionRanges)
|
||||
},
|
||||
'Sketch is empty': ({ sketchDetails }) =>
|
||||
getNodeFromPath<VariableDeclaration>(
|
||||
kclManager.ast,
|
||||
sketchDetails?.sketchPathToNode || [],
|
||||
'VariableDeclaration'
|
||||
)?.node?.declarations[0]?.init.type !== 'PipeExpression',
|
||||
'Selection is on face': ({ selectionRanges }, { data }) => {
|
||||
if (data?.forceNewSketch) return false
|
||||
if (!isSingleCursorInPipe(selectionRanges, kclManager.ast))
|
||||
|
Reference in New Issue
Block a user