Download tools.json from CharlZKP/fusion-needle3: direct link, hf CLI and curl.
- Browser
- Download file 30.5 kB
-
https://huggingface.co/CharlZKP/fusion-needle3/resolve/main/tools.json
- Command line
-
hf download hf://CharlZKP/fusion-needle3/tools.json
-
curl -L -o tools.json https://huggingface.co/CharlZKP/fusion-needle3/resolve/main/tools.json
30.5 kB
| [ | |
| { | |
| "name": "create_sketch", | |
| "description": "Start a new sketch on an origin plane or on a face of the body.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": { | |
| "plane": { | |
| "type": "string", | |
| "enum": [ | |
| "xy", | |
| "xz", | |
| "yz" | |
| ], | |
| "default": "xy", | |
| "description": "origin plane: XY (top plane), XZ (front plane), YZ (right plane)" | |
| }, | |
| "face": { | |
| "type": "string", | |
| "enum": [ | |
| "top", | |
| "bottom", | |
| "front", | |
| "back", | |
| "left", | |
| "right" | |
| ], | |
| "description": "body face to sketch on instead of a plane" | |
| }, | |
| "offset": { | |
| "type": "number", | |
| "description": "offset from the plane in mm" | |
| } | |
| }, | |
| "required": [] | |
| } | |
| }, | |
| { | |
| "name": "draw_rectangle", | |
| "description": "Draw a rectangle in the active sketch, centred on a point.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": { | |
| "width": { | |
| "type": "number", | |
| "exclusiveMinimum": 0, | |
| "description": "size along X in mm, the first number of 40x30" | |
| }, | |
| "height": { | |
| "type": "number", | |
| "exclusiveMinimum": 0, | |
| "description": "size along Y in mm, the second number of 40x30" | |
| }, | |
| "center_x": { | |
| "type": "number", | |
| "default": 0, | |
| "description": "centre X in mm" | |
| }, | |
| "center_y": { | |
| "type": "number", | |
| "default": 0, | |
| "description": "centre Y in mm" | |
| } | |
| }, | |
| "required": [ | |
| "width", | |
| "height" | |
| ] | |
| } | |
| }, | |
| { | |
| "name": "draw_circle", | |
| "description": "Draw a circle in the active sketch.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": { | |
| "diameter": { | |
| "type": "number", | |
| "exclusiveMinimum": 0, | |
| "description": "diameter in mm, the number after Ø or 'dia'" | |
| }, | |
| "center_x": { | |
| "type": "number", | |
| "default": 0, | |
| "description": "centre X in mm" | |
| }, | |
| "center_y": { | |
| "type": "number", | |
| "default": 0, | |
| "description": "centre Y in mm" | |
| } | |
| }, | |
| "required": [ | |
| "diameter" | |
| ] | |
| } | |
| }, | |
| { | |
| "name": "draw_line", | |
| "description": "Draw a straight line in the active sketch between two points.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": { | |
| "start_x": { | |
| "type": "number", | |
| "description": "start X in mm, the point after 'from'" | |
| }, | |
| "start_y": { | |
| "type": "number", | |
| "description": "start Y in mm, the point after 'from'" | |
| }, | |
| "end_x": { | |
| "type": "number", | |
| "description": "end X in mm, the point after 'to'" | |
| }, | |
| "end_y": { | |
| "type": "number", | |
| "description": "end Y in mm, the point after 'to'" | |
| } | |
| }, | |
| "required": [ | |
| "start_x", | |
| "start_y", | |
| "end_x", | |
| "end_y" | |
| ] | |
| } | |
| }, | |
| { | |
| "name": "draw_slot", | |
| "description": "Draw a straight slot (obround) in the active sketch; 20x6 = length 20, width 6.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": { | |
| "length": { | |
| "type": "number", | |
| "exclusiveMinimum": 0, | |
| "description": "centre-to-centre length in mm" | |
| }, | |
| "width": { | |
| "type": "number", | |
| "exclusiveMinimum": 0, | |
| "description": "slot width in mm" | |
| }, | |
| "center_x": { | |
| "type": "number", | |
| "default": 0, | |
| "description": "centre X in mm" | |
| }, | |
| "center_y": { | |
| "type": "number", | |
| "default": 0, | |
| "description": "centre Y in mm" | |
| }, | |
| "angle": { | |
| "type": "number", | |
| "default": 0, | |
| "description": "rotation in degrees" | |
| } | |
| }, | |
| "required": [ | |
| "length", | |
| "width" | |
| ] | |
| } | |
| }, | |
| { | |
| "name": "add_dimension", | |
| "description": "Add a driving dimension to entities of the active sketch.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": { | |
| "kind": { | |
| "type": "string", | |
| "enum": [ | |
| "distance", | |
| "horizontal", | |
| "vertical", | |
| "diameter", | |
| "radius", | |
| "angle" | |
| ], | |
| "description": "type of dimension" | |
| }, | |
| "value": { | |
| "type": "number", | |
| "description": "dimension value in mm, or degrees for angle" | |
| }, | |
| "entity_one": { | |
| "type": "integer", | |
| "minimum": 1, | |
| "description": "first entity number, e.g. the 2 of line 2" | |
| }, | |
| "entity_two": { | |
| "type": "integer", | |
| "minimum": 1, | |
| "description": "second entity number" | |
| } | |
| }, | |
| "required": [ | |
| "kind", | |
| "value" | |
| ] | |
| } | |
| }, | |
| { | |
| "name": "add_constraint", | |
| "description": "Add a geometric constraint between entities of the active sketch.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": { | |
| "kind": { | |
| "type": "string", | |
| "enum": [ | |
| "horizontal", | |
| "vertical", | |
| "parallel", | |
| "perpendicular", | |
| "tangent", | |
| "equal", | |
| "coincident", | |
| "concentric", | |
| "midpoint", | |
| "symmetric", | |
| "fix" | |
| ], | |
| "description": "type of constraint" | |
| }, | |
| "entity_one": { | |
| "type": "integer", | |
| "minimum": 1, | |
| "description": "first entity number, e.g. the 2 of line 2" | |
| }, | |
| "entity_two": { | |
| "type": "integer", | |
| "minimum": 1, | |
| "description": "second entity number" | |
| } | |
| }, | |
| "required": [ | |
| "kind" | |
| ] | |
| } | |
| }, | |
| { | |
| "name": "extrude", | |
| "description": "Extrude (pad) the active sketch profile into a solid, or cut it out of the body (pocket).", | |
| "parameters": { | |
| "type": "object", | |
| "properties": { | |
| "distance": { | |
| "type": "number", | |
| "exclusiveMinimum": 0, | |
| "description": "distance in mm: thickness, height or depth" | |
| }, | |
| "operation": { | |
| "type": "string", | |
| "enum": [ | |
| "new_body", | |
| "join", | |
| "cut", | |
| "intersect" | |
| ], | |
| "default": "new_body", | |
| "description": "join adds material (boss), cut removes it (pocket)" | |
| }, | |
| "direction": { | |
| "type": "string", | |
| "enum": [ | |
| "positive", | |
| "negative", | |
| "symmetric" | |
| ], | |
| "default": "positive", | |
| "description": "side of the sketch plane; symmetric = both sides" | |
| }, | |
| "extent": { | |
| "type": "string", | |
| "enum": [ | |
| "distance", | |
| "through_all" | |
| ], | |
| "default": "distance", | |
| "description": "through_all = through everything" | |
| } | |
| }, | |
| "required": [] | |
| } | |
| }, | |
| { | |
| "name": "create_hole", | |
| "description": "Drill a hole into a face of the body.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": { | |
| "diameter": { | |
| "type": "number", | |
| "exclusiveMinimum": 0, | |
| "description": "hole diameter in mm, the number after Ø or 'dia'" | |
| }, | |
| "x": { | |
| "type": "number", | |
| "default": 0, | |
| "description": "centre X in mm" | |
| }, | |
| "y": { | |
| "type": "number", | |
| "default": 0, | |
| "description": "centre Y in mm" | |
| }, | |
| "depth": { | |
| "type": "number", | |
| "exclusiveMinimum": 0, | |
| "description": "depth in mm of a blind hole; omit for a through hole" | |
| }, | |
| "face": { | |
| "type": "string", | |
| "enum": [ | |
| "top", | |
| "bottom", | |
| "front", | |
| "back", | |
| "left", | |
| "right" | |
| ], | |
| "default": "top", | |
| "description": "face to drill into" | |
| } | |
| }, | |
| "required": [ | |
| "diameter" | |
| ] | |
| } | |
| }, | |
| { | |
| "name": "circular_pattern", | |
| "description": "Repeat a feature or body around an axis (polar pattern, circular array).", | |
| "parameters": { | |
| "type": "object", | |
| "properties": { | |
| "count": { | |
| "type": "integer", | |
| "minimum": 2, | |
| "description": "total number of instances, the number after x or ×" | |
| }, | |
| "axis": { | |
| "type": "string", | |
| "enum": [ | |
| "x", | |
| "y", | |
| "z" | |
| ], | |
| "default": "z", | |
| "description": "axis to rotate around" | |
| }, | |
| "angle": { | |
| "type": "number", | |
| "default": 360, | |
| "description": "total angle in degrees" | |
| }, | |
| "target": { | |
| "type": "string", | |
| "enum": [ | |
| "last_feature", | |
| "body" | |
| ], | |
| "default": "last_feature", | |
| "description": "what to repeat" | |
| } | |
| }, | |
| "required": [ | |
| "count" | |
| ] | |
| } | |
| }, | |
| { | |
| "name": "rectangular_pattern", | |
| "description": "Repeat a feature or body in a row or grid along X and Y (linear pattern).", | |
| "parameters": { | |
| "type": "object", | |
| "properties": { | |
| "x_count": { | |
| "type": "integer", | |
| "minimum": 1, | |
| "description": "instances along X" | |
| }, | |
| "x_spacing": { | |
| "type": "number", | |
| "description": "spacing along X in mm" | |
| }, | |
| "y_count": { | |
| "type": "integer", | |
| "minimum": 1, | |
| "default": 1, | |
| "description": "instances along Y" | |
| }, | |
| "y_spacing": { | |
| "type": "number", | |
| "description": "spacing along Y in mm" | |
| }, | |
| "target": { | |
| "type": "string", | |
| "enum": [ | |
| "last_feature", | |
| "body" | |
| ], | |
| "default": "last_feature", | |
| "description": "what to repeat" | |
| } | |
| }, | |
| "required": [ | |
| "x_count", | |
| "x_spacing" | |
| ] | |
| } | |
| }, | |
| { | |
| "name": "mirror", | |
| "description": "Mirror a feature or body across an origin plane.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": { | |
| "plane": { | |
| "type": "string", | |
| "enum": [ | |
| "xy", | |
| "xz", | |
| "yz" | |
| ], | |
| "description": "mirror plane" | |
| }, | |
| "target": { | |
| "type": "string", | |
| "enum": [ | |
| "last_feature", | |
| "body" | |
| ], | |
| "default": "last_feature", | |
| "description": "what to mirror" | |
| } | |
| }, | |
| "required": [ | |
| "plane" | |
| ] | |
| } | |
| }, | |
| { | |
| "name": "fillet", | |
| "description": "Round edges of the body with a radius.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": { | |
| "radius": { | |
| "type": "number", | |
| "exclusiveMinimum": 0, | |
| "description": "fillet radius in mm, the number after R" | |
| }, | |
| "edges": { | |
| "type": "string", | |
| "enum": [ | |
| "all", | |
| "top", | |
| "bottom", | |
| "vertical" | |
| ], | |
| "default": "all", | |
| "description": "which edges of the body" | |
| } | |
| }, | |
| "required": [ | |
| "radius" | |
| ] | |
| } | |
| }, | |
| { | |
| "name": "chamfer", | |
| "description": "Bevel edges of the body with an equal-distance chamfer.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": { | |
| "distance": { | |
| "type": "number", | |
| "exclusiveMinimum": 0, | |
| "description": "chamfer distance in mm" | |
| }, | |
| "edges": { | |
| "type": "string", | |
| "enum": [ | |
| "all", | |
| "top", | |
| "bottom", | |
| "vertical" | |
| ], | |
| "default": "all", | |
| "description": "which edges of the body" | |
| } | |
| }, | |
| "required": [ | |
| "distance" | |
| ] | |
| } | |
| }, | |
| { | |
| "name": "shell", | |
| "description": "Hollow out the body, leaving walls of a given thickness and one face open.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": { | |
| "thickness": { | |
| "type": "number", | |
| "exclusiveMinimum": 0, | |
| "description": "wall thickness in mm" | |
| }, | |
| "open_face": { | |
| "type": "string", | |
| "enum": [ | |
| "top", | |
| "bottom", | |
| "front", | |
| "back", | |
| "left", | |
| "right" | |
| ], | |
| "default": "top", | |
| "description": "face to remove" | |
| } | |
| }, | |
| "required": [ | |
| "thickness" | |
| ] | |
| } | |
| }, | |
| { | |
| "name": "undo", | |
| "description": "Undo the most recent operation.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": {}, | |
| "required": [] | |
| } | |
| }, | |
| { | |
| "name": "redo", | |
| "description": "Redo the most recently undone operation.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": {}, | |
| "required": [] | |
| } | |
| }, | |
| { | |
| "name": "draw_polygon", | |
| "description": "Draw a regular polygon such as a hexagon in the active sketch.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": { | |
| "shape": { | |
| "type": "string", | |
| "enum": [ | |
| "triangle", | |
| "pentagon", | |
| "hexagon", | |
| "octagon" | |
| ], | |
| "description": "which polygon" | |
| }, | |
| "size": { | |
| "type": "number", | |
| "exclusiveMinimum": 0, | |
| "description": "size in mm" | |
| }, | |
| "measure": { | |
| "type": "string", | |
| "enum": [ | |
| "flats", | |
| "corners", | |
| "side" | |
| ], | |
| "default": "flats", | |
| "description": "size is across flats, across corners or one side" | |
| }, | |
| "center_x": { | |
| "type": "number", | |
| "default": 0, | |
| "description": "centre X in mm" | |
| }, | |
| "center_y": { | |
| "type": "number", | |
| "default": 0, | |
| "description": "centre Y in mm" | |
| }, | |
| "angle": { | |
| "type": "number", | |
| "default": 0, | |
| "description": "rotation in degrees" | |
| } | |
| }, | |
| "required": [ | |
| "shape", | |
| "size" | |
| ] | |
| } | |
| }, | |
| { | |
| "name": "draw_arc", | |
| "description": "Draw a circular arc in the active sketch, counter-clockwise from a start to an end angle.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": { | |
| "radius": { | |
| "type": "number", | |
| "exclusiveMinimum": 0, | |
| "description": "radius in mm, the number after R" | |
| }, | |
| "start_angle": { | |
| "type": "number", | |
| "default": 0, | |
| "description": "start angle in degrees" | |
| }, | |
| "end_angle": { | |
| "type": "number", | |
| "default": 180, | |
| "description": "end angle in degrees" | |
| }, | |
| "center_x": { | |
| "type": "number", | |
| "default": 0, | |
| "description": "centre X in mm" | |
| }, | |
| "center_y": { | |
| "type": "number", | |
| "default": 0, | |
| "description": "centre Y in mm" | |
| } | |
| }, | |
| "required": [ | |
| "radius" | |
| ] | |
| } | |
| }, | |
| { | |
| "name": "revolve", | |
| "description": "Revolve the active sketch profile around an origin axis into a solid (turned part).", | |
| "parameters": { | |
| "type": "object", | |
| "properties": { | |
| "axis": { | |
| "type": "string", | |
| "enum": [ | |
| "x", | |
| "y", | |
| "z" | |
| ], | |
| "description": "axis to revolve around" | |
| }, | |
| "angle": { | |
| "type": "number", | |
| "exclusiveMinimum": 0, | |
| "maximum": 360, | |
| "default": 360, | |
| "description": "angle in degrees" | |
| }, | |
| "operation": { | |
| "type": "string", | |
| "enum": [ | |
| "new_body", | |
| "join", | |
| "cut", | |
| "intersect" | |
| ], | |
| "default": "new_body", | |
| "description": "join adds material, cut removes it" | |
| } | |
| }, | |
| "required": [ | |
| "axis" | |
| ] | |
| } | |
| }, | |
| { | |
| "name": "combine", | |
| "description": "Boolean of bodies: join the other bodies to the first body, subtract them from it, or keep the overlap.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": { | |
| "operation": { | |
| "type": "string", | |
| "enum": [ | |
| "join", | |
| "cut", | |
| "intersect" | |
| ], | |
| "default": "join", | |
| "description": "join merges, cut subtracts, intersect keeps the overlap" | |
| } | |
| }, | |
| "required": [] | |
| } | |
| }, | |
| { | |
| "name": "move_body", | |
| "description": "Move the body by a distance along X, Y and Z.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": { | |
| "x": { | |
| "type": "number", | |
| "minimum": -10000, | |
| "maximum": 10000, | |
| "default": 0, | |
| "description": "distance along X in mm" | |
| }, | |
| "y": { | |
| "type": "number", | |
| "minimum": -10000, | |
| "maximum": 10000, | |
| "default": 0, | |
| "description": "distance along Y in mm" | |
| }, | |
| "z": { | |
| "type": "number", | |
| "minimum": -10000, | |
| "maximum": 10000, | |
| "default": 0, | |
| "description": "distance along Z (up) in mm" | |
| } | |
| }, | |
| "required": [] | |
| } | |
| }, | |
| { | |
| "name": "set_material", | |
| "description": "Assign a physical material to the body.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": { | |
| "material": { | |
| "type": "string", | |
| "enum": [ | |
| "steel", | |
| "stainless_steel", | |
| "aluminum", | |
| "brass", | |
| "copper", | |
| "titanium", | |
| "abs", | |
| "nylon" | |
| ], | |
| "description": "material named in the request" | |
| } | |
| }, | |
| "required": [ | |
| "material" | |
| ] | |
| } | |
| }, | |
| { | |
| "name": "set_parameter", | |
| "description": "Create a named user parameter or change its value.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": { | |
| "name": { | |
| "type": "string", | |
| "pattern": "^[A-Za-z_][A-Za-z0-9_]{0,31}$", | |
| "maxLength": 32, | |
| "description": "parameter name exactly as written, e.g. wall_t" | |
| }, | |
| "value": { | |
| "type": "number", | |
| "minimum": -100000, | |
| "maximum": 100000, | |
| "description": "the number after = or 'to'" | |
| }, | |
| "unit": { | |
| "type": "string", | |
| "enum": [ | |
| "mm", | |
| "cm", | |
| "inch", | |
| "deg", | |
| "none" | |
| ], | |
| "default": "mm", | |
| "description": "unit of the value; none for a plain count" | |
| } | |
| }, | |
| "required": [ | |
| "name", | |
| "value" | |
| ] | |
| } | |
| }, | |
| { | |
| "name": "list_parameters", | |
| "description": "List the user parameters with their values.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": {}, | |
| "required": [] | |
| } | |
| }, | |
| { | |
| "name": "measure_body", | |
| "description": "Report the size (bounding box), volume and mass of each body.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": {}, | |
| "required": [] | |
| } | |
| }, | |
| { | |
| "name": "check_timeline", | |
| "description": "Check the timeline for features with errors or warnings.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": {}, | |
| "required": [] | |
| } | |
| }, | |
| { | |
| "name": "capture_view", | |
| "description": "Take a screenshot of the model, optionally from a standard view direction.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": { | |
| "direction": { | |
| "type": "string", | |
| "enum": [ | |
| "current", | |
| "front", | |
| "back", | |
| "bottom", | |
| "top", | |
| "left", | |
| "right", | |
| "iso-bottom-left", | |
| "iso-bottom-right", | |
| "iso-top-left", | |
| "iso-top-right" | |
| ], | |
| "default": "current", | |
| "description": "view to capture from; iso = isometric corner" | |
| } | |
| }, | |
| "required": [] | |
| } | |
| }, | |
| { | |
| "name": "fit_view", | |
| "description": "Zoom the view so the whole model fits the window.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": {}, | |
| "required": [] | |
| } | |
| }, | |
| { | |
| "name": "export_model", | |
| "description": "Export the design to a file in a named format.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": { | |
| "format": { | |
| "type": "string", | |
| "enum": [ | |
| "step", | |
| "stl", | |
| "3mf", | |
| "iges", | |
| "f3d" | |
| ], | |
| "description": "file format named in the request" | |
| }, | |
| "name": { | |
| "type": "string", | |
| "pattern": "^[A-Za-z0-9][A-Za-z0-9_-]{0,39}$", | |
| "maxLength": 40, | |
| "description": "file name without extension, exactly as written" | |
| } | |
| }, | |
| "required": [ | |
| "format" | |
| ] | |
| } | |
| }, | |
| { | |
| "name": "new_document", | |
| "description": "Create a new empty design document.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": {}, | |
| "required": [] | |
| } | |
| }, | |
| { | |
| "name": "save_document", | |
| "description": "Save the active document.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": {}, | |
| "required": [] | |
| } | |
| }, | |
| { | |
| "name": "open_document", | |
| "description": "Find a saved document by name and open it.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": { | |
| "name": { | |
| "type": "string", | |
| "pattern": "^[A-Za-z0-9][A-Za-z0-9 _.-]{0,39}$", | |
| "maxLength": 40, | |
| "description": "document name or part of it, exactly as written" | |
| } | |
| }, | |
| "required": [ | |
| "name" | |
| ] | |
| } | |
| }, | |
| { | |
| "name": "create_box", | |
| "description": "Create a box (block, cube) in one step, centred on the origin.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": { | |
| "width": { | |
| "type": "number", | |
| "exclusiveMinimum": 0, | |
| "description": "size along X in mm, the first number of 40x30x10" | |
| }, | |
| "depth": { | |
| "type": "number", | |
| "exclusiveMinimum": 0, | |
| "description": "size along Y in mm, the second number" | |
| }, | |
| "height": { | |
| "type": "number", | |
| "exclusiveMinimum": 0, | |
| "description": "size along Z (up) in mm, the third number" | |
| } | |
| }, | |
| "required": [ | |
| "width", | |
| "depth", | |
| "height" | |
| ] | |
| } | |
| }, | |
| { | |
| "name": "create_cylinder", | |
| "description": "Create a cylinder (rod, disc) in one step, standing on the origin.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": { | |
| "diameter": { | |
| "type": "number", | |
| "exclusiveMinimum": 0, | |
| "description": "diameter in mm, the number after Ø or 'dia'" | |
| }, | |
| "height": { | |
| "type": "number", | |
| "exclusiveMinimum": 0, | |
| "description": "height or length in mm" | |
| } | |
| }, | |
| "required": [ | |
| "diameter", | |
| "height" | |
| ] | |
| } | |
| }, | |
| { | |
| "name": "center_hole", | |
| "description": "Drill a hole at the centre (middle) of a face of the body.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": { | |
| "diameter": { | |
| "type": "number", | |
| "exclusiveMinimum": 0, | |
| "description": "hole diameter in mm, the number after Ø or 'dia'" | |
| }, | |
| "depth": { | |
| "type": "number", | |
| "exclusiveMinimum": 0, | |
| "description": "depth in mm of a blind hole; omit for a through hole" | |
| }, | |
| "face": { | |
| "type": "string", | |
| "enum": [ | |
| "top", | |
| "bottom", | |
| "front", | |
| "back", | |
| "left", | |
| "right" | |
| ], | |
| "default": "top", | |
| "description": "face to drill into" | |
| } | |
| }, | |
| "required": [ | |
| "diameter" | |
| ] | |
| } | |
| }, | |
| { | |
| "name": "corner_holes", | |
| "description": "Drill a hole near each corner of a face of the body.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": { | |
| "diameter": { | |
| "type": "number", | |
| "exclusiveMinimum": 0, | |
| "description": "hole diameter in mm" | |
| }, | |
| "margin": { | |
| "type": "number", | |
| "exclusiveMinimum": 0, | |
| "description": "inset in mm from the edges" | |
| }, | |
| "depth": { | |
| "type": "number", | |
| "exclusiveMinimum": 0, | |
| "description": "depth in mm; omit for through holes" | |
| }, | |
| "face": { | |
| "type": "string", | |
| "enum": [ | |
| "top", | |
| "bottom", | |
| "front", | |
| "back", | |
| "left", | |
| "right" | |
| ], | |
| "default": "top", | |
| "description": "face to drill into" | |
| } | |
| }, | |
| "required": [ | |
| "diameter", | |
| "margin" | |
| ] | |
| } | |
| }, | |
| { | |
| "name": "bolt_hole", | |
| "description": "Drill a clearance hole for a metric screw such as M6.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": { | |
| "size": { | |
| "type": "string", | |
| "enum": [ | |
| "M3", | |
| "M4", | |
| "M5", | |
| "M6", | |
| "M8", | |
| "M10", | |
| "M12" | |
| ], | |
| "description": "screw size" | |
| }, | |
| "style": { | |
| "type": "string", | |
| "enum": [ | |
| "clearance", | |
| "counterbore", | |
| "countersink" | |
| ], | |
| "default": "clearance", | |
| "description": "recess for the screw head" | |
| }, | |
| "x": { | |
| "type": "number", | |
| "default": 0, | |
| "description": "centre X in mm" | |
| }, | |
| "y": { | |
| "type": "number", | |
| "default": 0, | |
| "description": "centre Y in mm" | |
| } | |
| }, | |
| "required": [ | |
| "size" | |
| ] | |
| } | |
| }, | |
| { | |
| "name": "split_body", | |
| "description": "Split the body into two bodies at its middle (cut it in half).", | |
| "parameters": { | |
| "type": "object", | |
| "properties": { | |
| "direction": { | |
| "type": "string", | |
| "enum": [ | |
| "vertical", | |
| "horizontal", | |
| "lengthwise" | |
| ], | |
| "default": "vertical", | |
| "description": "horizontal = top and bottom halves; vertical = across the longest side; lengthwise = along it" | |
| }, | |
| "offset": { | |
| "type": "number", | |
| "description": "distance in mm of the cut from the middle" | |
| } | |
| }, | |
| "required": [] | |
| } | |
| }, | |
| { | |
| "name": "copy_body", | |
| "description": "Duplicate the body: make copies of it in a row.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": { | |
| "count": { | |
| "type": "integer", | |
| "minimum": 1, | |
| "maximum": 100, | |
| "default": 1, | |
| "description": "number of copies, the number before 'times' or 'copies'" | |
| }, | |
| "spacing": { | |
| "type": "number", | |
| "exclusiveMinimum": 0, | |
| "description": "distance in mm from one copy to the next; omit for side by side" | |
| }, | |
| "axis": { | |
| "type": "string", | |
| "enum": [ | |
| "x", | |
| "y", | |
| "z" | |
| ], | |
| "default": "x", | |
| "description": "direction of the row" | |
| } | |
| }, | |
| "required": [] | |
| } | |
| }, | |
| { | |
| "name": "set_thickness", | |
| "description": "Change the thickness (height) of the existing body by editing its extrude.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": { | |
| "thickness": { | |
| "type": "number", | |
| "exclusiveMinimum": 0, | |
| "description": "new thickness or height in mm" | |
| } | |
| }, | |
| "required": [ | |
| "thickness" | |
| ] | |
| } | |
| }, | |
| { | |
| "name": "scale_body", | |
| "description": "Scale the body uniformly by a factor (resize, make bigger or smaller).", | |
| "parameters": { | |
| "type": "object", | |
| "properties": { | |
| "factor": { | |
| "type": "number", | |
| "exclusiveMinimum": 0, | |
| "maximum": 1000, | |
| "description": "scale factor as written: 2 doubles, 0.5 halves" | |
| } | |
| }, | |
| "required": [ | |
| "factor" | |
| ] | |
| } | |
| }, | |
| { | |
| "name": "rotate_body", | |
| "description": "Rotate the body in place by an angle around an axis.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": { | |
| "angle": { | |
| "type": "number", | |
| "minimum": -360, | |
| "maximum": 360, | |
| "description": "angle in degrees" | |
| }, | |
| "axis": { | |
| "type": "string", | |
| "enum": [ | |
| "x", | |
| "y", | |
| "z" | |
| ], | |
| "default": "z", | |
| "description": "axis to rotate around; z is upright" | |
| } | |
| }, | |
| "required": [ | |
| "angle" | |
| ] | |
| } | |
| }, | |
| { | |
| "name": "delete_body", | |
| "description": "Delete the body from the design.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": {}, | |
| "required": [] | |
| } | |
| }, | |
| { | |
| "name": "hide_body", | |
| "description": "Hide the body (make it invisible) without deleting it.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": {}, | |
| "required": [] | |
| } | |
| }, | |
| { | |
| "name": "show_body", | |
| "description": "Show hidden bodies again (unhide).", | |
| "parameters": { | |
| "type": "object", | |
| "properties": {}, | |
| "required": [] | |
| } | |
| }, | |
| { | |
| "name": "set_color", | |
| "description": "Give the body a colour (appearance).", | |
| "parameters": { | |
| "type": "object", | |
| "properties": { | |
| "color": { | |
| "type": "string", | |
| "enum": [ | |
| "red", | |
| "orange", | |
| "yellow", | |
| "green", | |
| "blue", | |
| "purple", | |
| "pink", | |
| "brown", | |
| "black", | |
| "white", | |
| "gray" | |
| ], | |
| "description": "colour named in the request" | |
| } | |
| }, | |
| "required": [ | |
| "color" | |
| ] | |
| } | |
| } | |
| ] | |