--- source: kcl-lib/src/simulation_tests.rs description: Result of parsing food-service-spatula.kcl --- { "Ok": { "body": [ { "commentStart": 0, "declaration": { "commentStart": 0, "end": 0, "id": { "commentStart": 0, "end": 0, "name": "flipperThickness", "start": 0, "type": "Identifier" }, "init": { "commentStart": 0, "end": 0, "raw": "3.5", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 3.5, "suffix": "None" } }, "start": 0, "type": "VariableDeclarator" }, "end": 0, "kind": "const", "preComments": [ "// Define parameters" ], "start": 0, "type": "VariableDeclaration", "type": "VariableDeclaration" }, { "commentStart": 0, "declaration": { "commentStart": 0, "end": 0, "id": { "commentStart": 0, "end": 0, "name": "flipperLength", "start": 0, "type": "Identifier" }, "init": { "commentStart": 0, "end": 0, "raw": "70.0", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 70.0, "suffix": "None" } }, "start": 0, "type": "VariableDeclarator" }, "end": 0, "kind": "const", "start": 0, "type": "VariableDeclaration", "type": "VariableDeclaration" }, { "commentStart": 0, "declaration": { "commentStart": 0, "end": 0, "id": { "commentStart": 0, "end": 0, "name": "handleWidth", "start": 0, "type": "Identifier" }, "init": { "commentStart": 0, "end": 0, "raw": "15.0", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 15.0, "suffix": "None" } }, "start": 0, "type": "VariableDeclarator" }, "end": 0, "kind": "const", "start": 0, "type": "VariableDeclaration", "type": "VariableDeclaration" }, { "commentStart": 0, "declaration": { "commentStart": 0, "end": 0, "id": { "commentStart": 0, "end": 0, "name": "gripLength", "start": 0, "type": "Identifier" }, "init": { "commentStart": 0, "end": 0, "raw": "150.0", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 150.0, "suffix": "None" } }, "start": 0, "type": "VariableDeclarator" }, "end": 0, "kind": "const", "start": 0, "type": "VariableDeclaration", "type": "VariableDeclaration" }, { "commentStart": 0, "declaration": { "commentStart": 0, "end": 0, "id": { "commentStart": 0, "end": 0, "name": "flipperFilletRadius", "start": 0, "type": "Identifier" }, "init": { "commentStart": 0, "end": 0, "raw": "5.0", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 5.0, "suffix": "None" } }, "start": 0, "type": "VariableDeclarator" }, "end": 0, "kind": "const", "start": 0, "type": "VariableDeclaration", "type": "VariableDeclaration" }, { "commentStart": 0, "declaration": { "commentStart": 0, "end": 0, "id": { "commentStart": 0, "end": 0, "name": "flipperSlotWidth", "start": 0, "type": "Identifier" }, "init": { "commentStart": 0, "end": 0, "raw": "10.0", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 10.0, "suffix": "None" } }, "start": 0, "type": "VariableDeclarator" }, "end": 0, "kind": "const", "start": 0, "type": "VariableDeclaration", "type": "VariableDeclaration" }, { "commentStart": 0, "declaration": { "commentStart": 0, "end": 0, "id": { "commentStart": 0, "end": 0, "name": "gripWidth", "start": 0, "type": "Identifier" }, "init": { "commentStart": 0, "end": 0, "raw": "10.0", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 10.0, "suffix": "None" } }, "start": 0, "type": "VariableDeclarator" }, "end": 0, "kind": "const", "start": 0, "type": "VariableDeclaration", "type": "VariableDeclaration" }, { "commentStart": 0, "declaration": { "commentStart": 0, "end": 0, "id": { "commentStart": 0, "end": 0, "name": "gripHeight", "start": 0, "type": "Identifier" }, "init": { "commentStart": 0, "end": 0, "raw": "20.0", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 20.0, "suffix": "None" } }, "start": 0, "type": "VariableDeclarator" }, "end": 0, "kind": "const", "start": 0, "type": "VariableDeclaration", "type": "VariableDeclaration" }, { "commentStart": 0, "declaration": { "commentStart": 0, "end": 0, "id": { "commentStart": 0, "end": 0, "name": "gripFilletRadius", "start": 0, "type": "Identifier" }, "init": { "commentStart": 0, "end": 0, "raw": "3.0", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 3.0, "suffix": "None" } }, "start": 0, "type": "VariableDeclarator" }, "end": 0, "kind": "const", "start": 0, "type": "VariableDeclaration", "type": "VariableDeclaration" }, { "commentStart": 0, "declaration": { "commentStart": 0, "end": 0, "id": { "commentStart": 0, "end": 0, "name": "gripSlotWidth", "start": 0, "type": "Identifier" }, "init": { "commentStart": 0, "end": 0, "raw": "8.0", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 8.0, "suffix": "None" } }, "start": 0, "type": "VariableDeclarator" }, "end": 0, "kind": "const", "start": 0, "type": "VariableDeclaration", "type": "VariableDeclaration" }, { "commentStart": 0, "declaration": { "commentStart": 0, "end": 0, "id": { "commentStart": 0, "end": 0, "name": "slot", "start": 0, "type": "Identifier" }, "init": { "body": { "body": [ { "commentStart": 0, "declaration": { "commentStart": 0, "end": 0, "id": { "commentStart": 0, "end": 0, "name": "angle", "start": 0, "type": "Identifier" }, "init": { "commentStart": 0, "cond": { "commentStart": 0, "end": 0, "left": { "commentStart": 0, "computed": false, "end": 0, "object": { "commentStart": 0, "end": 0, "name": "start", "start": 0, "type": "Identifier", "type": "Identifier" }, "property": { "commentStart": 0, "end": 0, "raw": "0", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 0.0, "suffix": "None" } }, "start": 0, "type": "MemberExpression", "type": "MemberExpression" }, "operator": "==", "right": { "commentStart": 0, "computed": false, "end": 0, "object": { "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier", "type": "Identifier" }, "property": { "commentStart": 0, "end": 0, "raw": "0", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 0.0, "suffix": "None" } }, "start": 0, "type": "MemberExpression", "type": "MemberExpression" }, "start": 0, "type": "BinaryExpression", "type": "BinaryExpression" }, "digest": null, "else_ifs": [], "end": 0, "final_else": { "body": [ { "commentStart": 0, "end": 0, "expression": { "commentStart": 0, "cond": { "commentStart": 0, "end": 0, "left": { "commentStart": 0, "computed": false, "end": 0, "object": { "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier", "type": "Identifier" }, "property": { "commentStart": 0, "end": 0, "raw": "0", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 0.0, "suffix": "None" } }, "start": 0, "type": "MemberExpression", "type": "MemberExpression" }, "operator": "<", "right": { "commentStart": 0, "computed": false, "end": 0, "object": { "commentStart": 0, "end": 0, "name": "start", "start": 0, "type": "Identifier", "type": "Identifier" }, "property": { "commentStart": 0, "end": 0, "raw": "0", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 0.0, "suffix": "None" } }, "start": 0, "type": "MemberExpression", "type": "MemberExpression" }, "start": 0, "type": "BinaryExpression", "type": "BinaryExpression" }, "digest": null, "else_ifs": [], "end": 0, "final_else": { "body": [ { "commentStart": 0, "end": 0, "expression": { "arguments": [ { "arguments": [ { "commentStart": 0, "end": 0, "left": { "commentStart": 0, "end": 0, "left": { "commentStart": 0, "computed": false, "end": 0, "object": { "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier", "type": "Identifier" }, "property": { "commentStart": 0, "end": 0, "raw": "1", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 1.0, "suffix": "None" } }, "start": 0, "type": "MemberExpression", "type": "MemberExpression" }, "operator": "-", "right": { "commentStart": 0, "computed": false, "end": 0, "object": { "commentStart": 0, "end": 0, "name": "start", "start": 0, "type": "Identifier", "type": "Identifier" }, "property": { "commentStart": 0, "end": 0, "raw": "1", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 1.0, "suffix": "None" } }, "start": 0, "type": "MemberExpression", "type": "MemberExpression" }, "start": 0, "type": "BinaryExpression", "type": "BinaryExpression" }, "operator": "/", "right": { "commentStart": 0, "end": 0, "left": { "commentStart": 0, "computed": false, "end": 0, "object": { "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier", "type": "Identifier" }, "property": { "commentStart": 0, "end": 0, "raw": "0", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 0.0, "suffix": "None" } }, "start": 0, "type": "MemberExpression", "type": "MemberExpression" }, "operator": "-", "right": { "commentStart": 0, "computed": false, "end": 0, "object": { "commentStart": 0, "end": 0, "name": "start", "start": 0, "type": "Identifier", "type": "Identifier" }, "property": { "commentStart": 0, "end": 0, "raw": "0", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 0.0, "suffix": "None" } }, "start": 0, "type": "MemberExpression", "type": "MemberExpression" }, "start": 0, "type": "BinaryExpression", "type": "BinaryExpression" }, "start": 0, "type": "BinaryExpression", "type": "BinaryExpression" } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "atan", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "toDegrees", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" }, "start": 0, "type": "ExpressionStatement", "type": "ExpressionStatement" } ], "commentStart": 0, "end": 0, "start": 0 }, "start": 0, "then_val": { "body": [ { "commentStart": 0, "end": 0, "expression": { "commentStart": 0, "end": 0, "left": { "arguments": [ { "arguments": [ { "commentStart": 0, "end": 0, "left": { "commentStart": 0, "end": 0, "left": { "commentStart": 0, "computed": false, "end": 0, "object": { "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier", "type": "Identifier" }, "property": { "commentStart": 0, "end": 0, "raw": "1", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 1.0, "suffix": "None" } }, "start": 0, "type": "MemberExpression", "type": "MemberExpression" }, "operator": "-", "right": { "commentStart": 0, "computed": false, "end": 0, "object": { "commentStart": 0, "end": 0, "name": "start", "start": 0, "type": "Identifier", "type": "Identifier" }, "property": { "commentStart": 0, "end": 0, "raw": "1", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 1.0, "suffix": "None" } }, "start": 0, "type": "MemberExpression", "type": "MemberExpression" }, "start": 0, "type": "BinaryExpression", "type": "BinaryExpression" }, "operator": "/", "right": { "commentStart": 0, "end": 0, "left": { "commentStart": 0, "computed": false, "end": 0, "object": { "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier", "type": "Identifier" }, "property": { "commentStart": 0, "end": 0, "raw": "0", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 0.0, "suffix": "None" } }, "start": 0, "type": "MemberExpression", "type": "MemberExpression" }, "operator": "-", "right": { "commentStart": 0, "computed": false, "end": 0, "object": { "commentStart": 0, "end": 0, "name": "start", "start": 0, "type": "Identifier", "type": "Identifier" }, "property": { "commentStart": 0, "end": 0, "raw": "0", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 0.0, "suffix": "None" } }, "start": 0, "type": "MemberExpression", "type": "MemberExpression" }, "start": 0, "type": "BinaryExpression", "type": "BinaryExpression" }, "start": 0, "type": "BinaryExpression", "type": "BinaryExpression" } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "atan", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "toDegrees", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" }, "operator": "+", "right": { "commentStart": 0, "end": 0, "raw": "180", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 180.0, "suffix": "None" } }, "start": 0, "type": "BinaryExpression", "type": "BinaryExpression" }, "start": 0, "type": "ExpressionStatement", "type": "ExpressionStatement" } ], "commentStart": 0, "end": 0, "start": 0 }, "type": "IfExpression", "type": "IfExpression" }, "start": 0, "type": "ExpressionStatement", "type": "ExpressionStatement" } ], "commentStart": 0, "end": 0, "start": 0 }, "start": 0, "then_val": { "body": [ { "commentStart": 0, "end": 0, "expression": { "commentStart": 0, "cond": { "commentStart": 0, "end": 0, "left": { "commentStart": 0, "computed": false, "end": 0, "object": { "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier", "type": "Identifier" }, "property": { "commentStart": 0, "end": 0, "raw": "1", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 1.0, "suffix": "None" } }, "start": 0, "type": "MemberExpression", "type": "MemberExpression" }, "operator": ">", "right": { "commentStart": 0, "computed": false, "end": 0, "object": { "commentStart": 0, "end": 0, "name": "start", "start": 0, "type": "Identifier", "type": "Identifier" }, "property": { "commentStart": 0, "end": 0, "raw": "1", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 1.0, "suffix": "None" } }, "start": 0, "type": "MemberExpression", "type": "MemberExpression" }, "start": 0, "type": "BinaryExpression", "type": "BinaryExpression" }, "digest": null, "else_ifs": [], "end": 0, "final_else": { "body": [ { "commentStart": 0, "end": 0, "expression": { "commentStart": 0, "end": 0, "raw": "270", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 270.0, "suffix": "None" } }, "start": 0, "type": "ExpressionStatement", "type": "ExpressionStatement" } ], "commentStart": 0, "end": 0, "start": 0 }, "start": 0, "then_val": { "body": [ { "commentStart": 0, "end": 0, "expression": { "commentStart": 0, "end": 0, "raw": "90", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 90.0, "suffix": "None" } }, "start": 0, "type": "ExpressionStatement", "type": "ExpressionStatement" } ], "commentStart": 0, "end": 0, "start": 0 }, "type": "IfExpression", "type": "IfExpression" }, "start": 0, "type": "ExpressionStatement", "type": "ExpressionStatement" } ], "commentStart": 0, "end": 0, "start": 0 }, "type": "IfExpression", "type": "IfExpression" }, "start": 0, "type": "VariableDeclarator" }, "end": 0, "kind": "const", "start": 0, "type": "VariableDeclaration", "type": "VariableDeclaration" }, { "commentStart": 0, "declaration": { "commentStart": 0, "end": 0, "id": { "commentStart": 0, "end": 0, "name": "dist", "start": 0, "type": "Identifier" }, "init": { "arguments": [ { "commentStart": 0, "end": 0, "left": { "arguments": [ { "commentStart": 0, "end": 0, "left": { "commentStart": 0, "computed": false, "end": 0, "object": { "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier", "type": "Identifier" }, "property": { "commentStart": 0, "end": 0, "raw": "1", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 1.0, "suffix": "None" } }, "start": 0, "type": "MemberExpression", "type": "MemberExpression" }, "operator": "-", "right": { "commentStart": 0, "computed": false, "end": 0, "object": { "commentStart": 0, "end": 0, "name": "start", "start": 0, "type": "Identifier", "type": "Identifier" }, "property": { "commentStart": 0, "end": 0, "raw": "1", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 1.0, "suffix": "None" } }, "start": 0, "type": "MemberExpression", "type": "MemberExpression" }, "start": 0, "type": "BinaryExpression", "type": "BinaryExpression" }, { "commentStart": 0, "end": 0, "raw": "2", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 2.0, "suffix": "None" } } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "pow", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" }, "operator": "+", "right": { "arguments": [ { "commentStart": 0, "end": 0, "left": { "commentStart": 0, "computed": false, "end": 0, "object": { "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier", "type": "Identifier" }, "property": { "commentStart": 0, "end": 0, "raw": "0", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 0.0, "suffix": "None" } }, "start": 0, "type": "MemberExpression", "type": "MemberExpression" }, "operator": "-", "right": { "commentStart": 0, "computed": false, "end": 0, "object": { "commentStart": 0, "end": 0, "name": "start", "start": 0, "type": "Identifier", "type": "Identifier" }, "property": { "commentStart": 0, "end": 0, "raw": "0", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 0.0, "suffix": "None" } }, "start": 0, "type": "MemberExpression", "type": "MemberExpression" }, "start": 0, "type": "BinaryExpression", "type": "BinaryExpression" }, { "commentStart": 0, "end": 0, "raw": "2", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 2.0, "suffix": "None" } } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "pow", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" }, "start": 0, "type": "BinaryExpression", "type": "BinaryExpression" } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "sqrt", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" }, "start": 0, "type": "VariableDeclarator" }, "end": 0, "kind": "const", "start": 0, "type": "VariableDeclaration", "type": "VariableDeclaration" }, { "commentStart": 0, "declaration": { "commentStart": 0, "end": 0, "id": { "commentStart": 0, "end": 0, "name": "xstart", "start": 0, "type": "Identifier" }, "init": { "commentStart": 0, "end": 0, "left": { "commentStart": 0, "end": 0, "left": { "commentStart": 0, "end": 0, "left": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "width", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" }, "operator": "/", "right": { "commentStart": 0, "end": 0, "raw": "2", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 2.0, "suffix": "None" } }, "start": 0, "type": "BinaryExpression", "type": "BinaryExpression" }, "operator": "*", "right": { "arguments": [ { "arguments": [ { "commentStart": 0, "end": 0, "left": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "angle", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" }, "operator": "-", "right": { "commentStart": 0, "end": 0, "raw": "90", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 90.0, "suffix": "None" } }, "start": 0, "type": "BinaryExpression", "type": "BinaryExpression" } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "toRadians", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "cos", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" }, "start": 0, "type": "BinaryExpression", "type": "BinaryExpression" }, "operator": "+", "right": { "commentStart": 0, "computed": false, "end": 0, "object": { "commentStart": 0, "end": 0, "name": "start", "start": 0, "type": "Identifier", "type": "Identifier" }, "property": { "commentStart": 0, "end": 0, "raw": "0", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 0.0, "suffix": "None" } }, "start": 0, "type": "MemberExpression", "type": "MemberExpression" }, "start": 0, "type": "BinaryExpression", "type": "BinaryExpression" }, "start": 0, "type": "VariableDeclarator" }, "end": 0, "kind": "const", "start": 0, "type": "VariableDeclaration", "type": "VariableDeclaration" }, { "commentStart": 0, "declaration": { "commentStart": 0, "end": 0, "id": { "commentStart": 0, "end": 0, "name": "ystart", "start": 0, "type": "Identifier" }, "init": { "commentStart": 0, "end": 0, "left": { "commentStart": 0, "end": 0, "left": { "commentStart": 0, "end": 0, "left": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "width", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" }, "operator": "/", "right": { "commentStart": 0, "end": 0, "raw": "2", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 2.0, "suffix": "None" } }, "start": 0, "type": "BinaryExpression", "type": "BinaryExpression" }, "operator": "*", "right": { "arguments": [ { "arguments": [ { "commentStart": 0, "end": 0, "left": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "angle", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" }, "operator": "-", "right": { "commentStart": 0, "end": 0, "raw": "90", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 90.0, "suffix": "None" } }, "start": 0, "type": "BinaryExpression", "type": "BinaryExpression" } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "toRadians", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "sin", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" }, "start": 0, "type": "BinaryExpression", "type": "BinaryExpression" }, "operator": "+", "right": { "commentStart": 0, "computed": false, "end": 0, "object": { "commentStart": 0, "end": 0, "name": "start", "start": 0, "type": "Identifier", "type": "Identifier" }, "property": { "commentStart": 0, "end": 0, "raw": "1", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 1.0, "suffix": "None" } }, "start": 0, "type": "MemberExpression", "type": "MemberExpression" }, "start": 0, "type": "BinaryExpression", "type": "BinaryExpression" }, "start": 0, "type": "VariableDeclarator" }, "end": 0, "kind": "const", "start": 0, "type": "VariableDeclaration", "type": "VariableDeclaration" }, { "commentStart": 0, "declaration": { "commentStart": 0, "end": 0, "id": { "commentStart": 0, "end": 0, "name": "slotSketch", "start": 0, "type": "Identifier" }, "init": { "body": [ { "arguments": [ { "commentStart": 0, "elements": [ { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "xstart", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" }, { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "ystart", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" } ], "end": 0, "start": 0, "type": "ArrayExpression", "type": "ArrayExpression" }, { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "sketch1", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" }, { "arguments": [ { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "name": "angle", "start": 0, "type": "Identifier" }, "arg": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "angle", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" } }, { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "dist", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" } } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { "commentStart": 0, "end": 0, "left": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "width", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" }, "operator": "/", "right": { "commentStart": 0, "end": 0, "raw": "2", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 2.0, "suffix": "None" } }, "start": 0, "type": "BinaryExpression", "type": "BinaryExpression" } }, { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "name": "angle", "start": 0, "type": "Identifier" }, "arg": { "commentStart": 0, "end": 0, "raw": "180", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 180.0, "suffix": "None" } } } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "tangentialArc", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "name": "angle", "start": 0, "type": "Identifier" }, "arg": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "angle", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" } }, { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { "argument": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "dist", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" }, "commentStart": 0, "end": 0, "operator": "-", "start": 0, "type": "UnaryExpression", "type": "UnaryExpression" } } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { "commentStart": 0, "elements": [ { "arguments": [ { "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", "type": "PipeSubstitution" } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" }, { "arguments": [ { "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", "type": "PipeSubstitution" } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], "end": 0, "start": 0, "type": "ArrayExpression", "type": "ArrayExpression" } } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "tangentialArc", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": null }, { "arguments": [], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "close", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", "type": "PipeExpression" }, "start": 0, "type": "VariableDeclarator" }, "end": 0, "kind": "const", "start": 0, "type": "VariableDeclaration", "type": "VariableDeclaration" }, { "argument": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "slotSketch", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], "commentStart": 0, "end": 0, "start": 0 }, "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { "commentStart": 0, "end": 0, "name": "sketch1", "start": 0, "type": "Identifier" } }, { "type": "Parameter", "identifier": { "commentStart": 0, "end": 0, "name": "start", "start": 0, "type": "Identifier" } }, { "type": "Parameter", "identifier": { "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" } }, { "type": "Parameter", "identifier": { "commentStart": 0, "end": 0, "name": "width", "start": 0, "type": "Identifier" } } ], "start": 0, "type": "FunctionExpression", "type": "FunctionExpression" }, "start": 0, "type": "VariableDeclarator" }, "end": 0, "kind": "fn", "preComments": [ "", "", "// Function for drawing slots on a sketch given the start and end points as well as a width" ], "start": 0, "type": "VariableDeclaration", "type": "VariableDeclaration" }, { "commentStart": 0, "declaration": { "commentStart": 0, "end": 0, "id": { "commentStart": 0, "end": 0, "name": "flipperSketch", "start": 0, "type": "Identifier" }, "init": { "arguments": [ { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "XY", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" }, "start": 0, "type": "VariableDeclarator" }, "end": 0, "kind": "const", "preComments": [ "", "", "// Create a sketch on the \"XY\" plane for the flipper" ], "start": 0, "type": "VariableDeclaration", "type": "VariableDeclaration" }, { "commentStart": 0, "declaration": { "commentStart": 0, "end": 0, "id": { "commentStart": 0, "end": 0, "name": "flipperProfile", "start": 0, "type": "Identifier" }, "init": { "body": [ { "arguments": [ { "commentStart": 0, "elements": [ { "argument": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "flipperLength", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" }, "commentStart": 0, "end": 0, "operator": "-", "start": 0, "type": "UnaryExpression", "type": "UnaryExpression" }, { "argument": { "commentStart": 0, "end": 0, "raw": "32.0", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 32.0, "suffix": "None" } }, "commentStart": 0, "end": 0, "operator": "-", "start": 0, "type": "UnaryExpression", "type": "UnaryExpression" } ], "end": 0, "start": 0, "type": "ArrayExpression", "type": "ArrayExpression" }, { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "flipperSketch", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" }, { "arguments": [ { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { "commentStart": 0, "elements": [ { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "flipperLength", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" }, { "commentStart": 0, "end": 0, "raw": "2.0", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 2.0, "suffix": "None" } } ], "end": 0, "start": 0, "type": "ArrayExpression", "type": "ArrayExpression" } } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "line", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { "commentStart": 0, "end": 0, "raw": "60.0", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 60.0, "suffix": "None" } } }, { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", "type": "TagDeclarator", "value": "backEdge" } } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "yLine", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { "commentStart": 0, "elements": [ { "argument": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "flipperLength", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" }, "commentStart": 0, "end": 0, "operator": "-", "start": 0, "type": "UnaryExpression", "type": "UnaryExpression" }, { "commentStart": 0, "end": 0, "raw": "2.0", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 2.0, "suffix": "None" } } ], "end": 0, "start": 0, "type": "ArrayExpression", "type": "ArrayExpression" } } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "line", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, "type": "Identifier" }, "arg": { "commentStart": 0, "end": 0, "raw": "163.087610", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 163.08761, "suffix": "None" } } }, { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, "type": "Identifier" }, "arg": { "commentStart": 0, "end": 0, "raw": "196.912390", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 196.91239, "suffix": "None" } } }, { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { "commentStart": 0, "end": 0, "raw": "110.0", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 110.0, "suffix": "None" } } } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "arc", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": null }, { "arguments": [], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "close", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "5": [ { "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", "value": { "type": "newLineBlockComment", "value": "Create a profile of the middle", "style": "line" } } ] }, "startNodes": [] }, "start": 0, "type": "PipeExpression", "type": "PipeExpression" }, "start": 0, "type": "VariableDeclarator" }, "end": 0, "kind": "const", "preComments": [ "", "", "// Create a profile of the flipper" ], "start": 0, "type": "VariableDeclaration", "type": "VariableDeclaration" }, { "commentStart": 0, "declaration": { "commentStart": 0, "end": 0, "id": { "commentStart": 0, "end": 0, "name": "slotProfile000", "start": 0, "type": "Identifier" }, "init": { "arguments": [ { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "flipperSketch", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" }, { "commentStart": 0, "elements": [ { "argument": { "commentStart": 0, "end": 0, "raw": "25", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 25.0, "suffix": "None" } }, "commentStart": 0, "end": 0, "operator": "-", "start": 0, "type": "UnaryExpression", "type": "UnaryExpression" }, { "commentStart": 0, "end": 0, "raw": "0", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 0.0, "suffix": "None" } } ], "end": 0, "start": 0, "type": "ArrayExpression", "type": "ArrayExpression" }, { "commentStart": 0, "elements": [ { "argument": { "commentStart": 0, "end": 0, "raw": "55", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 55.0, "suffix": "None" } }, "commentStart": 0, "end": 0, "operator": "-", "start": 0, "type": "UnaryExpression", "type": "UnaryExpression" }, { "commentStart": 0, "end": 0, "raw": "0", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 0.0, "suffix": "None" } } ], "end": 0, "start": 0, "type": "ArrayExpression", "type": "ArrayExpression" }, { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "flipperSlotWidth", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "slot", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" }, "start": 0, "type": "VariableDeclarator" }, "end": 0, "kind": "const", "start": 0, "type": "VariableDeclaration", "type": "VariableDeclaration" }, { "commentStart": 0, "declaration": { "commentStart": 0, "end": 0, "id": { "commentStart": 0, "end": 0, "name": "slotProfile001", "start": 0, "type": "Identifier" }, "init": { "arguments": [ { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "flipperSketch", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" }, { "commentStart": 0, "elements": [ { "argument": { "commentStart": 0, "end": 0, "raw": "25", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 25.0, "suffix": "None" } }, "commentStart": 0, "end": 0, "operator": "-", "start": 0, "type": "UnaryExpression", "type": "UnaryExpression" }, { "commentStart": 0, "end": 0, "raw": "18", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 18.0, "suffix": "None" } } ], "end": 0, "start": 0, "type": "ArrayExpression", "type": "ArrayExpression" }, { "commentStart": 0, "elements": [ { "argument": { "commentStart": 0, "end": 0, "raw": "55", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 55.0, "suffix": "None" } }, "commentStart": 0, "end": 0, "operator": "-", "start": 0, "type": "UnaryExpression", "type": "UnaryExpression" }, { "commentStart": 0, "end": 0, "raw": "19", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 19.0, "suffix": "None" } } ], "end": 0, "start": 0, "type": "ArrayExpression", "type": "ArrayExpression" }, { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "flipperSlotWidth", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "slot", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" }, "start": 0, "type": "VariableDeclarator" }, "end": 0, "kind": "const", "preComments": [ "", "", "// Create a profile of the top slot" ], "start": 0, "type": "VariableDeclaration", "type": "VariableDeclaration" }, { "commentStart": 0, "declaration": { "commentStart": 0, "end": 0, "id": { "commentStart": 0, "end": 0, "name": "slotProfile002", "start": 0, "type": "Identifier" }, "init": { "arguments": [ { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "flipperSketch", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" }, { "commentStart": 0, "elements": [ { "argument": { "commentStart": 0, "end": 0, "raw": "25", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 25.0, "suffix": "None" } }, "commentStart": 0, "end": 0, "operator": "-", "start": 0, "type": "UnaryExpression", "type": "UnaryExpression" }, { "argument": { "commentStart": 0, "end": 0, "raw": "18", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 18.0, "suffix": "None" } }, "commentStart": 0, "end": 0, "operator": "-", "start": 0, "type": "UnaryExpression", "type": "UnaryExpression" } ], "end": 0, "start": 0, "type": "ArrayExpression", "type": "ArrayExpression" }, { "commentStart": 0, "elements": [ { "argument": { "commentStart": 0, "end": 0, "raw": "55", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 55.0, "suffix": "None" } }, "commentStart": 0, "end": 0, "operator": "-", "start": 0, "type": "UnaryExpression", "type": "UnaryExpression" }, { "argument": { "commentStart": 0, "end": 0, "raw": "19", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 19.0, "suffix": "None" } }, "commentStart": 0, "end": 0, "operator": "-", "start": 0, "type": "UnaryExpression", "type": "UnaryExpression" } ], "end": 0, "start": 0, "type": "ArrayExpression", "type": "ArrayExpression" }, { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "flipperSlotWidth", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "slot", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" }, "start": 0, "type": "VariableDeclarator" }, "end": 0, "kind": "const", "preComments": [ "", "", "// Create a profile of the bottom slot" ], "start": 0, "type": "VariableDeclaration", "type": "VariableDeclaration" }, { "commentStart": 0, "declaration": { "commentStart": 0, "end": 0, "id": { "commentStart": 0, "end": 0, "name": "spatulaProfile", "start": 0, "type": "Identifier" }, "init": { "body": [ { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "flipperProfile", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" }, { "arguments": [ { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "slotProfile000", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" }, { "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", "type": "PipeSubstitution" } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "hole", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" }, { "arguments": [ { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "slotProfile001", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" }, { "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", "type": "PipeSubstitution" } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "hole", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" }, { "arguments": [ { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "slotProfile002", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" }, { "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", "type": "PipeSubstitution" } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "hole", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "3": [ { "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", "value": { "type": "newLineBlockComment", "value": "Extrude the profile to create the spatula flipper", "style": "line" } } ] }, "startNodes": [] }, "start": 0, "type": "PipeExpression", "type": "PipeExpression" }, "start": 0, "type": "VariableDeclarator" }, "end": 0, "kind": "const", "preComments": [ "", "", "// Create a profile with slots for the spatula" ], "start": 0, "type": "VariableDeclaration", "type": "VariableDeclaration" }, { "commentStart": 0, "declaration": { "commentStart": 0, "end": 0, "id": { "commentStart": 0, "end": 0, "name": "flipper", "start": 0, "type": "Identifier" }, "init": { "arguments": [ { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "flipperThickness", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" } } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "extrude", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "spatulaProfile", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" } }, "start": 0, "type": "VariableDeclarator" }, "end": 0, "kind": "const", "start": 0, "type": "VariableDeclaration", "type": "VariableDeclaration" }, { "commentStart": 0, "end": 0, "expression": { "arguments": [ { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "flipperFilletRadius", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" } }, { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "name": "tags", "start": 0, "type": "Identifier" }, "arg": { "commentStart": 0, "elements": [ { "arguments": [ { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "backEdge", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" }, { "arguments": [ { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "backEdge", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "getPreviousAdjacentEdge", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], "end": 0, "start": 0, "type": "ArrayExpression", "type": "ArrayExpression" } } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "fillet", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "flipper", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" } }, "preComments": [ "", "", "// Fillet the edges of the flipper" ], "start": 0, "type": "ExpressionStatement", "type": "ExpressionStatement" }, { "commentStart": 0, "declaration": { "commentStart": 0, "end": 0, "id": { "commentStart": 0, "end": 0, "name": "handleSketch", "start": 0, "type": "Identifier" }, "init": { "arguments": [ { "arguments": [ { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "name": "offset", "start": 0, "type": "Identifier" }, "arg": { "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "handleWidth", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" }, "commentStart": 0, "end": 0, "operator": "-", "start": 0, "type": "UnaryExpression", "type": "UnaryExpression" }, "operator": "/", "right": { "commentStart": 0, "end": 0, "raw": "2", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 2.0, "suffix": "None" } }, "start": 0, "type": "BinaryExpression", "type": "BinaryExpression" } } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "offsetPlane", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "XZ", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" } } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" }, "start": 0, "type": "VariableDeclarator" }, "end": 0, "kind": "const", "preComments": [ "", "", "// Create a sketch on the \"XZ\" plane offset by half the thickness" ], "start": 0, "type": "VariableDeclaration", "type": "VariableDeclaration" }, { "commentStart": 0, "declaration": { "commentStart": 0, "end": 0, "id": { "commentStart": 0, "end": 0, "name": "handleProfile", "start": 0, "type": "Identifier" }, "init": { "body": [ { "arguments": [ { "commentStart": 0, "elements": [ { "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 0.0, "suffix": "None" } }, { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "flipperThickness", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" } ], "end": 0, "start": 0, "type": "ArrayExpression", "type": "ArrayExpression" }, { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "handleSketch", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" }, { "arguments": [ { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { "commentStart": 0, "elements": [ { "commentStart": 0, "end": 0, "raw": "31.819805", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 31.819805, "suffix": "None" } }, { "commentStart": 0, "end": 0, "raw": "31.819805", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 31.819805, "suffix": "None" } } ], "end": 0, "start": 0, "type": "ArrayExpression", "type": "ArrayExpression" } }, { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", "type": "TagDeclarator", "value": "handleBottomEdge" } } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "line", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { "commentStart": 0, "elements": [ { "commentStart": 0, "end": 0, "raw": "140.953893", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 140.953893, "suffix": "None" } }, { "commentStart": 0, "end": 0, "raw": "51.303021", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 51.303021, "suffix": "None" } } ], "end": 0, "start": 0, "type": "ArrayExpression", "type": "ArrayExpression" } } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "line", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { "commentStart": 0, "elements": [ { "argument": { "commentStart": 0, "end": 0, "raw": "1.710101", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 1.710101, "suffix": "None" } }, "commentStart": 0, "end": 0, "operator": "-", "start": 0, "type": "UnaryExpression", "type": "UnaryExpression" }, { "commentStart": 0, "end": 0, "raw": "4.698463", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 4.698463, "suffix": "None" } } ], "end": 0, "start": 0, "type": "ArrayExpression", "type": "ArrayExpression" } } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "line", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { "commentStart": 0, "elements": [ { "argument": { "commentStart": 0, "end": 0, "raw": "141.995517", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 141.995517, "suffix": "None" } }, "commentStart": 0, "end": 0, "operator": "-", "start": 0, "type": "UnaryExpression", "type": "UnaryExpression" }, { "argument": { "commentStart": 0, "end": 0, "raw": "51.682142", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 51.682142, "suffix": "None" } }, "commentStart": 0, "end": 0, "operator": "-", "start": 0, "type": "UnaryExpression", "type": "UnaryExpression" } ], "end": 0, "start": 0, "type": "ArrayExpression", "type": "ArrayExpression" } }, { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", "type": "TagDeclarator", "value": "handleTopEdge" } } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "line", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { "commentStart": 0, "elements": [ { "argument": { "commentStart": 0, "end": 0, "raw": "36.139148", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 36.139148, "suffix": "None" } }, "commentStart": 0, "end": 0, "operator": "-", "start": 0, "type": "UnaryExpression", "type": "UnaryExpression" }, { "argument": { "commentStart": 0, "end": 0, "raw": "36.139148", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 36.139148, "suffix": "None" } }, "commentStart": 0, "end": 0, "operator": "-", "start": 0, "type": "UnaryExpression", "type": "UnaryExpression" } ], "end": 0, "start": 0, "type": "ArrayExpression", "type": "ArrayExpression" } } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "line", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { "commentStart": 0, "end": 0, "raw": "7.071068", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 7.071068, "suffix": "None" } } } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "xLine", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": null }, { "arguments": [], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "close", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "7": [ { "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", "value": { "type": "newLineBlockComment", "value": "Create an extrusion", "style": "line" } } ] }, "startNodes": [] }, "start": 0, "type": "PipeExpression", "type": "PipeExpression" }, "start": 0, "type": "VariableDeclarator" }, "end": 0, "kind": "const", "preComments": [ "", "", "// Create a profile of the spatula handle" ], "start": 0, "type": "VariableDeclaration", "type": "VariableDeclaration" }, { "commentStart": 0, "declaration": { "commentStart": 0, "end": 0, "id": { "commentStart": 0, "end": 0, "name": "handle", "start": 0, "type": "Identifier" }, "init": { "arguments": [ { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "handleWidth", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" } } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "extrude", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "handleProfile", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" } }, "start": 0, "type": "VariableDeclarator" }, "end": 0, "kind": "const", "start": 0, "type": "VariableDeclaration", "type": "VariableDeclaration" }, { "commentStart": 0, "end": 0, "expression": { "arguments": [ { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { "commentStart": 0, "end": 0, "raw": "4", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 4.0, "suffix": "None" } } }, { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "name": "tags", "start": 0, "type": "Identifier" }, "arg": { "commentStart": 0, "elements": [ { "arguments": [ { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "handleBottomEdge", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" }, { "arguments": [ { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "handleTopEdge", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], "end": 0, "start": 0, "type": "ArrayExpression", "type": "ArrayExpression" } } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "fillet", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "handle", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" } }, "preComments": [ "", "", "// Fillet the bend of the spatula handle" ], "start": 0, "type": "ExpressionStatement", "type": "ExpressionStatement" }, { "commentStart": 0, "declaration": { "commentStart": 0, "end": 0, "id": { "commentStart": 0, "end": 0, "name": "handlePlane", "start": 0, "type": "Identifier" }, "init": { "commentStart": 0, "end": 0, "properties": [ { "commentStart": 0, "end": 0, "key": { "commentStart": 0, "end": 0, "name": "origin", "start": 0, "type": "Identifier" }, "start": 0, "type": "ObjectProperty", "value": { "commentStart": 0, "elements": [ { "commentStart": 0, "end": 0, "raw": "208.593833", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 208.593833, "suffix": "None" } }, { "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 0.0, "suffix": "None" } }, { "commentStart": 0, "end": 0, "raw": "75.921946", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 75.921946, "suffix": "None" } } ], "end": 0, "start": 0, "type": "ArrayExpression", "type": "ArrayExpression" } }, { "commentStart": 0, "end": 0, "key": { "commentStart": 0, "end": 0, "name": "xAxis", "start": 0, "type": "Identifier" }, "start": 0, "type": "ObjectProperty", "value": { "commentStart": 0, "elements": [ { "commentStart": 0, "end": 0, "raw": "0.342020", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 0.34202, "suffix": "None" } }, { "argument": { "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 0.0, "suffix": "None" } }, "commentStart": 0, "end": 0, "operator": "-", "start": 0, "type": "UnaryExpression", "type": "UnaryExpression" }, { "argument": { "commentStart": 0, "end": 0, "raw": "0.939693", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 0.939693, "suffix": "None" } }, "commentStart": 0, "end": 0, "operator": "-", "start": 0, "type": "UnaryExpression", "type": "UnaryExpression" } ], "end": 0, "start": 0, "type": "ArrayExpression", "type": "ArrayExpression" } }, { "commentStart": 0, "end": 0, "key": { "commentStart": 0, "end": 0, "name": "yAxis", "start": 0, "type": "Identifier" }, "start": 0, "type": "ObjectProperty", "value": { "commentStart": 0, "elements": [ { "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 0.0, "suffix": "None" } }, { "commentStart": 0, "end": 0, "raw": "1.0", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 1.0, "suffix": "None" } }, { "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 0.0, "suffix": "None" } } ], "end": 0, "start": 0, "type": "ArrayExpression", "type": "ArrayExpression" } }, { "commentStart": 0, "end": 0, "key": { "commentStart": 0, "end": 0, "name": "zAxis", "start": 0, "type": "Identifier" }, "start": 0, "type": "ObjectProperty", "value": { "commentStart": 0, "elements": [ { "commentStart": 0, "end": 0, "raw": "0.939693", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 0.939693, "suffix": "None" } }, { "argument": { "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 0.0, "suffix": "None" } }, "commentStart": 0, "end": 0, "operator": "-", "start": 0, "type": "UnaryExpression", "type": "UnaryExpression" }, { "commentStart": 0, "end": 0, "raw": "0.342020", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 0.34202, "suffix": "None" } } ], "end": 0, "start": 0, "type": "ArrayExpression", "type": "ArrayExpression" } } ], "start": 0, "type": "ObjectExpression", "type": "ObjectExpression" }, "start": 0, "type": "VariableDeclarator" }, "end": 0, "kind": "const", "preComments": [ "", "", "// Define a plane which is at the end of the handle" ], "start": 0, "type": "VariableDeclaration", "type": "VariableDeclaration" }, { "commentStart": 0, "declaration": { "commentStart": 0, "end": 0, "id": { "commentStart": 0, "end": 0, "name": "gripSketch", "start": 0, "type": "Identifier" }, "init": { "arguments": [ { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "handlePlane", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" }, "start": 0, "type": "VariableDeclarator" }, "end": 0, "kind": "const", "preComments": [ "", "", "// Create a sketch on the handle plane" ], "start": 0, "type": "VariableDeclaration", "type": "VariableDeclaration" }, { "commentStart": 0, "declaration": { "commentStart": 0, "end": 0, "id": { "commentStart": 0, "end": 0, "name": "gripProfile", "start": 0, "type": "Identifier" }, "init": { "body": [ { "arguments": [ { "commentStart": 0, "elements": [ { "argument": { "commentStart": 0, "end": 0, "raw": "26.806746", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 26.806746, "suffix": "None" } }, "commentStart": 0, "end": 0, "operator": "-", "start": 0, "type": "UnaryExpression", "type": "UnaryExpression" }, { "argument": { "commentStart": 0, "end": 0, "raw": "10.0", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 10.0, "suffix": "None" } }, "commentStart": 0, "end": 0, "operator": "-", "start": 0, "type": "UnaryExpression", "type": "UnaryExpression" } ], "end": 0, "start": 0, "type": "ArrayExpression", "type": "ArrayExpression" }, { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "gripSketch", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" }, { "arguments": [ { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { "commentStart": 0, "end": 0, "left": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "gripWidth", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" }, "operator": "-", "right": { "commentStart": 0, "end": 0, "left": { "commentStart": 0, "end": 0, "raw": "2", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 2.0, "suffix": "None" } }, "operator": "*", "right": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "gripFilletRadius", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" }, "start": 0, "type": "BinaryExpression", "type": "BinaryExpression" }, "start": 0, "type": "BinaryExpression", "type": "BinaryExpression" } } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "xLine", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, "type": "Identifier" }, "arg": { "argument": { "commentStart": 0, "end": 0, "raw": "90.0", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 90.0, "suffix": "None" } }, "commentStart": 0, "end": 0, "operator": "-", "start": 0, "type": "UnaryExpression", "type": "UnaryExpression" } }, { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, "type": "Identifier" }, "arg": { "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 0.0, "suffix": "None" } } }, { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "gripFilletRadius", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" } } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "arc", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { "commentStart": 0, "end": 0, "left": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "gripHeight", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" }, "operator": "-", "right": { "commentStart": 0, "end": 0, "left": { "commentStart": 0, "end": 0, "raw": "2", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 2.0, "suffix": "None" } }, "operator": "*", "right": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "gripFilletRadius", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" }, "start": 0, "type": "BinaryExpression", "type": "BinaryExpression" }, "start": 0, "type": "BinaryExpression", "type": "BinaryExpression" } } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "yLine", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, "type": "Identifier" }, "arg": { "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 0.0, "suffix": "None" } } }, { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, "type": "Identifier" }, "arg": { "commentStart": 0, "end": 0, "raw": "90.0", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 90.0, "suffix": "None" } } }, { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "gripFilletRadius", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" } } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "arc", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { "argument": { "commentStart": 0, "end": 0, "left": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "gripWidth", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" }, "operator": "-", "right": { "commentStart": 0, "end": 0, "left": { "commentStart": 0, "end": 0, "raw": "2", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 2.0, "suffix": "None" } }, "operator": "*", "right": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "gripFilletRadius", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" }, "start": 0, "type": "BinaryExpression", "type": "BinaryExpression" }, "start": 0, "type": "BinaryExpression", "type": "BinaryExpression" }, "commentStart": 0, "end": 0, "operator": "-", "start": 0, "type": "UnaryExpression", "type": "UnaryExpression" } } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "xLine", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, "type": "Identifier" }, "arg": { "commentStart": 0, "end": 0, "raw": "90.0", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 90.0, "suffix": "None" } } }, { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, "type": "Identifier" }, "arg": { "commentStart": 0, "end": 0, "raw": "180.0", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 180.0, "suffix": "None" } } }, { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "gripFilletRadius", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" } } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "arc", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { "argument": { "commentStart": 0, "end": 0, "left": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "gripHeight", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" }, "operator": "-", "right": { "commentStart": 0, "end": 0, "left": { "commentStart": 0, "end": 0, "raw": "2", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 2.0, "suffix": "None" } }, "operator": "*", "right": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "gripFilletRadius", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" }, "start": 0, "type": "BinaryExpression", "type": "BinaryExpression" }, "start": 0, "type": "BinaryExpression", "type": "BinaryExpression" }, "commentStart": 0, "end": 0, "operator": "-", "start": 0, "type": "UnaryExpression", "type": "UnaryExpression" } }, { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", "type": "TagDeclarator", "value": "gripEdgeTop" } } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "yLine", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, "type": "Identifier" }, "arg": { "commentStart": 0, "end": 0, "raw": "180.0", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 180.0, "suffix": "None" } } }, { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, "type": "Identifier" }, "arg": { "commentStart": 0, "end": 0, "raw": "270.0", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 270.0, "suffix": "None" } } }, { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "gripFilletRadius", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" } } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "arc", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": null }, { "arguments": [], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "close", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "9": [ { "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", "value": { "type": "newLineBlockComment", "value": "Extrude the grip profile to create the grip", "style": "line" } } ] }, "startNodes": [] }, "start": 0, "type": "PipeExpression", "type": "PipeExpression" }, "start": 0, "type": "VariableDeclarator" }, "end": 0, "kind": "const", "preComments": [ "", "", "// Create a profile of the grip" ], "start": 0, "type": "VariableDeclaration", "type": "VariableDeclaration" }, { "commentStart": 0, "declaration": { "commentStart": 0, "end": 0, "id": { "commentStart": 0, "end": 0, "name": "grip", "start": 0, "type": "Identifier" }, "init": { "arguments": [ { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { "argument": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "gripLength", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" }, "commentStart": 0, "end": 0, "operator": "-", "start": 0, "type": "UnaryExpression", "type": "UnaryExpression" } } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "extrude", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "gripProfile", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" } }, "start": 0, "type": "VariableDeclarator" }, "end": 0, "kind": "const", "start": 0, "type": "VariableDeclaration", "type": "VariableDeclaration" }, { "commentStart": 0, "declaration": { "commentStart": 0, "end": 0, "id": { "commentStart": 0, "end": 0, "name": "holeSketch", "start": 0, "type": "Identifier" }, "init": { "arguments": [ { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "name": "face", "start": 0, "type": "Identifier" }, "arg": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "gripEdgeTop", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" } } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "grip", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" } }, "start": 0, "type": "VariableDeclarator" }, "end": 0, "kind": "const", "preComments": [ "", "", "// Create a sketch on the grip for the hole" ], "start": 0, "type": "VariableDeclaration", "type": "VariableDeclaration" }, { "commentStart": 0, "declaration": { "commentStart": 0, "end": 0, "id": { "commentStart": 0, "end": 0, "name": "gripHoleProfile", "start": 0, "type": "Identifier" }, "init": { "arguments": [ { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "holeSketch", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" }, { "commentStart": 0, "elements": [ { "commentStart": 0, "end": 0, "raw": "0", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 0.0, "suffix": "None" } }, { "commentStart": 0, "end": 0, "raw": "200", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 200.0, "suffix": "None" } } ], "end": 0, "start": 0, "type": "ArrayExpression", "type": "ArrayExpression" }, { "commentStart": 0, "elements": [ { "commentStart": 0, "end": 0, "raw": "0", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 0.0, "suffix": "None" } }, { "commentStart": 0, "end": 0, "raw": "210", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 210.0, "suffix": "None" } } ], "end": 0, "start": 0, "type": "ArrayExpression", "type": "ArrayExpression" }, { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "gripSlotWidth", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "slot", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" }, "start": 0, "type": "VariableDeclarator" }, "end": 0, "kind": "const", "preComments": [ "", "", "// Create a profile for the grip hole" ], "start": 0, "type": "VariableDeclaration", "type": "VariableDeclaration" }, { "commentStart": 0, "end": 0, "expression": { "arguments": [ { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "gripWidth", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" }, "commentStart": 0, "end": 0, "operator": "-", "start": 0, "type": "UnaryExpression", "type": "UnaryExpression" }, "operator": "-", "right": { "commentStart": 0, "end": 0, "raw": "20", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 20.0, "suffix": "None" } }, "start": 0, "type": "BinaryExpression", "type": "BinaryExpression" } } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "extrude", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "gripHoleProfile", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" } }, "preComments": [ "", "", "// Cut a hole in the grip" ], "start": 0, "type": "ExpressionStatement", "type": "ExpressionStatement" } ], "commentStart": 0, "end": 0, "innerAttrs": [ { "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "settings", "start": 0, "type": "Identifier" }, "preComments": [ "// Food Service Spatula", "// Use these spatulas for mixing, flipping, and scraping.", "", "", "// Set units" ], "properties": [ { "commentStart": 0, "end": 0, "key": { "commentStart": 0, "end": 0, "name": "defaultLengthUnit", "start": 0, "type": "Identifier" }, "start": 0, "type": "ObjectProperty", "value": { "abs_path": false, "commentStart": 0, "end": 0, "name": { "commentStart": 0, "end": 0, "name": "mm", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" } } ], "start": 0, "type": "Annotation" } ], "nonCodeMeta": { "nonCodeNodes": {}, "startNodes": [ { "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", "value": { "type": "newLine" } } ] }, "start": 0 } }