Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Command reference

Browse commands by their names and default keyboard shortcuts. Entries are organized by command group and panel; ungrouped commands follow by area.

For step-by-step instructions, start with the window tour, sketching guide or solid features guide. Practical command guides below explain prerequisites, options and examples in place. Entries without a practical guide link to an overview instead. Contribute a guide, tip, demo or model link.

Expand Automation details for the command ID and parameters used by scripts, the CLI and MCP. In that notation, ? marks an optional parameter and expr means a number or an expression with units.

This catalog is generated from solidcraft-cli commands by cargo xtask book (493 commands).

Practical guides:

SOLID › CREATE

Create Sketch

Command group: SOLID › CREATE

Read the solid features guide.

Automation details

Command ID: sketch.create

Parameters:

plane: XY|XZ|YZ | construction plane name or id | {origin?: [x,y,z] numbers in mm, default [0,0,0] (not an expression), x_dir, y_dir} (in world coordinates unless frame says otherwise; a named plane is the active component's own) | {face: [world x,y,z], body?: exact world body, index?: face index, path?: complete occurrence ids, fixed?: bool}; new face attachments require a unique certified source (a flat face of a sheet metal body attaches to its panel instead, in the flat pattern's coordinates), fixed:true explicitly freezes the selected plane; offset?: expr, flip?: bool | "x" | "y" (not on a face: sketch the plane from its other side, so the normal and the default extrude direction are reversed; a half turn about the plane's own x or y axis, true picks the one keeping the sketch's y axis upward; offset still moves along the unflipped normal), frame?: world (default) | component (which coordinates an explicit plane is in; the reply's `frame` says which, with a `note` when the active component is moved or turned), project_edges?: bool, name?

Extrude

Command group: SOLID › CREATE

Default keyboard shortcut: E

Turn a flat sketch region into a solid, or add or remove material from an existing body. For example, a rectangle extruded 20 mm becomes a rectangular block.

Before you start

  • For a solid extrusion, finish a sketch with at least one closed region. Select the region you want, rather than an individual edge or point.
  • You can also select a planar face of an existing body instead of a sketch.
  • To add or remove material, an existing body must meet the extrusion. Choose New Body when you want an independent piece.
  • Thin Extrude uses sketch curves instead of filled regions; open chains are allowed. This is useful for a wall or a ring.

Options

ChoiceWhat it doesWhen to use it
ProfilesChooses the filled sketch regions to extrude. A loop inside another loop makes a hole.Select just the regions you need when a sketch contains several.
DistanceSets how far the shape extends. Values can include units, such as 20 mm, or a named design parameter.Make a part to a known size.
Reverse DirectionSends the extrusion to the other side of the sketch.The preview points away from the intended body.
SymmetricSplits the entered total distance equally across the sketch plane. 10 mm extends 5 mm on each side.Keep the sketch at the middle of a part.
Two SidesSets a separate distance on each side.The sketch is between two unequal extensions.
Through AllReaches through the target body.Cut a hole that must stay open when the body becomes thicker.
To ObjectStops at a selected target face, vertex or point. An offset can stop before or beyond that target.Let the end follow another part of the design.
StartStarts at the sketch, at an offset from it, or from a selected object.Leave a gap before the extrusion begins.
Taper AngleSlopes the side walls.Make drafted sides; reduce the angle if the profile’s narrow details cannot support it.
OperationNew Body makes a separate piece; Join adds material; Cut removes it; Intersect keeps only the overlap.Choose the intended result explicitly when the automatic preview is not what you want.
Target bodiesChooses which existing bodies take part in a join, cut or intersection.Several bodies lie in the extrusion’s path.
Thin ExtrudeBuilds walls along curves; thickness and side control where the material lies. Two-sided walls can have different thicknesses.Make ribs, walls or rings without drawing both wall boundaries.

Try it: a 20 mm block

  1. Create a sketch on the XY plane and draw a closed rectangle.
  2. Finish the sketch and choose Extrude.
  3. Select the rectangular region, set Distance to 20 mm, and choose New Body.
  4. Check the preview’s direction and confirm. You should have one solid block.
  5. Edit the extrusion in the timeline to change its distance later.

Tips and common mistakes

  • Do check the operation before confirming. Automatic operation can join an addition or cut into an existing body; it is not a promise of a separate part.
  • Do use Through All for a cut that should follow later thickness changes.
  • Don’t expect an open outline to make a filled solid. Close it, or choose Thin Extrude for a wall.
  • Don’t assume a symmetric distance is the distance on each side. New symmetric extrusions use the total distance; older saved designs can retain their earlier convention.
  • Taper with a two-sided or symmetric extent is not supported. A very steep taper can also be refused rather than creating an invalid result.

Examples and community resources

The bracket starts with a closed L-shaped profile; another extrusion removes the two holes. Its dimensions are controlled by design parameters.

ResourceWhat to exploreAuthor and licence
Editable bracket recipeA complete SolidCraft example using an extrusion, a fillet and a cut.SolidCraft contributors; MIT OR Apache-2.0.

Contribute a tip, demo, model or screenshot to add a reviewed resource beside this explanation.

See also

Revolve turns a profile around an axis. Sweep carries a profile along a path. Flange creates sheet metal with a thickness rule.

Automation details

Command ID: solid.extrude

Parameters:

distance: expr (or through_all: true); taper?: angle expr (positive: outward, so the far end is larger along the extrusion direction; negative: inward, so the far end is smaller); sketch?: id|name (default: active or last sketch); profiles?: all | [index] | [{curves: [ids]}] (the profile whose outer loop is made of exactly these curves, or pieces of them; found again on every recompute, so it follows parameter changes; islands inside are its holes; an error when no profile or several match) | [{point:[x,y]}] (index and point picks are stored by their curves when that finds the same profile; a pick on a drawn profile that reference geometry, such as the projected outline of the face the sketch is on, cuts into regions takes the whole drawn profile); exact_regions?: bool (each index or point pick is exactly the region it names, as the dialogs send); default: every drawn profile, except that a loop inside another is its hole and a loop inside that hole is material again; face?: [x,y,z] (extrude a planar body face instead of a sketch profile); faces?: [[x,y,z],…] (coplanar faces of one body); face_body?: name (whose face, where faces of several bodies meet at the point); direction?: positive|negative|symmetric (distance is total thickness, split evenly around the start plane); convention?: total_distance|legacy_per_side (default total_distance; legacy preserves older symmetric extents); distance2?: expr (Two Sides: a second distance the other way from the first side, which may be through_all or to; with direction: negative the first side goes against the normal and distance2 along it); start_offset?: expr (along the sketch normal, also with direction: negative); to?: [x,y,z] (To Object: a face, vertex or point; to_offset?: expr past it); from?: [x,y,z] (From Object: start at that face or point); operation?: new|join|cut|intersect|auto (cut into a body, otherwise join existing solids; new in an empty component); targets?: [body] (Join from a face, or from a sketch on a body's face, defaults to that face's body; explicit targets or participants override); name?; body_name?; thin?: true (Thin: a wall along sketch curves instead of the profiles) with curves?: [curve ids] (open chains and closed loops, joined where they meet end to end; default: every drawn curve of the sketch), thickness: expr, side?: center|inside|outside|two_sides (a closed loop's inside is the area it encloses, an open chain's the side it bends toward, a straight line's the left of its first curve as drawn; default center), thickness2?: expr (two_sides: the thickness outside); corners are mitred, crossing walls are one

Revolve

Command group: SOLID › CREATE

Read the solid features guide.

Automation details

Command ID: solid.revolve

Parameters:

axis: sketch line id | x | y (sketch axes) | X|Y|Z (world) | {type: world, axis: X|Y|Z} (as returned by timeline.inspect) | construction axis name (followed when edited) | {origin, dir} | {edge|face: [x,y,z]} (a straight or circular edge, or a cylinder, cone or torus face: about its axis, followed as the model changes); angle?: expr (default 360 deg); angle2?: expr (Two Sides: the other side's angle); direction?: symmetric (angle split either side, independent of axis direction); convention?: sketch_normal|legacy_axis_start (default sketch_normal; legacy retains older angular starts); to?: [x,y,z] (To Object: turn until that face, vertex or point); sketch?, profiles? | face: [x,y,z] (a planar body face as the profile) and face_body?: name (whose face, where faces of several bodies meet), operation?, targets?, name?, body_name?

Sweep

Command group: SOLID › CREATE

Read the solid features guide.

Automation details

Command ID: solid.sweep

Parameters:

sketch: profile sketch; profiles?; path_sketch: sketch; path: [curve ids in order]; orientation?: perpendicular (default: square to the path, turning with it) | parallel (as drawn: the profile moves without turning; the path must keep crossing its plane) | [x,y,z] (square to the path, its turn about the path fixed by this direction); twist?: angle expr (the profile turns this much about the path over its length; within 4 turns); scale?: expr (the profile's scale at the end, linear along the path; 0.01…100); rails?: [{sketch?: sketch (default path_sketch), curves: [curve ids in order]}] (guide rails, one or two, each meeting every plane square to the path once along it, from the end nearest the path's start: one rail turns the profile so its point where the rail starts stays on the rail and scales it with the rail's distance from the path; two rails carry it between them, its points where they start staying on both; rails take the default orientation, no twist and no scale, and a path without sharp corners); rail_fit?: scale (default: the profile grows and shrinks evenly) | stretch (only across to the rail, between the rails); operation?, targets?, name?, body_name?

Loft

Command group: SOLID › CREATE

Read the solid features guide.

Automation details

Command ID: solid.loft

Parameters:

sections: [{sketch, profiles?} | {sketch, point: id} (an apex)] (2…50, in order; matching hole counts, no holes at an apex); rails?: [{sketch, curves: [ids in order]}] (one or two guide rails from the first section to the last, through every section's outline: the loft follows them between the sections; not with sections that have holes); rail_fit?: scale|stretch (default scale: with one rail the sections grow evenly with the rail's distance from their middle, with two with the distance between the rails; stretch: only that way); operation?, targets? (Join excludes hidden bodies from automatic targets; explicit targets or participants may include them), name?, body_name?

Box

Command group: SOLID › CREATE

Read the solid features guide.

Automation details

Command ID: solid.box

Parameters:

length, width, height: expr; corner?: [x,y,z] | center?: [x,y,z] (numbers in mm or length expressions; default: the origin); operation?, targets?: [body], name?, body_name?

Cylinder

Command group: SOLID › CREATE

Read the solid features guide.

Automation details

Command ID: solid.cylinder

Parameters:

radius | diameter, height: expr; base?: [x,y,z] (centre of the bottom: numbers in mm or length expressions; default: the origin); axis?: X|Y|Z|[x,y,z] (default Z); operation?, targets?: [body], name?, body_name?

Sphere

Command group: SOLID › CREATE

Read the solid features guide.

Automation details

Command ID: solid.sphere

Parameters:

radius | diameter: expr; center?: [x,y,z] (numbers in mm or length expressions; default: the origin); operation?, targets?: [body], name?, body_name?

Torus

Command group: SOLID › CREATE

Read the solid features guide.

Automation details

Command ID: solid.torus

Parameters:

major, minor: expr (radii); center?: [x,y,z] (numbers in mm or length expressions; default: the origin); operation?, targets?: [body], name?, body_name?

Cone

Command group: SOLID › CREATE

Read the solid features guide.

Automation details

Command ID: solid.cone

Parameters:

radius | diameter, height: expr (the base circle, and the top's distance along the axis; a negative height goes the other way); top_radius? | top_diameter?: expr (the top circle; default 0: a full cone ending in an apex); base?: [x,y,z] (centre of the base circle: numbers in mm or length expressions; default: the origin); axis?: X|Y|Z|[x,y,z] (default Z); operation?, targets?: [body], name?, body_name?

Rectangular Pattern

Command group: SOLID › CREATE

Read the solid features guide.

Automation details

Command ID: solid.pattern.rectangular

Parameters:

features: [names] | bodies: [names] | components: [names]; dir1: [x,y,z]; count1; spacing1; dir2?, count2?, spacing2?; alignment?, alignment2?: left|center|right (default right; counts include the original); reversed?, reversed2?: bool (Flip)

Circular Pattern

Command group: SOLID › CREATE

Read the solid features guide.

Automation details

Command ID: solid.pattern.circular

Parameters:

features: [names] | bodies: [names] | components: [names]; axis: X|Y|Z | construction axis name (followed when edited) | {origin, dir} | {edge|face: [x,y,z]} (a straight or circular edge, or a cylinder, cone or torus face: about its axis, followed as the model changes); count; angle? (default 360 deg; partial arcs include both ends); alignment?: left|center|right (default right; original stays fixed); reversed?: bool (Flip; selects the extra side for even centered counts)

Pattern on Path

Command group: SOLID › CREATE

Read the solid features guide.

Automation details

Command ID: solid.pattern.path

Parameters:

features: [names] | bodies: [names]; path_sketch: sketch; path: [curve ids in order]; count; spacing (between instances) | distance (first to last); orientation?: identical|path; flip?: bool

Mirror

Command group: SOLID › CREATE

Read the solid features guide.

Automation details

Command ID: solid.mirror

Parameters:

features: [names] | bodies: [names] (combine?: join with the original); plane: XY|XZ|YZ|construction plane name or id|{origin, normal}|{origin, x_dir, y_dir} (origin coordinates may be length expressions; the mirror follows them, or a construction plane)

Hole

Command group: SOLID › CREATE

Default keyboard shortcut: H

Read the solid features guide.

Automation details

Command ID: solid.hole

Parameters:

position: [x,y,z] on a face (numbers, or length expressions the hole follows) | sketch + points: [sketch point ids] (one hole each, perpendicular to the sketch, into the material on whichever side of the sketch plane it is) | sketch alone (every sketch point: standalone points and circle centres); flip?: bool (sketch points: drill to the other side); single?: bool (with one sketch point: a Single hole that follows the point, drilled into the face there); direction?: [x,y,z] (default: into the face, against its outward normal; one that leaves the face is mirrored into it; ignored with sketch points unless single); diameter | thread (a tapped hole: metric major minus pitch or tabulated UNC/UNF, G or Rp cut-tap drill) | clearance: "M6" with fit?: close|normal|loose (ISO 273); depth? (default through all) | to?: [x,y,z] (To Object: drill to that face or point); references?: [{edge: [x,y,z] on a straight edge of the face, distance: expr}] (at most two; the centre goes that far from each edge's line, in the face's plane, and follows the edges; with a numeric position only); type?: simple|drilled|counterbore|countersink; tip_angle?; cb_diameter?, cb_depth?; cs_diameter?, cs_angle?; thread?: "M6" or "1/4-20 UNC" (cosmetic); handedness?: right|left (default right, needs thread for left); thread_depth?: positive length independent of drill depth (default: full useful cylindrical wall; must fit that wall); targets?: [body] (the bodies to drill; holes at the points of a sketch on a body's face default to that body, found along the holes' direction on it alone; explicit targets or participants override, ["*"] every body)

Pipe

Command group: SOLID › CREATE

Read the solid features guide.

Automation details

Command ID: solid.pipe

Parameters:

path_sketch: sketch; path: [curve ids in order]; diameter: expr; wall?: expr (hollow); operation?, targets?, name?, body_name?

Bounding Solid

Command group: SOLID › CREATE

Read the solid features guide.

Automation details

Command ID: solid.bounding_solid

Parameters:

bodies?: [names] (default: all); margin?: expr; name?, body_name?

Thread

Command group: SOLID › CREATE

Read the solid features guide.

Automation details

Command ID: solid.thread

Parameters:

face: [x,y,z] on a cylindrical face; designation?: ISO metric ("M8", "M8x1"; default: the size that fits); length?: expr (default: the whole face); handedness?: right|left (default right); modeled?: bool (default false). Cosmetic: the model is unchanged, model.threads lists it. Modeled: cuts the thread profile into the body; a shaft thicker than the thread is first turned down to its major diameter over the threaded length

Boundary Fill

Command group: SOLID › CREATE

Read the solid features guide.

Automation details

Command ID: solid.boundary_fill

Parameters:

tools: [bodies]; cells: [[x,y,z] a point inside each cell to fill (a cell: inside some tools, outside the rest)]; operation?: new|join|cut|intersect; remove_tools?: bool

Coil

Command group: SOLID › CREATE

Read the solid features guide.

Automation details

Command ID: solid.coil

Parameters:

diameter; two of revolutions (or turns), height, pitch; section_size; section?: circular|square; section_position?: inside|center|outside; base?: [x,y,z] (numbers in mm or length expressions; default: the origin); axis?: X|Y|Z|[x,y,z] (default Z); start_angle?; clockwise?: bool; sketch? (a sketch; its plane is the section plane, so its placement sets the radius and start phase), profiles? (default: all; one closed profile without holes); operation?, targets?, name?, body_name?

Rib

Command group: SOLID › CREATE

Read the solid features guide.

Automation details

Command ID: solid.rib

Parameters:

sketch, curves: [open curve ids, in order]; thickness (across the sketch plane, or across the curves when normal); depth? (default: to the next face); flip?: bool (fill to the other side); direction?: in_plane|normal (grow across the sketch plane, the default, or along its normal)

Web

Command group: SOLID › CREATE

Read the solid features guide.

Automation details

Command ID: solid.web

Parameters:

sketch, curves: [open curve ids] (one wall each); thickness; depth? (default: to the next face); flip?: bool; direction?: in_plane|normal

Emboss

Command group: SOLID › CREATE

Read the solid features guide.

Automation details

Command ID: solid.emboss

Parameters:

sketch, profiles?; depth; mode?: emboss|deboss; targets?; face?: world point [x,y,z] selecting a planar or complete exterior cylindrical wall (inferred when exactly one supported tangent cylinder matches the selected profiles)

Joint Origin

Command group: SOLID › CREATE

Read the components and joints guide.

Automation details

Command ID: joint.origin

Parameters:

name?, occurrence?: id|name (default: from the pick, or the named face's component), face: [x,y,z] | "<name>" (centre of a planar face) | circle: [x,y,z] | "<name>" (centre of a round end: a point on its wall or rim, the end's centre, or the round face's name as model.faces lists it) | edge: [x,y,z] (a point on an edge of a planar face: the edge's middle, z out of the face, y into it; on?: [x,y,z] a point on the face (default: the larger planar face beside the edge); corner?: [x,y,z] near one end: the corner there, x and y along its two edges into the face; found again by name, so it follows the face as it changes size; z?: [x,y,z] the frame's z instead of the face's normal, along the edge when it runs that way, x chosen from z: an edge or corner picked as it is, kept as a point where it can't be found by name) | point: [x,y,z], z?: [x,y,z]; a circle's z?: [x,y,z] (a round edge's centre with the way out of it: its end by name when that is the frame it shows, else a point there); body?: the named face's body; end?: "<name>" (a circle's end: the face across its rim there; default the end nearer the pick); x?: [x,y,z] (a direction, world) | "<face name>" | {face: [x,y,z]} (the frame's x: a direction, a plane's normal, or the way to another hole's axis; keeps a round origin's turn; a point's x is a direction, laid square to its z, default: chosen from z alone). Faces are kept by name: the origin follows its face, and a circle its end, when the design changes

SOLID › MODIFY

Fillet

Command group: SOLID › MODIFY

Default keyboard shortcut: F

Read the solid features guide.

Automation details

Command ID: solid.fillet

Parameters:

edges: [[x,y,z] point on edge | {body, index}]; radius: expr; body?; type?: constant|curvature (alias g2: curvature-continuous quintic between planar faces along straight edges, one planar end face at each end (including sloped ends); radius sets the equivalent circular setback, not constant curvature; exact fit only)|chord (radius is the width across)|variable (radius at the end nearest start, radius2 at the other; one end may be 0, where the round closes to the corner)|spline (the radius along the edge is a clamped B-spline from the end nearest start: radius is its first control radius, radii the rest, knots its knot vector from 0 to 1; one end may be 0); radius2?; start?: [x,y,z]; radii?: [expr, …]; knots?: [number, …]; mid?: [[position 0…1 from start, radius expr], …] (variable radii between the ends); smooth?: bool (smooth instead of straight between the radii); corner?: rolling|g2 (rolling, the default: the corners where three blended edges meet are pieces of the rolling ball's sphere, tangent to each blend; g2: a patch repeating each blend's surface up to the second order, constant-radius exact fillets only, refused where it cannot be built); fit?: exact|reduce|taper (exact, the default: a radius too large for the geometry around the edges is refused; reduce: where it doesn't fit it is reduced to the largest that does, one radius for edges sharing a face; the smallest used is returned as `radius_applied`, each edge's as `radii_applied: [{edge: [x,y,z], radius}]`, and noted in the feature's warning; taper: along each straight edge between planar faces where it doesn't fit, the radius follows the room there as a smooth spline, down to 0 where a face closes to a point, noted in the feature's warning)

Chamfer

Command group: SOLID › MODIFY

Read the solid features guide.

Automation details

Command ID: solid.chamfer

Parameters:

edges: [[x,y,z] | {body, index}]; distance: expr; distance2?: expr (along the second face) | angle?: expr (from the first face); flip?: bool (which face is first: by default the one facing up most); body?

Combine

Command group: SOLID › MODIFY

Read the solid features guide.

Automation details

Command ID: solid.combine

Parameters:

target: body; tools: [body]; operation?: join|cut|intersect; keep_tools?: bool; new_component?: bool (the result goes into a new component; component_name?)

Scale

Command group: SOLID › MODIFY

Read the solid features guide.

Automation details

Command ID: solid.scale

Parameters:

bodies: [names]; factor: expr | factors: [x, y, z] exprs; origin?: [x,y,z]

Delete Face

Command group: SOLID › MODIFY

Read the solid features guide.

Automation details

Command ID: face.delete

Parameters:

faces: [[x,y,z] points on the faces, or face names from model.faces]; body?; heal?: bool (default true: the neighbouring planes close the gap, as when a rounded edge, hole or boss is taken off; false: the gap stays open and the faces left are a surface body)

Offset Face

Command group: SOLID › MODIFY

Read the solid features guide.

Automation details

Command ID: solid.offset_face

Parameters:

faces: [[x,y,z] points on faces (planar or curved), or face names from model.faces]; distance: expr (positive: outward); body?

Shell

Command group: SOLID › MODIFY

Read the solid features guide.

Automation details

Command ID: solid.shell

Parameters:

faces: [[x,y,z] points on the faces to remove, or face names from model.faces]; thickness: expr; direction?: inside|outside|both; tangent_chain?: bool (also open faces joined smoothly to the picked ones); body?

Draft

Command group: SOLID › MODIFY

Read the solid features guide.

Automation details

Command ID: solid.draft

Parameters:

faces: [[x,y,z] points, or face names from model.faces]; angle: expr; neutral: XY|XZ|YZ|plane name|{origin, normal}; pull?: [x,y,z] (default: neutral plane normal); body?

Split Face

Command group: SOLID › MODIFY

Read the solid features guide.

Automation details

Command ID: solid.split_face

Parameters:

faces: [[x,y,z] points on the faces to split, or face names from model.faces]; body?; and the splitting tool: plane: XY|XZ|YZ|plane name|{origin, normal} — or tool: {body, point} (a face of a body, its surface extended) — or sketch: id or name (its curves, along the sketch's normal)

Split Body

Command group: SOLID › MODIFY

Read the solid features guide.

Automation details

Command ID: solid.split_body

Parameters:

body: name; plane: XY|XZ|YZ|plane name|{origin, normal} — or tool: {body, point} (a face of a body, its surface extended) — or sketch: id, line: curve id (a straight sketch line, along the sketch's normal)

Press Pull

Command group: SOLID › MODIFY

Default keyboard shortcut: Q

Read the solid features guide.

Automation details

Command ID: solid.press_pull

Parameters:

face: [x,y,z] and distance: expr (positive adds material, negative cuts), or edges: [[x,y,z]…] and distance (a fillet)

Move/Copy

Command group: SOLID › MODIFY

Default keyboard shortcut: M

Read the solid features guide.

Automation details

Command ID: solid.move

Parameters:

bodies: [names]; translate?: [x,y,z] (exprs or numbers); axis?: [x,y,z]; angle?: expr; copy?: bool (default false: keeps the original bodies and transforms a new copy instead of moving them in place)

Replace Face

Command group: SOLID › MODIFY

Read the solid features guide.

Automation details

Command ID: solid.replace_face

Parameters:

faces: [[x,y,z] points on planar faces, or face names from model.faces]; target: plane (XY|XZ|YZ|construction plane|{origin, normal}) | target_face: [x,y,z] on a parallel planar face; body?

Align

Command group: SOLID › MODIFY

Read the solid features guide.

Automation details

Command ID: solid.align

Parameters:

bodies: [names]; from: [x,y,z] | "origin" | {snap: vertex|edge_mid|face_center|circle_center, at: [x,y,z]} | from_face: [x,y,z] | from_plane: XY|XZ|YZ|construction or offset plane name or id|{origin, normal}; to: (the same) | to_face: [x,y,z] | to_plane: (a plane as from_plane; the point or face goes onto it along its normal, and the plane may move later: the bodies follow); faces and planes also turn to meet; flip?: bool

Remove

Command group: SOLID › MODIFY

Read the solid features guide.

Automation details

Command ID: solid.remove

Parameters:

bodies: [names] (removed from here on in the timeline)

Compute All

Command group: SOLID › MODIFY

Read the solid features guide.

Automation details

Command ID: timeline.compute_all

No parameter description is provided by the command registry.

Delete

Command group: SOLID › MODIFY

Default keyboard shortcut: Delete

Read the solid features guide.

Automation details

Command ID: timeline.delete

Parameters:

feature: id|name | features: [id|name] | groups: [timeline folder ids] (a folder goes with all its features and nested folders; one undo step; a sketch takes its dependent features with it) → deleted: [ids]; groups?: [folder ids deleted]; failing?: [{feature, error}] (later features that worked and now fail)

Change Parameters

Command group: SOLID › MODIFY

Read the parameters and expressions guide.

Automation details

Command ID: parameters.change

Parameters:

name, expression (number or text), unit?: mm|cm|m|in|ft|deg|rad|""|text (new parameters default to their value's unit; a text parameter's expression is its text, quotes round it optional: sketch texts' words are built from it), comment?, favorite?: bool, new_name?: rename (references follow); or delete: name; or changes: {name: expression, …} (existing parameters, checked together and rebuilt once, all or nothing) → changed?: {name: value} (with changes), recomputed: features rebuilt, restored: features whose earlier result for the same inputs was reused (e.g. a value set back), switched?: [{feature, name, suppressed}] (the configuration rules that switch a feature's suppression and read a parameter whose value changed run in their order, as on activation; driven parameters and restrictions wait for a configuration edit or activation)

Physical Material

Command group: SOLID › MODIFY

Read the solid features guide.

Automation details

Command ID: material.assign

Parameters:

bodies: [names]; material: name (Steel, Aluminum, ABS Plastic, …, or one made with material.create; `material.list`)

Appearance

Command group: SOLID › MODIFY

Default keyboard shortcut: A

Read the solid features guide.

Automation details

Command ID: appearance.assign

Parameters:

bodies?: [names]; faces?: [[x,y,z] on faces] (body?: which body, default the nearest); components?: [names or ids, or occurrence names]; appearance?: library name or stable starter.* ID (appearance.library) | color: "#rrggbb" or [r, g, b] (0–255), opacity? (0–1, default 1); name?: inert copied look label (requires color, mutually exclusive with appearance); pbr?: {metallic:0..1, roughness:0.045..1, dielectric_ior:1..3} (requires color/appearance and opacity 1); a starter ID or registered starter name resolves its recipe before color overrides; omitted pbr retains that response and pbr: null explicitly clears it. Unavailable glass recipes refuse through either selector. Other custom labels with an explicit color retain legacy scalar behavior. Neither appearance nor color (or color: null): clear, so the face follows its body, the body its component, the component its material

SOLID › CONSTRUCT

Offset Plane

Command group: SOLID › CONSTRUCT

Read the solid features guide.

Automation details

Command ID: construct.plane.offset

Parameters:

base: XY|XZ|YZ|plane name, or a planar face {face: [x,y,z], body?, index?, path?}; offset: expr, or through: a point ref (vertex, sketch point, construction point) the plane goes through, parallel to base; name?

Plane at Angle

Command group: SOLID › CONSTRUCT

Read the solid features guide.

Automation details

Command ID: construct.plane.at_angle

Parameters:

base: XY|XZ|YZ|plane name, or a planar face {face: [x,y,z], body?, index?, path?}; axis: X|Y|Z|construction axis name (where it is now)|{origin, dir} | {edge|face: [x,y,z]} (a straight or circular edge, or a cylinder, cone or torus face: about its axis, followed as the model changes); angle: expr; name?

Axis Through Cylinder/Cone/Torus

Command group: SOLID › CONSTRUCT

Read the solid features guide.

Automation details

Command ID: construct.axis.through_cylinder

Parameters:

face: ref (a cylinder, cone or torus face, or a circular edge); name?

Axis Perpendicular To Face

Command group: SOLID › CONSTRUCT

Read the solid features guide.

Automation details

Command ID: construct.axis.normal_to_face

Parameters:

face: ref; point: ref (the axis goes through it, square to the face); name?

Axis Through Two Planes

Command group: SOLID › CONSTRUCT

Read the solid features guide.

Automation details

Command ID: construct.axis.two_planes

Parameters:

a, b: plane or planar face refs; name?

Axis Through Two Points

Command group: SOLID › CONSTRUCT

Read the solid features guide.

Automation details

Command ID: construct.axis.two_points

Parameters:

a, b: point refs (vertices, sketch points, points); name?

Axis Through Edge

Command group: SOLID › CONSTRUCT

Read the solid features guide.

Automation details

Command ID: construct.axis.edge

Parameters:

edge: ref (a straight edge or sketch line); name?

Point At Vertex

Command group: SOLID › CONSTRUCT

Read the solid features guide.

Automation details

Command ID: construct.point.vertex

Parameters:

point: ref (vertex, sketch point, point); name?

Point Through Two Edges

Command group: SOLID › CONSTRUCT

Read the solid features guide.

Automation details

Command ID: construct.point.two_edges

Parameters:

a, b: edge or line refs (where they meet, or come closest); name?

Point Through Three Planes

Command group: SOLID › CONSTRUCT

Read the solid features guide.

Automation details

Command ID: construct.point.three_planes

Parameters:

a, b, c: plane or planar face refs; name?

Point At Center Of Circle/Sphere/Torus

Command group: SOLID › CONSTRUCT

Read the solid features guide.

Automation details

Command ID: construct.point.center

Parameters:

of: ref (circular edge, sketch circle or arc, sphere or torus face); name?

Point At Edge And Plane

Command group: SOLID › CONSTRUCT

Read the solid features guide.

Automation details

Command ID: construct.point.edge_plane

Parameters:

edge: edge or line ref; plane: plane or planar face ref; name?

Point Along Path

Command group: SOLID › CONSTRUCT

Read the solid features guide.

Automation details

Command ID: construct.point.along_path

Parameters:

path: edge or sketch curve ref; t: expr, 0…1 along it (default 0.5); name?

Midplane

Command group: SOLID › CONSTRUCT

Read the solid features guide.

Automation details

Command ID: construct.plane.midplane

Parameters:

a, b: plane or planar face refs (halfway between; bisecting when they meet at an angle); name?

Plane Through Two Edges

Command group: SOLID › CONSTRUCT

Read the solid features guide.

Automation details

Command ID: construct.plane.two_edges

Parameters:

a, b: straight edge or line refs in one plane; name?

Plane Through Three Points

Command group: SOLID › CONSTRUCT

Read the solid features guide.

Automation details

Command ID: construct.plane.three_points

Parameters:

a, b, c: point refs; name?

Tangent Plane

Command group: SOLID › CONSTRUCT

Read the solid features guide.

Automation details

Command ID: construct.plane.tangent

Parameters:

face: ref (cylinder, cone, sphere or torus); at?: [x,y,z] where it touches (default: the face pick); name?

Plane Along Path

Command group: SOLID › CONSTRUCT

Read the solid features guide.

Automation details

Command ID: construct.plane.along_path

Parameters:

path: edge or sketch curve ref; t: expr, 0…1 along it (default 0.5); name? The plane is square to the path there

Perpendicular Plane

Command group: SOLID › CONSTRUCT

Read the solid features guide.

Automation details

Command ID: construct.plane.perpendicular

Parameters:

plane: plane or planar face ref; line: straight edge, sketch line or axis ref; name? The plane holds the line and is square to the plane

SOLID › ASSEMBLE

New Component

Command group: SOLID › ASSEMBLE

Read the components and joints guide.

Automation details

Command ID: component.create

Parameters:

name?, parent?: component id or name (default: the active one); parent_path?: exact parent placement; activate?: bool (default true); grounded?: bool (default: true for the design's first part, false otherwise)

Insert Design

Command group: SOLID › ASSEMBLE

Read the components and joints guide.

Automation details

Command ID: component.insert_design

Parameters:

path: a .solidcraft design → a new component linked to it, holding its solid bodies as placed in that design and a copy of its design properties; name? (default: the design's name); parent?: component id or name (default: the active one); translate?: [x,y,z]; reuse?: bool (default false): insert a free occurrence, reusing an existing link to the same file when available

Joint

Command group: SOLID › ASSEMBLE

Default keyboard shortcut: J

Read the components and joints guide.

Automation details

Command ID: joint.create

Parameters:

type: rigid|revolute|slider|cylindrical|pin_slot|planar|ball, or a relation: parallel|perpendicular|angle|point_on_plane|point_on_line|line_on_plane (ties only some directions or points, made where the parts are; several between two parts add up); a, b: joint origins ({occurrence, face|circle|edge|point: [x,y,z] in world, or face|circle: "<face name>"; z? for a point, end?, x? as joint.origin} | origin name); values?: [angles in deg or expressions, distances]; limits?: [[min, max] | null…]; flip?: bool (default false: the origins are mated, b's z against a's as two faces meet; true: b's z along a's, so two origins given at one point with the same z stay as they are); offset?: mm or an expression; angle?: deg or an expression (an angle relation's tilt from mated; for other joints the default is none, or a half turn where that turns b less, so faces that already meet stay as they are); name?; quiet?: bool (leave out dof and fixed). An expression (text) is kept with the joint and worked out again whenever the design changes, so the joint follows the parameters it names; a joint whose expression no longer works out (a parameter deleted) is left out of the solve with the reason in its errors

As-Built Joint

Command group: SOLID › ASSEMBLE

Read the components and joints guide.

Automation details

Command ID: joint.as_built

Parameters:

type, a: occurrence, b: occurrence (stay where they are); at?: joint origin (default: b's origin) — the joint's frame; one on a or b is kept on its face or hole there, so the joint follows it as the design changes; name?; limits?: [[min, max] | null…]; quiet?: bool

Rigid Group

Command group: SOLID › ASSEMBLE

Read the components and joints guide.

Automation details

Command ID: joint.rigid_group

Parameters:

occurrences: [ids or names] (move together, as they are)

Drive Joints

Command group: SOLID › ASSEMBLE

Read the components and joints guide.

Automation details

Command ID: joint.drive

Parameters:

joint: id|name; value | values: [angles in deg or expressions, distances] (values not given keep theirs; a value driven drops the expression joint.create gave it; clamped to the limits; the other joints of a closed loop follow, and the motion stops where the loop can no longer close → stopped_by_loop); quiet?: bool (leave out dof and fixed) → values: [{name, value, unit: deg|mm, limits}] as joint.list gives them; moved: whether any occurrence moved; reason: why the joint can move nothing (suppressed, its origins lost, or its chain joined to nothing grounded → unconnected: the occurrence named)

Command group: SOLID › ASSEMBLE

Read the components and joints guide.

Automation details

Command ID: joint.motion_link

Parameters:

a, b: joints; ratio (b = ratio · a + offset): b's units per a's (mm per deg for an angle driving a distance); offset?: in b's units (deg for an angle, mm for a distance, or an expression); ia?, ib?: value indices (default 0)

Gear

Command group: SOLID › ASSEMBLE

Read the components and joints guide.

Automation details

Command ID: joint.gear

Parameters:

a, b: joints that turn (revolute), b driven by a; ra, rb: the gears' pitch radii (or tooth counts): mm, an expression, or {circle: [x,y,z], occurrence?}: the round face there, its radius (read again whenever the design changes, so the ratio follows edits); internal?: bool (one is a ring gear: both turn the same way; by default b turns the other way); reverse?: bool; link?: index (replace that motion link) → link, ratio (b's degrees per a's); b keeps where it is, also when the link replaces another (at the current pose)

Rack and Pinion

Command group: SOLID › ASSEMBLE

Read the components and joints guide.

Automation details

Command ID: joint.rack_pinion

Parameters:

a, b: a joint that turns (revolute: the pinion) and one that slides (slider: the rack), in either order, b driven by a; radius: the pinion's pitch radius (mm, an expression, or {circle: [x,y,z], occurrence?}): the rack travels radius × the turn in radians; reverse?: bool; link?: index (replace that motion link) → link, ratio (mm per degree, or degrees per mm); b keeps where it is, also when the link replaces another (at the current pose)

Screw

Command group: SOLID › ASSEMBLE

Read the components and joints guide.

Automation details

Command ID: joint.screw

Parameters:

joint: a cylindrical joint (its turn drives its travel) | a, b: a joint that turns and one that slides, b driven by a; pitch: travel per turn (mm or an expression); reverse?: bool (a left-hand thread); link?: index (replace that motion link) → link, ratio (mm per degree, or degrees per mm); b keeps where it is, also when the link replaces another (at the current pose)

Cam

Command group: SOLID › ASSEMBLE

Read the components and joints guide.

Automation details

Command ID: joint.cam

Parameters:

a: the cam's joint (revolute); b: the follower's joint, a slider (a translating follower) or a revolute (an oscillating one),          b driven by a; profile: {sketch: id|name, index?: the profile (default: the largest)} | {edges: [[x,y,z]…] (points on edges of          the cam's bodies forming one closed loop, world), occurrence?}: the cam's outline, in a plane square to its axis, read again          whenever the design changes; follower?: knife|roller|flat (default knife; flat: a face square to a slider's line); radius?: the          roller's radius (mm, an expression or {circle: [x,y,z], occurrence?}: the roller's round face, which is its tip too); tip?: a          joint origin where the follower touches: its knife's point or its roller's centre, such as {circle: [x,y,z]} on the roller          (needed for an oscillating follower; a translating one's line runs through it, by default along its slider's axis); flip?: bool (ride the cam from the other side          than the one the follower is on now); link?: index (replace that motion link) → link, lift: {min, max, rise, unit} (b's travel          over a turn of the cam), reverse (the side it rides from), follower_offset (mm: how far a translating follower's line passes          from the cam's axis); b keeps where it is, also when the link replaces another (at the current pose)

Enable Contact Sets

Command group: SOLID › ASSEMBLE

Read the solid features guide.

Automation details

Command ID: contact.enable_sets

Parameters:

enabled?: bool (default true) — driving joints and motion studies stop where bodies in one contact set would pass through each other

Enable All Contact

Command group: SOLID › ASSEMBLE

Read the solid features guide.

Automation details

Command ID: contact.enable_all

Parameters:

every occurrence takes part in contact (one set of all)

Disable Contact

Command group: SOLID › ASSEMBLE

Read the solid features guide.

Automation details

Command ID: contact.disable_all

Parameters:

contact off

New Contact Set

Command group: SOLID › ASSEMBLE

Read the solid features guide.

Automation details

Command ID: contact.create

Parameters:

occurrences: [ids or names] (two or more); name?

Motion Study

Command group: SOLID › ASSEMBLE

Read the components and joints guide.

Automation details

Command ID: motion.study

Parameters:

name?; study? (edit an existing one); steps? (timeline length, default 100); keys: [{joint, index?, points: [[step, value], …]}] (values: degrees for angles, mm for distances, or expressions)

Motion Trace

Command group: SOLID › ASSEMBLE

Read the components and joints guide.

Automation details

Command ID: motion.trace

Parameters:

occurrence: id|name, or an occurrence path [ids] (an instance inside sub-assemblies); point: [x,y,z] world point on it, where it is placed now; study: id|name, or joint: id|name with from and to (degrees for angles, mm for distances, or expressions) and index? (which value, default 0); samples? (2…500, default the study's steps + 1, or 100) - the point's path as the study plays or the joint is driven, closed loops following → points: [[x,y,z]…] world positions, samples (taken), stopped_at (the sample where the motion stopped short; the trace ends there), stopped_by_loop, stopped_by_contact (the design is not changed)

Exploded View

Command group: SOLID › ASSEMBLE

Read the solid features guide.

Automation details

Command ID: explode.create

Parameters:

name?; scale? (automatic: each occurrence pushed away from the assembly's centre by scale × its offset, default 1); moves?: [{occurrence, translate: [x,y,z]}] (instead of automatic)

SOLID › POSITION

Capture Position

Command group: SOLID › POSITION

Read the components and joints guide.

Automation details

Command ID: component.capture_position

Parameters:

keeps pending occurrence moves

Revert Position

Command group: SOLID › POSITION

Read the components and joints guide.

Automation details

Command ID: component.revert_position

Parameters:

occurrences?: [ids] (default all); drops selected pending occurrence moves

SOLID › INSPECT

Interference

Command group: SOLID › INSPECT

Read the solid features guide.

Automation details

Command ID: inspect.interference

Parameters:

bodies?: [names] (default: all, in world placement); budget_s?: seconds (default 240, at most 86400: pairs not finished by then are listed in unchecked as "not checked: the time budget … ran out" and the call returns) → interferences: pairs that overlap with the overlap volume, area, bounding box and centre (a pin a hair off the axis of a hole of its size also has near_coaxial: {offset_mm, length_mm}, its volume the crescent the walls share); unchecked: [{a, b, reason}], the pairs that could not be checked, with the reason, and each mesh body (STL, 3MF or OBJ import: not intersected) as {a: name, b: null, reason: "mesh body: not checked"}, so count: 0 is not read as no overlap (checked counts the solid bodies). Bodies are pruned by bounding box first, then by their display meshes (pairs whose meshes stay apart by more than their chord tolerances, neither inside the other, are clear without a boolean), so any number of bodies is fine; the pairs left are intersected exactly, in parallel on desktop, the slowest first; at most 20000 pairs whose boxes overlap are intersected per call (truncated: true and skipped_pairs: n say when more were left out). Also: pairs_candidate (boxes overlap), pairs_cleared (by the meshes), pairs_intersected, pairs_not_checked, budget_exceeded, threads (worker threads; 0: on the calling thread), boolean_ms and tessellate_ms (kernel time summed over the pairs), slowest: [{a, b, ms, boolean_ms, tessellate_ms}] and ms

Bill of Materials

Command group: SOLID › INSPECT

Read the solid features guide.

Automation details

Command ID: assembly.bom

Parameters:

component?: id or name (default the design); levels?: flat (default: every part at any depth, counted through its subassemblies) | top (the component's direct children, subassemblies as one row each); group_by?: ["part_number"] (default; components without a part number get a row per definition) | ["definition"]; group_children?: true (a component with a part number is one row, the parts placed inside it listed under it as children: [{item, part_number, description, revision, each, count, definition}], not as rows of their own); path?: write a .csv or .json file (children as items 1.1, 1.2…); format?: csv|json (default from the path) → rows: [{item, part_number, description, revision, count, definition, components, properties, children?}] sorted by part number, total_occurrences (children included)

Enable Component Colors

Command group: SOLID › INSPECT

Read the solid features guide.

Automation details

Command ID: inspect.colored_components

Parameters:

enabled?: bool (omitted: toggle); temporary component colours, without changing appearances

Measure

Command group: SOLID › INSPECT

Default keyboard shortcut: I

Read the solid features guide.

Automation details

Command ID: inspect.measure

Parameters:

bodies?: [names] (default all) → closed per body; volume_mm3, center_of_mass, density_g_cm3 and mass_g only for closed, consistently oriented bodies; area, bbox and counts for all; total.open_bodies_skipped counts bodies excluded from volume/mass totals; or items: [1-2 selections] (face/edge: type, body, point; index optional) → length/area/volume; diameter, radius, circumference or arc_length/angle_deg of circles, arcs and cylinders; slot sizes; min (distance_mm, from, to), max, center_distance (centre to centre, or from an axis) and angle

Section Analysis

Command group: SOLID › INSPECT

Read the solid features guide.

Automation details

Command ID: inspect.section

Parameters:

plane: XY|XZ|YZ | construction plane name or id | {origin, normal}; offset?: expr along the plane's normal (XY: +Z, XZ: +Y, YZ: +X); at?: expr, the cut's world coordinate on the named plane's axis (XY: Z, XZ: Y, YZ: X), instead of offset; flip?: bool; hatch?: bool (hatch the cut faces, in each body's colour; default true); or clear: true. Returns the cut's origin and normal, and for a named plane its axis and at

SOLID › CONFIGURE

Configure

Command group: SOLID › CONFIGURE

Read the parameters and expressions guide.

Automation details

Command ID: config.configure

Parameters:

params?: [parameter names]; features?: [feature names]; materials?: [body names]; appearances?: [body names] (columns to add; with no rows yet, a "Default" row takes the current values)

Display Configuration Table

Command group: SOLID › CONFIGURE

Read the parameters and expressions guide.

Automation details

Command ID: config.table

Parameters:

→ columns (param:<name> or suppress:<feature>), rows, the active row and whether the design still matches it

SOLID › INSERT

Insert Fastener

Command group: SOLID › INSERT

Read the solid features guide.

Automation details

Command ID: parts.fastener

Parameters:

the Insert Part dialog's command (same as parts.insert): family, size, length?, at?|point?+direction?, name?

Insert STEP

Command group: SOLID › INSERT

Read the import and export guide.

Automation details

Command ID: file.insert_step

Parameters:

path: STEP, IGES, FreeCAD .FCStd or Rhino .3dm file (its bodies join the design as an Import base feature in a new component named after the file, placed in the active component; an assembly's products become nested components, a repeated part one component with an occurrence per placement, all held as one rigid group until component.unlock → component, component_name, occurrence, subcomponents?, rigid_joints?); name? (the feature's and the component's); up?: z|y (default z: the file's axes are kept; y: the file has Y up, so the import's component is turned a quarter turn about X, Y becoming Z → stand_up: its occurrence); names?: auto|solid|product|instance (default auto: keep meaningful solid names, replace placeholders with the nearest named product, else instance; solid: the solid's own name; product: the part's name; instance: the occurrence's name, else the product's); matrix?: [12 or 16 numbers] (where the new component's occurrence sits in the active component, after `up`: a rigid row-major 3x4 rotation-and-translation or 4x4 matrix, flat or as rows, as occurrence.move takes it; a scale, shear or mirror is refused before the file is read); tolerance? (see occurrence.move)

Insert Mesh

Command group: SOLID › INSERT

Read the import and export guide.

Automation details

Command ID: file.insert_mesh

Parameters:

path: .3mf, .stl, .obj, .glb or .gltf file (its meshes join the design as mesh bodies in a new component named after the file → component, component_name, occurrence; a glTF file's node tree becomes nested components held as one rigid group until component.unlock, a mesh placed again another occurrence, its materials the bodies' appearances, and its metres millimetres); name?; up?: z|y for a glTF file (default y: glTF has Y up, so the import's component is turned a quarter turn about X, Y becoming Z → stand_up: its occurrence; z: the file's axes are kept)

SKETCH › FINISH SKETCH

Finish Sketch

Command group: SKETCH › FINISH SKETCH

Read the sketching and constraints guide.

Automation details

Command ID: sketch.finish

No parameter description is provided by the command registry.

Cancel Sketch

Command group: SKETCH › FINISH SKETCH

Read the sketching and constraints guide.

Automation details

Command ID: sketch.cancel

Parameters:

Leaves the sketch without keeping what changed since it was created or opened for editing: the design goes back to how it was then (a new sketch is removed), as one step that Undo brings back. Refused when the undo history no longer leads back to that point (use Undo instead)

Finish with AutoConstrain

Command group: SKETCH › FINISH SKETCH

Read the sketching and constraints guide.

Automation details

Command ID: sketch.finish_auto_constrain

Parameters:

like AutoConstrain, then Finish Sketch

SKETCH › CREATE

Line

Command group: SKETCH › CREATE

Default keyboard shortcut: L

Read the sketching and constraints guide.

Automation details

Command ID: sketch.line

Parameters:

points: [[x,y] | "l1.end" | {at, ref}…] (x and y each a number or an expression over the design's parameters, "W / 2": such a point is fixed where it comes to and follows the parameters; likewise wherever a point argument also takes a point id), closed?: bool, construction?: bool, ids?: [..], infer?: bool (add horizontal/vertical); connect?: bool (default true: a new point landing exactly on an existing point, the origin too, is made coincident with it). Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

2-Point Rectangle

Command group: SKETCH › CREATE

Default keyboard shortcut: R

Read the sketching and constraints guide.

Automation details

Command ID: sketch.rectangle.two_point

Parameters:

p0, p1: opposite corners [x,y]; construction?. Returns sides {bottom, right, top, left} (line ids) and corners {bottom_left, bottom_right, top_right, top_left} (point ids); connect?: bool (default true: a new point landing exactly on an existing point, the origin too, is made coincident with it). Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

3-Point Rectangle

Command group: SKETCH › CREATE

Read the sketching and constraints guide.

Automation details

Command ID: sketch.rectangle.three_point

Parameters:

p0, p1: first edge; p2: point on the opposite edge; construction?: bool; connect?: bool (default true: a new point landing exactly on an existing point, the origin too, is made coincident with it). Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

Rounded Rectangle

Command group: SKETCH › CREATE

Read the sketching and constraints guide.

Automation details

Command ID: sketch.rectangle.rounded

Parameters:

p0, p1: opposite corners [x,y]; radius: expr (the corner radius, less than half the shorter side); construction?. A 2-point rectangle whose four corners are filleted alike: one radius dimension (`param`), the other arcs equal to it. Returns sides {bottom, right, top, left} (line ids) and arcs (the corner arcs: bottom-left, bottom-right, top-right, top-left); connect?: bool (default true: a new point landing exactly on an existing point, the origin too, is made coincident with it). Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

Center Rectangle

Command group: SKETCH › CREATE

Read the sketching and constraints guide.

Automation details

Command ID: sketch.rectangle.center

Parameters:

center, corner; construction?: bool. Returns sides {bottom, right, top, left} (line ids) and corners {bottom_left, bottom_right, top_right, top_left} (point ids); connect?: bool (default true: a new point landing exactly on an existing point, the origin too, is made coincident with it). Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

Center Diameter Circle

Command group: SKETCH › CREATE

Default keyboard shortcut: C

Read the sketching and constraints guide.

Automation details

Command ID: sketch.circle.center

Parameters:

center: [x,y] or point ref, radius | diameter: number; through?: point ref (a point the circle passes through, kept on it: where the tool's second click snapped); construction?: bool; connect?: bool (default true: a new point landing exactly on an existing point, the origin too, is made coincident with it). Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

2-Point Circle

Command group: SKETCH › CREATE

Read the sketching and constraints guide.

Automation details

Command ID: sketch.circle.two_point

Parameters:

p0, p1: diameter ends; construction?: bool; connect?: bool (default true: a new point landing exactly on an existing point, the origin too, is made coincident with it). Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

3-Point Circle

Command group: SKETCH › CREATE

Read the sketching and constraints guide.

Automation details

Command ID: sketch.circle.three_point

Parameters:

p0, p1, p2; construction?: bool; connect?: bool (default true: a new point landing exactly on an existing point, the origin too, is made coincident with it). Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

3-Point Arc

Command group: SKETCH › CREATE

Read the sketching and constraints guide.

Automation details

Command ID: sketch.arc.three_point

Parameters:

start, end, through: [x,y] or point ref (a referenced through point stays on the arc); construction?: bool; connect?: bool (default true: a new point landing exactly on an existing point, the origin too, is made coincident with it). Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

Center Point Arc

Command group: SKETCH › CREATE

Read the sketching and constraints guide.

Automation details

Command ID: sketch.arc.center_point

Parameters:

center, start, end (counter-clockwise from start) | center, start, sweep: signed degrees; construction?: bool; connect?: bool (default true: a new point landing exactly on an existing point, the origin too, is made coincident with it). Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

Inscribed Polygon

Command group: SKETCH › CREATE

Read the sketching and constraints guide.

Automation details

Command ID: sketch.polygon.inscribed

Parameters:

center, radius (to vertices), sides, angle?: deg; connect?: bool (default true: a new point landing exactly on an existing point, the origin too, is made coincident with it). Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

Circumscribed Polygon

Command group: SKETCH › CREATE

Read the sketching and constraints guide.

Automation details

Command ID: sketch.polygon.circumscribed

Parameters:

center, radius (to edge midpoints), sides, angle?: deg; connect?: bool (default true: a new point landing exactly on an existing point, the origin too, is made coincident with it). Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

Edge Polygon

Command group: SKETCH › CREATE

Read the sketching and constraints guide.

Automation details

Command ID: sketch.polygon.edge

Parameters:

p0, p1: one edge, sides; connect?: bool (default true: a new point landing exactly on an existing point, the origin too, is made coincident with it). Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

Center to Center Slot

Command group: SKETCH › CREATE

Read the sketching and constraints guide.

Automation details

Command ID: sketch.slot.center_to_center

Parameters:

p0, p1: arc centres, width; connect?: bool (default true: a new point landing exactly on an existing point, the origin too, is made coincident with it). Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

Overall Slot

Command group: SKETCH › CREATE

Read the sketching and constraints guide.

Automation details

Command ID: sketch.slot.overall

Parameters:

p0, p1: overall ends, width; connect?: bool (default true: a new point landing exactly on an existing point, the origin too, is made coincident with it). Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

Point

Command group: SKETCH › CREATE

Read the sketching and constraints guide.

Automation details

Command ID: sketch.point

Parameters:

point: [x,y] (each a number or an expression over the design's parameters: the point is then fixed where it comes to and follows them) or a snap: "mid:<line>" (held at the line's midpoint), "on:<curve>:x,y" (on the curve near x,y), {vertex: [x,y,z]} or {on_edge: [x,y,z]} of the model; id?; connect?: bool (default true: a new point landing exactly on an existing point, the origin too, is made coincident with it). Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

Sketch Dimension

Command group: SKETCH › CREATE

Default keyboard shortcut: D

Read the sketching and constraints guide.

Automation details

Command ID: sketch.dimension

Parameters:

entities: [refs] (a line midpoint is "mid:line_id"), type?: auto|distance|horizontal|distance_x|vertical|distance_y|length|radius|diameter|angle, value?: number or expression (default: current; a bare number is in the design's units, e.g. 2 means 2 in in an inch design; give a unit such as "50 mm" to override), or `name = expression` (e.g. "width = 40"; also `#name = expression`), which adds the user parameter `name` with that expression and dimensions with `name` (refused when the name is taken or reserved; the reply's `defined` names it); text_at?: [x, y]. Two points or a line off the axes: with auto, text_at across from them is the distance between them, above or below them horizontal, beside them vertical. Two midpoints: placing text above or below their bounding box measures horizontally, beside it vertically. Two lines: the angle between them (acute, or 180° − it when the value is nearer that) unless text_at picks a sector. A line and a circle or arc: the distance from the line to its edge (the gap, or how far the edge reaches past a line that cuts it; 0 is tangent); dimension the centre point for the distance to the centre. A point and a circle or arc: the distance from the point to its edge (or how far within it a point inside lies). Two circles or arcs: the gap between their edges (or how far they overlap when they cross, or the narrowest gap between them when one lies inside the other); dimension their centre points for the distance between centres. An arc and one of its end points: the arc's length (type arc_length does it from the arc alone). A dimension the sketch already determines is refused (naming what determines it); if_redundant?: "driven" places it as a driven (reference) dimension instead. scale_sketch?: bool (the dimension tool sends true): when this is the sketch's first length dimension and nothing in the sketch fixes a size (no other driving length dimension, nothing fixed or projected), the whole sketch scales about its origin to the value instead of distorting. Returns measured in unit (mm or deg), and scaled: the factor when the sketch was scaled

Normal/Construction

Command group: SKETCH › CREATE

Default keyboard shortcut: X

Read the sketching and constraints guide.

Automation details

Command ID: sketch.construction

Parameters:

curves: [ids], value?: bool (default: construction unless all of them already are)

Midpoint Line

Command group: SKETCH › CREATE

Read the sketching and constraints guide.

Automation details

Command ID: sketch.line.midpoint

Parameters:

mid: [x,y], point ref or snap ("mid:<line>", "on:<curve>:x,y", model vertex/edge); end: [x,y]; construction?. Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

Tangent Arc

Command group: SKETCH › CREATE

Read the sketching and constraints guide.

Automation details

Command ID: sketch.arc.tangent

Parameters:

start: end point of a line or arc ("l1.end"), end: [x,y]; curve?: the curve to be tangent to (default: the one ending at start). Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

2-Tangent Circle

Command group: SKETCH › CREATE

Read the sketching and constraints guide.

Automation details

Command ID: sketch.circle.two_tangent

Parameters:

curves: [two lines/circles/arcs], radius | diameter: expr, near: [x,y] (which of the solutions). Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

3-Tangent Circle

Command group: SKETCH › CREATE

Read the sketching and constraints guide.

Automation details

Command ID: sketch.circle.three_tangent

Parameters:

curves: [three lines/circles/arcs], near: [x,y] (which of the solutions). Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

Center Point Slot

Command group: SKETCH › CREATE

Read the sketching and constraints guide.

Automation details

Command ID: sketch.slot.center_point

Parameters:

center: slot centre, end: one arc centre, width. Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

Three Point Arc Slot

Command group: SKETCH › CREATE

Read the sketching and constraints guide.

Automation details

Command ID: sketch.slot.arc_three_point

Parameters:

start, through, end: points on the centre arc, width. Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

Center Point Arc Slot

Command group: SKETCH › CREATE

Read the sketching and constraints guide.

Automation details

Command ID: sketch.slot.arc_center

Parameters:

center, start: centre arc start, end: direction of the centre arc end (counter-clockwise) or sweep: degrees (0 < sweep < 360), width; returns centre_arc. Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

Ellipse

Command group: SKETCH › CREATE

Read the sketching and constraints guide.

Automation details

Command ID: sketch.ellipse

Parameters:

center, major: end of the major axis [x,y], minor: a point the ellipse passes through on the minor side [x,y] | minor_radius. Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

Fit Point Spline

Command group: SKETCH › CREATE

Read the sketching and constraints guide.

Automation details

Command ID: sketch.spline.fit_point

Parameters:

points: [[x,y] or point refs…] (2…500): the spline passes through them, periodic?: boolean (default false); periodic cubic fit closes smoothly through at least 3 distinct samples. Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

Control Point Spline

Command group: SKETCH › CREATE

Read the sketching and constraints guide.

Automation details

Command ID: sketch.spline.control_point

Parameters:

points: control points (2…500), cubic. Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

Control Point Spline (Degree 5)

Command group: SKETCH › CREATE

Read the sketching and constraints guide.

Automation details

Command ID: sketch.spline.control_point_5

Parameters:

points: control points (2…500), degree 5. Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

Conic Curve

Command group: SKETCH › CREATE

Read the sketching and constraints guide.

Automation details

Command ID: sketch.conic

Parameters:

start, end, apex: [x,y] or point refs; rho?: 0…1 (default 0.5: parabola). Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

Centerline

Command group: SKETCH › CREATE

Read the sketching and constraints guide.

Automation details

Command ID: sketch.centerline

Parameters:

curves: [line ids], value?: bool (default toggles): centerline line type (not in profiles; an axis)

Text

Command group: SKETCH › CREATE

Read the sketching and constraints guide.

Automation details

Command ID: sketch.text

Parameters:

text: string (\n breaks lines), or text_expression: the words built from text parameters (parameters.add with unit text) and quoted texts joined by + ("Label + '-L'"): the text keeps it, its words follow the parameters (a parameter edit or a configuration row relabels it) and `exprs` returns it as `text`; at: baseline start [x,y], height?: capital height mm (default 5), angle?: deg; at's x and y, height and angle each take a number or an expression over the design's parameters as a string ("plate_width / 2", "label_size"): the text keeps the expression, follows the parameters, and returns it in `exprs`; an expression naming no parameter is the number it comes to, a bare number in one is in the design's units, font?: an installed font's family or full name, or a .ttf/.otf file path (~ and %VAR% expand; default: the built-in Liberation Sans), bold?, italic?: bool (an installed family's bold or italic face; italic without one is slanted), align?: left|center|right (the lines against `at`, or along the path), letter_spacing?: extra mm between letters, line_spacing?: times the font's line distance (default 1), path?: a curve id of the sketch the baseline follows ("": none; `at` and `angle` then do not place the text; the curve becomes construction, a guide the letters stand on), reverse?: bool (the other way along the path). Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

Sketch Constrainer

Command group: SKETCH › CREATE

Read the sketching and constraints guide.

Automation details

Command ID: sketch.constrainer

Parameters:

entities: [one or two sketch entity ids]: applies the constraint the geometry nearly has (horizontal/vertical, parallel, perpendicular, collinear, coincident, concentric, equal, tangent)

Project

Command group: SKETCH › CREATE

Default keyboard shortcut: P

Read the sketching and constraints guide.

Automation details

Command ID: sketch.project

Parameters:

refs: [{edge: [x,y,z], body?} | {face: [x,y,z], body?} (its edge loops) | {body: name} (silhouette) | {vertex: [x,y,z], body?} | {sketch, curve} | {sketch, point} | "origin" | {axis: X|Y|Z} | {plane: XY|XZ|YZ|name}]. Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

Intersect

Command group: SKETCH › CREATE

Read the sketching and constraints guide.

Automation details

Command ID: sketch.intersect

Parameters:

refs: [{body}, {face: [x,y,z], body?}, {edge: [x,y,z], body?}, {sketch, curve}]: section curves (or points) with the sketch plane, linked. Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

Include 3D Geometry

Command group: SKETCH › CREATE

Read the sketching and constraints guide.

Automation details

Command ID: sketch.include_3d

Parameters:

refs: like Project (edges, vertices, sketch curves and points); curves out of the sketch plane are flattened onto it. Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

Project To Surface

Command group: SKETCH › CREATE

Read the sketching and constraints guide.

Automation details

Command ID: sketch.project_to_surface

Parameters:

curves: [{sketch, curve}…] (curves of other sketches), face: [x,y,z] point on the target face, body?: projected along the active sketch's normal onto the face, as linked 3D curves. Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

Intersection Curve

Command group: SKETCH › CREATE

Read the sketching and constraints guide.

Automation details

Command ID: sketch.intersection_curve

Parameters:

a, b: {body} | {face: [x,y,z], body?}: where they meet, as linked 3D curves. Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

Spun Profile

Command group: SKETCH › CREATE

Read the sketching and constraints guide.

Automation details

Command ID: sketch.spun_profile

Parameters:

body: name, axis: a line of the active sketch (curve id) | X|Y|Z: the body's outline revolved about the axis, in the sketch plane. Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

Isoparametric Curve

Command group: SKETCH › CREATE

Read the sketching and constraints guide.

Automation details

Command ID: sketch.isoparametric_curve

Parameters:

face: [x,y,z] point on the face (the curve passes through it), body?, direction?: u|v|[x,y,z] (default u): linked 3D curve. Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

Fit Curves to Mesh Section

Command group: SKETCH › CREATE

Read the sketching and constraints guide.

Automation details

Command ID: sketch.fit_curves_to_section

Parameters:

body: name (a mesh or solid body): its section with the sketch plane, fitted with lines and arcs, as normal (unlinked) geometry. Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

SKETCH › CONSTRAINTS

Horizontal/Vertical

Command group: SKETCH › CONSTRAINTS

Read the sketching and constraints guide.

Automation details

Command ID: sketch.constraint.horizontal_vertical

Parameters:

line: id | points: [a, b] (point ids or {midpoint: line_id}; accepted midpoints reuse or create a point with a Midpoint constraint); mode?: horizontal|vertical

Coincident

Command group: SKETCH › CONSTRAINTS

Read the sketching and constraints guide.

Automation details

Command ID: sketch.constraint.coincident

Parameters:

a, b: points, a point and a curve or sketch axis (x / y: the sketch's own axes, unless a curve has that id; an axis becomes a linked construction line on it, reported in created), or two distinct lines (joins their closest endpoints), or two circles/arcs (the second lies on the first: concentric and equal, `constraints` lists both); any of them may be a model edge {edge: [x,y,z], body?} or vertex {vertex: [x,y,z], body?}, projected into the sketch first (reported in created)

Tangent

Command group: SKETCH › CONSTRAINTS

Read the sketching and constraints guide.

Automation details

Command ID: sketch.constraint.tangent

Parameters:

a, b: curves or sketch axes (x / y: the sketch's own axes, unless a curve has that id; an axis becomes a linked construction line on it, reported in created); any of them may be a model edge {edge: [x,y,z], body?} or vertex {vertex: [x,y,z], body?}, projected into the sketch first (reported in created)

Equal

Command group: SKETCH › CONSTRAINTS

Read the sketching and constraints guide.

Automation details

Command ID: sketch.constraint.equal

Parameters:

a, b: lines or circles/arcs; or curves: [2 to 200 lines or circles/arcs], each made equal to the first, in one step; any of them may be a model edge {edge: [x,y,z], body?} or vertex {vertex: [x,y,z], body?}, projected into the sketch first (reported in created)

Parallel

Command group: SKETCH › CONSTRAINTS

Read the sketching and constraints guide.

Automation details

Command ID: sketch.constraint.parallel

Parameters:

a, b: lines or sketch axes (x / y: the sketch's own axes, unless a curve has that id; an axis becomes a linked construction line on it, reported in created); any of them may be a model edge {edge: [x,y,z], body?} or vertex {vertex: [x,y,z], body?}, projected into the sketch first (reported in created)

Perpendicular

Command group: SKETCH › CONSTRAINTS

Read the sketching and constraints guide.

Automation details

Command ID: sketch.constraint.perpendicular

Parameters:

a, b: lines or sketch axes (x / y: the sketch's own axes, unless a curve has that id; an axis becomes a linked construction line on it, reported in created); any of them may be a model edge {edge: [x,y,z], body?} or vertex {vertex: [x,y,z], body?}, projected into the sketch first (reported in created)

Fix/UnFix

Command group: SKETCH › CONSTRAINTS

Read the sketching and constraints guide.

Automation details

Command ID: sketch.constraint.fix

Parameters:

entity: point or curve | entities: [points and curves]; fixed?: bool (default: fix them all unless all are fixed, then unfix)

MidPoint

Command group: SKETCH › CONSTRAINTS

Read the sketching and constraints guide.

Automation details

Command ID: sketch.constraint.midpoint

Parameters:

point, line | a, b in pick order: a point and a line (either way round), or two lines whose midpoints meet (the first stays, the second moves); any of them may be a model edge {edge: [x,y,z], body?} or vertex {vertex: [x,y,z], body?}, projected into the sketch first (reported in created)

Concentric

Command group: SKETCH › CONSTRAINTS

Read the sketching and constraints guide.

Automation details

Command ID: sketch.constraint.concentric

Parameters:

a, b: circles/arcs; any of them may be a model edge {edge: [x,y,z], body?} or vertex {vertex: [x,y,z], body?}, projected into the sketch first (reported in created)

Collinear

Command group: SKETCH › CONSTRAINTS

Read the sketching and constraints guide.

Automation details

Command ID: sketch.constraint.collinear

Parameters:

a, b: lines or sketch axes (x / y: the sketch's own axes, unless a curve has that id; an axis becomes a linked construction line on it, reported in created); any of them may be a model edge {edge: [x,y,z], body?} or vertex {vertex: [x,y,z], body?}, projected into the sketch first (reported in created)

Symmetry

Command group: SKETCH › CONSTRAINTS

Read the sketching and constraints guide.

Automation details

Command ID: sketch.constraint.symmetry

Parameters:

a, b: two points or two curves (lines mirror their ends, circles/arcs their centres); line: symmetry line id, or x / y for the sketch's own axes (a curve with that id wins; an axis becomes a linked construction line on it, reported in created); or point (or a point id as line, "origin" too): symmetric about that point, each pair joined by a construction line it is the midpoint of; any of them may be a model edge {edge: [x,y,z], body?} or vertex {vertex: [x,y,z], body?}, projected into the sketch first (reported in created)

Curvature

Command group: SKETCH › CONSTRAINTS

Read the sketching and constraints guide.

Automation details

Command ID: sketch.constraint.curvature

Parameters:

a, b: two curves sharing an end point (curvature continuous, G2)

Polygon

Command group: SKETCH › CONSTRAINTS

Read the sketching and constraints guide.

Automation details

Command ID: sketch.constraint.polygon

Parameters:

lines: [line ids] of a closed chain: equal sides with every corner on one circle (a regular polygon)

AutoConstrain

Command group: SKETCH › CONSTRAINTS

Read the sketching and constraints guide.

Automation details

Command ID: sketch.auto_constrain

Parameters:

tolerance?: mm (default 0.01), angle_tolerance?: deg (default 1), dimensions?: bool (default true): infer constraints, then dimension until fully constrained

AutoConstrain from datum

Command group: SKETCH › CONSTRAINTS

Read the sketching and constraints guide.

Automation details

Command ID: sketch.auto_constrain_from_datum

Parameters:

datum: point ref (default origin); like AutoConstrain with positions measured from the datum

SKETCH › MODIFY

Blend Curve

Command group: SKETCH › MODIFY

Read the sketching and constraints guide.

Automation details

Command ID: sketch.blend_curve

Parameters:

a, b: end points of two curves ("l1.end", "a2.start"), continuity?: g1|g2|g3|g4 (default g1: a tangent spline; g2…g4 match the reference curves' curvature, curvature rate and 4th derivative as well, as one Bézier of degree 5, 7 or 9). Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

Fillet

Command group: SKETCH › MODIFY

Read the sketching and constraints guide.

Automation details

Command ID: sketch.fillet

Parameters:

point: corner shared by two curves ("l1.end") | points: [corners] (all rounded alike: one radius, the rest equal) | a, b: two lines or arcs meeting at a corner; radius: expr. A corner that dimensions or constraints measure to stays as a virtual sharp corner on both curves' extensions (`virtual_corners`; the moved ones in `moved_to_virtual_corner`). Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

Equal Distance Chamfer

Command group: SKETCH › MODIFY

Read the sketching and constraints guide.

Automation details

Command ID: sketch.chamfer.equal_distance

Parameters:

point | a, b: a corner of two lines; distance. Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

Distance and Angle Chamfer

Command group: SKETCH › MODIFY

Read the sketching and constraints guide.

Automation details

Command ID: sketch.chamfer.distance_angle

Parameters:

point | a, b: a corner of two lines; distance: along a, angle: deg from a. Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

Two Distance Chamfer

Command group: SKETCH › MODIFY

Read the sketching and constraints guide.

Automation details

Command ID: sketch.chamfer.two_distance

Parameters:

point | a, b: a corner of two lines; distance: along a, distance2: along b. Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

Offset

Command group: SKETCH › MODIFY

Default keyboard shortcut: O

Read the sketching and constraints guide.

Automation details

Command ID: sketch.offset

Parameters:

curves: [ids], distance: number in mm or length expression (creates an editable dimension; positive = left of the chain, or toward `side`), side?: [x,y], chain?: bool (default true: the connected chain); direction?: one_side|symmetric (default one_side) or symmetric?: bool (the same distance each way; no `side`, whose job it takes over), distance2?: positive length expression (Two Sides: an independent distance the other way, as for `solid.extrude`). Each side is its own offset association, listed in `sides`; flip?: bool reverses the primary side; `param`/`param2` name the driving dimensions. Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

Trim

Command group: SKETCH › MODIFY

Default keyboard shortcut: T

Read the sketching and constraints guide.

Automation details

Command ID: sketch.trim

Parameters:

curve: id, at: [x,y] (the piece to remove: between the nearest intersections around it). Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

Extend

Command group: SKETCH › MODIFY

Read the sketching and constraints guide.

Automation details

Command ID: sketch.extend

Parameters:

curve: id, at: [x,y] near the end to extend (a line runs on to the nearest curve, or the previewed reach when nothing is in the way; an arc grows along its circle and closes into a whole circle when nothing stops it)

Break

Command group: SKETCH › MODIFY

Read the sketching and constraints guide.

Automation details

Command ID: sketch.break

Parameters:

curve: id, at: [x,y] (split at intersections) | points: [[x,y]…] (1…1000 positions projected onto the curve; duplicates are merged). Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

Sketch Scale

Command group: SKETCH › MODIFY

Read the sketching and constraints guide.

Automation details

Command ID: sketch.scale

Parameters:

entities: [curve/point ids], base: [x,y] or point ref, factor: number

Transform

Command group: SKETCH › MODIFY

Default keyboard shortcut: G

Read the sketching and constraints guide.

Automation details

Command ID: sketch.transform

Parameters:

entities: [curve/point ids], factor?: number (scale), angle?: degrees (turn), center?: [x,y] or point ref (what scales and turns stay put; default [0,0]), translate?: [dx,dy] (applied last); scales, turns and moves in one step

Move/Copy Sketch Entities

Command group: SKETCH › MODIFY

Read the sketching and constraints guide.

Automation details

Command ID: sketch.move

Parameters:

entities: [ids], translate?: [dx,dy], angle?: deg, center?: [x,y], copy?: bool, rotate_constraints?: bool (default true; false keeps constraints unchanged); a rotation turns the constraints tied to the sketch axes when all their geometry moves (horizontal and vertical relations and dimensions swap at odd quarter turns and stay at half turns, line angles turn with the line) and removes the horizontal and vertical ones that cannot hold at other angles; picking a text outline or linked point transforms its whole text source once, and copies remain editable text. Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

SKETCH › INSERT

Insert DXF

Command group: SKETCH › INSERT

Read the sketching and constraints guide.

Automation details

Command ID: sketch.insert_dxf

Parameters:

path | text: ASCII DXF (blocks expanded); at?: [x,y] offset, scale? | width? | height?: mm, the drawing's size before rotation, aspect kept (win over scale); angle?: degrees, about the drawing's origin (or its centre); align?: "origin" (default: `at` is where the file's origin goes) | "center" (`at` is where the drawing's middle goes and it turns and scales about it); tolerance?: mm within which ends join (default 0.0001); plane?: (when no sketch is active, a new sketch on it; default XY). Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

Insert SVG

Command group: SKETCH › INSERT

Read the sketching and constraints guide.

Automation details

Command ID: sketch.insert_svg

Parameters:

path | text: SVG; at?: [x,y] offset, scale? | width? | height?: mm, the drawing's size before rotation, aspect kept (win over scale); angle?: degrees, about the drawing's origin (or its centre); align?: "origin" (default: `at` is where the file's origin goes) | "center" (`at` is where the drawing's middle goes and it turns and scales about it); tolerance?: mm within which ends join (default 0.0001); plane?: (when no sketch is active, a new sketch on it; default XY). Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

Canvas

Command group: SKETCH › INSERT

Read the sketching and constraints guide.

Automation details

Command ID: canvas.insert

Parameters:

path | data (base64 PNG or JPEG); plane?: XY|XZ|YZ|{face: [x,y,z]}|… (default XY); center?: [x,y] on the plane, or at?: [x,y,z]; width?: mm (default 100); angle?: deg; opacity?: 0…1 (default 0.5); flip?; name?

Decal

Command group: SKETCH › INSERT

Read the sketching and constraints guide.

Automation details

Command ID: canvas.decal

Parameters:

path | data; face: [x,y,z] on a planar face (the image is centred there); width?: mm; angle?: deg; opacity?: (default 1)

Edit Canvas

Command group: SKETCH › INSERT

Read the sketching and constraints guide.

Automation details

Command ID: canvas.edit

Parameters:

canvas: id or name; center?, width?, angle?: deg, opacity?, flip?, visible?, name?

SKETCH › INSPECT

Curvature Comb Analysis

Command group: SKETCH › INSPECT

Read the sketching and constraints guide.

Automation details

Command ID: inspect.curvature_comb

Parameters:

curves?: [sketch curve ids] (sketch?: id|name, default active) | edges?: [[x,y,z] points on body edges] | faces?: [[x,y,z] points on faces] with count?: isoparametric curves each way (default 4; combs along the face's iso grid); density?: teeth per curve (default 40), scale?: comb length per unit curvature (default auto)

Minimum Radius Analysis

Command group: SKETCH › INSPECT

Read the sketching and constraints guide.

Automation details

Command ID: inspect.minimum_radius

Parameters:

curves?: [sketch curve ids] (sketch?) | edges?: [[x,y,z]…] | faces?: [[x,y,z]…] (default: every face of every body); the smallest radius of curvature of each and where it is

Isocurve Analysis

Command group: SKETCH › INSPECT

Read the sketching and constraints guide.

Automation details

Command ID: inspect.isocurve

Parameters:

faces: [[x,y,z]…] points on faces; count?: curves each way (default 8): the faces' isoparametric curves

Center of Mass

Command group: SKETCH › INSPECT

Read the sketching and constraints guide.

Automation details

Command ID: inspect.center_of_mass

Parameters:

bodies?: [names] (default all): the centre of mass (uniform density) of each and of all together

Zebra Analysis

Command group: SKETCH › INSPECT

Read the sketching and constraints guide.

Automation details

Command ID: inspect.zebra

Parameters:

stripes?: number across the view (default 12); clear?: true turns the analysis off

Draft Analysis

Command group: SKETCH › INSPECT

Read the sketching and constraints guide.

Automation details

Command ID: inspect.draft

Parameters:

pull?: [x,y,z] direction (default Z); angle?: degrees (default 1); clear?: true turns the analysis off

Environment Map Analysis

Command group: SKETCH › INSPECT

Read the sketching and constraints guide.

Automation details

Command ID: inspect.environment_map

Parameters:

clear?: true turns the analysis off

Accessibility Analysis

Command group: SKETCH › INSPECT

Read the sketching and constraints guide.

Automation details

Command ID: inspect.accessibility

Parameters:

direction?: [x,y,z] the tool comes from (default Z, from above); clear?: true turns the analysis off

Curvature Map Analysis

Command group: SKETCH › INSPECT

Read the sketching and constraints guide.

Automation details

Command ID: inspect.curvature_map

Parameters:

radius?: mm shown red (default: a tenth of the model's size); clear?: true turns the analysis off

SKETCH › PATTERN

Mirror

Command group: SKETCH › PATTERN

Read the sketching and constraints guide.

Automation details

Command ID: sketch.mirror

Parameters:

entities: [curve/point ids], line: mirror line id (symmetry constraints are added). Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

Circular Pattern

Command group: SKETCH › PATTERN

Read the sketching and constraints guide.

Automation details

Command ID: sketch.pattern.circular

Parameters:

entities: [ids], center: [x,y] or point ref, count: 2…500 (number or unitless expression, retained through edits), angle?: total deg, number or expression (default 360); alignment?: left|center|right (default right); reversed?: bool (default false). Quantity includes the original. Center balances copies around it; reversed flips the direction and extra side for even totals. Partial arcs span angle with angle/(count-1) spacing; full turns use angle/count. Adds associative pattern constraints; a coordinate center creates a constrainable point. Returns pattern and center ids. pattern?: existing pattern id to edit (omitted values retained; surviving instance ids retained). Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

Rectangular Pattern

Command group: SKETCH › PATTERN

Read the sketching and constraints guide.

Automation details

Command ID: sketch.pattern.rectangular

Parameters:

entities: [ids], count, spacing; count2?, spacing2?; counts: positive integer numbers or expressions, at most 500 instances total; spacings: length numbers or expressions; direction?, direction2?: sketch line ids (live references); dir?, dir2?: [x,y] vectors (defaults: sketch x, perpendicular to direction 1); alignment?, alignment2?: left|center|right (default right). Signed spacings reverse each direction. reversed?, reversed2?: bool (default false); reverses placement and the extra side of even centered totals. Quantities include the original. Adds associative pattern constraints. Returns pattern id. pattern?: existing pattern id to edit (omitted values retained; surviving instance ids retained). Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

SURFACE › INSPECT

Continuity Analysis

Command group: SURFACE › INSPECT

Read the solid features guide.

Automation details

Command ID: inspect.continuity

Parameters:

body?: name (default: the visible bodies); edges?: [x,y,z] points or {"index": i} (default: every edge of the body; a pick must match one body); samples?: 3…257 stations along each edge, ends included (default 33); gap_tolerance_mm? (default 0.001), angle_tolerance_deg? (default 1), curvature_tolerance_per_mm? (default 0.01); add?: true keeps the seams already shaded and adds these (measuring an edge again replaces it); clear?: true turns the analysis off. → each edge's worst gap (G0), normal angle (G1) and curvature jump (G2) as {value, at: [x,y,z], edge_fraction}, its verdict (smooth, curvature_jump, sharp or gap) and a summary; the seams are shaded in the viewport

SURFACE › CREATE

Boundary Surface

Command group: SURFACE › CREATE

Read the solid features guide.

Automation details

Command ID: surface.boundary

Parameters:

Either a loop of one sketch's curves — sketch?: id|name (default: the sketch being edited); curves: [2 to 4 sketch curve ids in loop order] (each one ends where the next begins and the last where the first does; two: the patch spans between them and leaves each boundary along the tangent across it; three or four: the flat patch of the loop, three collapsing the side opposite the first curve to the corner there); continuity?: g0|g1|g2|g3 | [one per curve] (default g1: how much of the surface across each boundary the patch repeats — a sketch curve's own plane, so g1 and up hold exactly and g0 lets the middle bow); crown?: number -0.9…3 (default 0: how full the middle is, without touching a boundary; two curves only); samples?: 8…512 stations per boundary (default 25) — or a curve network — u: [curve] (two or more one way: the surface lofts through them), v?: [curve] (crossing every u-curve once: two each way give a Coons patch, more a Gordon surface through every curve; a curve that misses another by more than 0.01 mm is refused, naming the pair), each curve "id" (a curve of `sketch`) | {sketch?: id|name, curves: [ids meeting end to end]} (planar or 3D sketch curves) | {body: name, edges: [[x,y,z]] (points on a chain of its edges), continuity?: g0|g1|g2 (default g0; g1 the surface leaves tangent to the face beside a surface's open edges, g2 with its curvature too; on curves of one direction only)} | {point: [x,y,z]} (a side collapsed to a point: a three-sided patch); operation?: new|join (default new; join sews the surface into the body of its first edge curve, a solid when it closes the gap). name?, body_name? (a surface body)

Patch

Command group: SURFACE › CREATE

Read the solid features guide.

Automation details

Command ID: surface.patch

Parameters:

sketch?: id|name and profiles? (planar patches of sketch regions) | edges: [[x,y,z]] (points on a closed loop of a body's edges: one face on them, planar when the loop is, else a smooth B-spline surface) and body?; continuity?: g0|g1|g2 (edges only, default g0: how the patch meets the faces beside the loop — g1 their tangent planes, g2 also their curvature across the edges) or [{edge: [x,y,z], g: g0|g1|g2}] (those edges so, the rest g0) or {all, edges}; points?: [[x,y,z]] (edges only, up to 64: points the patch passes through); crown?: number −0.9…3 (default 0: only a fitted patch, whose middle becomes fuller by this many times the loop's size — the bump vanishes on the loop, so the face still meets the picked edges and the continuity across them; a loop that is planar and g0 is the exact plane whatever the crown; with points, crown needs a g1 or g2 edge); name?, body_name?

Thicken

Command group: SURFACE › CREATE

Read the solid features guide.

Automation details

Command ID: surface.thicken

Parameters:

bodies: [surface names]; thickness: expr (negative: against the normal); symmetric?: bool; operation?: new|join|cut|intersect; targets?

Surface Extrude

Command group: SURFACE › CREATE

Read the solid features guide.

Automation details

Command ID: surface.extrude

Parameters:

sketch?: id|name; curves?: [curve ids] (open or closed chains of curves meeting end to end) and/or profiles? (their boundaries; the default when no curves are given); distance: expr; direction?: positive|negative|symmetric; distance2?: expr; start_offset?: expr; name?, body_name? (a surface body: walls only, no caps)

Surface Revolve

Command group: SURFACE › CREATE

Read the solid features guide.

Automation details

Command ID: surface.revolve

Parameters:

sketch?: id|name; curves?: [curve ids] and/or profiles? (as surface.extrude); axis: sketch line id|x|y|X|Y|Z|{type: world, axis: X|Y|Z}|construction axis name|{origin, dir} | {edge|face: [x,y,z]} (a straight or circular edge, or a cylinder, cone or torus face: about its axis, followed as the model changes); angle?: expr (default 360 deg); angle2?: expr (the other side); symmetric?: bool; name?, body_name? (a surface body, no caps; a solid where a full turn closes it)

Surface Sweep

Command group: SURFACE › CREATE

Read the solid features guide.

Automation details

Command ID: surface.sweep

Parameters:

sketch?: id|name; curves?: [curve ids] and/or profiles? (as surface.extrude); path_sketch: sketch; path: [curve ids in order] (a path with corners, or 3D curves, gives ruled walls mitred at the corners); orientation?, twist?, scale?, rails?, rail_fit? (as solid.sweep); name?, body_name? (a surface body, no caps)

Surface Loft

Command group: SURFACE › CREATE

Read the solid features guide.

Automation details

Command ID: surface.loft

Parameters:

sections: [{sketch, curves?: [curve ids], profiles?} | {body, edges: [[x,y,z]]}] (2…50 in order; each one chain: a profile without holes, or curves meeting end to end; all open or all closed; a body edge chain takes the face the chain bounds as the surface the end repeats); continuity?: [g0|g1|g2|g3, g0|g1|g2|g3] (each end, default g0: how much of the surface at the first and last section the loft repeats — the tangent plane, the curvature, or how that curvature changes); crown?: [number, number] (default 0: how full each end leaves, -0.9 flattest to 3 fullest); rails?, rail_fit? (as solid.loft; sketch sections only, both ends g0); name?, body_name? (a surface body: ruled between two sections, smooth through three or more; no caps)

Offset Surface

Command group: SURFACE › CREATE

Read the solid features guide.

Automation details

Command ID: surface.offset

Parameters:

faces: [[x,y,z]] (points on the faces); body?; distance: expr (signed, along the faces' normals; 0 copies the faces); chain?: bool (each pick's whole smooth chain of faces); tolerance?: expr (how far a fitted face may stray, default 0.01 mm). Planes and cylinders move exactly; other faces are fitted. A new surface body (a solid where its faces close)

Ruled Surface

Command group: SURFACE › CREATE

Read the solid features guide.

Automation details

Command ID: surface.ruled

Parameters:

body; edges: [[x,y,z]] (points on a chain of its edges, open or closed); distance: expr (how far the strip reaches); mode?: normal|tangent|angle|direction (default normal: along the normal of the face beside each edge; tangent: continuing it); angle?: expr (angle mode: from `direction`, else from the face's normal, turned away from the face; 90 deg from the normal is tangent); direction?: [x,y,z] (direction mode: the rulings; angle mode: the reference, e.g. a pull direction for a draft); face?: [x,y,z] (a point on the face the directions come from; default: the face beside the most picked edges); flip?: bool (the other side); corners?: mitre|round (sharp corners of the chain; inside corners are always cut back). Lines and arcs give exact planes, cylinders and cones, other edges a fitted ruled B-spline. A new surface body

Blend Surface

Command group: SURFACE › CREATE

Read the solid features guide.

Automation details

Command ID: surface.blend

Parameters:

from, to: {body, edges: [[x,y,z]]} (points on the edges of one chain of each body: two picks on the same edge is that one edge, more chain up); continuity?: [g0|g1|g2|g3, g0|g1|g2|g3] (each end, default g1: how much of the surface at the picked edges the blend repeats — the tangent plane, the curvature, or how that curvature changes); bulge?: [number, number] (default 0: how full each end leaves, -0.9 flattest to 3 fullest); align?: [[x,y,z], [x,y,z]] (a point each end leaves towards, when the faces at the picks do not say); seam?: [[x,y,z], [x,y,z]] (a point on each chain its stations start from: two closed chains otherwise pair the way that keeps the blend from twisting; an open chain starts at the end nearer its point; a closed chain blends only to a closed chain); stitch?: bool (sew the blend onto its two bodies where the boundaries meet, replacing them); name?, body_name?

SURFACE › MODIFY

Stitch

Command group: SURFACE › MODIFY

Read the solid features guide.

Automation details

Command ID: surface.stitch

Parameters:

bodies: [names] (surfaces sewn into the first; a solid when they close); tolerance?: expr (default: tight)

Extend

Command group: SURFACE › MODIFY

Read the solid features guide.

Automation details

Command ID: surface.extend

Parameters:

body: surface name; edges: [[x,y,z]] (points on boundary edges to push out); distance: expr (unless up_to); mode?: natural (the surface itself continued: exact for planes and surfaces of revolution, a B-spline's end spans continued; the default) | tangent (a ruled run-off face along each edge, G1) | curvature (a run-off face keeping the surface's curvature across the edge, G2); up_to?: plane (XY|XZ|YZ|plane name|{origin, normal}) | {body, point} (a face, its surface extended) | "bounds" (natural: back to the surface's own bounds, undoing a trim); neighbours?: bool (default true: the edges next to an extended edge are lengthened to meet it; false: the extension's sides run square to the edge)

Trim

Command group: SURFACE › MODIFY

Read the solid features guide.

Automation details

Command ID: surface.trim

Parameters:

body: surface name; plane: XY|XZ|YZ|plane name|{origin, normal} or tool: {body, point} (a face, its surface extended) or curves: {sketch, curves?: [curve ids] (chains of curves meeting end to end; default every curve), direction?: normal|[x,y,z] (swept onto the surface along the sketch's normal, the default, or this direction)}; keep: [x,y,z] (a point on the side to keep) or [[x,y,z], ...] (points on the regions to keep: the pieces that hang together once cut). Mutual trim: with: another surface (one face each; leave out plane, tool and curves), keep_with: [x,y,z] or [[x,y,z], ...] (what to keep of it); each is cut where the other's surface (extended) meets it; extend?: bool (a surface that stops short of the other is extended to meet it); stitch?: bool (the kept pieces sewn into `body`; `with` is then gone)

Untrim

Command group: SURFACE › MODIFY

Read the solid features guide.

Automation details

Command ID: surface.untrim

Parameters:

face: {body, point}; holes?: all|[[x,y,z]] (points on the inner loops to remove; default: all); outer?: bool (restore the outer boundary to the surface's natural bounds: a free-form surface's own, an analytic surface's span of the face); in_place?: bool (untrim a surface body's face where it is; a solid's face is always copied out). A surface body; the face keeps its name

Unstitch

Command group: SURFACE › MODIFY

Read the solid features guide.

Automation details

Command ID: surface.unstitch

Parameters:

body; faces?: [[x,y,z]] (points on the faces to take out, each its own surface body; the rest stay together under the body's name; default: every face its own surface body). A solid comes apart into surfaces

Reverse Normal

Command group: SURFACE › MODIFY

Read the solid features guide.

Automation details

Command ID: surface.reverse_normal

Parameters:

body (a surface); faces?: [[x,y,z]] (points on the faces to turn over; default: all of them)

Fair Surface

Command group: SURFACE › MODIFY

Read the solid features guide.

Automation details

Command ID: surface.fair

Parameters:

body: surface name; faces?: [[x,y,z]] points on the faces to fair (default: every face); strength?: number (0..1 of the full fairing step, default 1); iterations?: number (1..1000 steps, default 1); keep_edges?: bool (default true: hold the boundary row and the row next to it, so a face keeps meeting its neighbours in position and in tangent); tolerance?: expr mm (how far a control vertex may move, default 0.001 of the body's size). Moves the interior control vertices of each B-spline face to flatten its curvature variation while the boundary stays put: the face keeps its edges and the body its shape within the tolerance, and the warning in the reply carries the energy before and after; name?

Surface Fillet

Command group: SURFACE › MODIFY

Read the solid features guide.

Automation details

Command ID: surface.fillet

Parameters:

planned: a, b: {body, point} (two faces of separate bodies that meet or cross; the points pick the side the ball rolls on); radius: expr; trim?: both|first|none

Match Surface

Command group: SURFACE › MODIFY

Read the solid features guide.

Automation details

Command ID: surface.match

Parameters:

body: surface name (the body whose face is rebuilt); faces?: [[x,y,z]] (points on that face, default: the body's first); target: body name (the body the seam must meet); edges: [[x,y,z]] (points on one edge chain of the target: the rebuilt boundary takes its place); order?: g1|g2|g3 (default g2: position and tangent plane, the curvature too, or how that curvature changes along the seam). The far boundary stays where it was and the body keeps its name

SHEET METAL › CREATE

Flange

Command group: SHEET METAL › CREATE

Create a sheet metal base, bend an existing edge into a wall, or build a contour from an open sketch. The sheet metal rule supplies the material thickness and bend settings so the folded and flat versions describe the same part.

Before you start

Flange typeWhat you need to selectResult
BaseA closed region in a finished sketch.A new flat sheet metal body.
EdgeOne or more supported edges of an existing sheet metal body.Bent walls along those edges. A sketch is not required for this mode.
ContourAn open chain of straight sketch lines.A sheet following that outline, extended by the chosen distance.

Choose or create a Sheet Metal Rule before building the part. To work from an ordinary solid plate, use Convert to Sheet Metal first. An arbitrary solid edge does not become a sheet metal edge just by selecting Flange.

Options

ChoiceMeaning
TypeBase, Edge or Contour. The selection determines which input is appropriate.
RuleSets thickness, bend radius, K-factor and the gaps/reliefs that keep bends manufacturable. Change thickness in the rule, not as a flange height.
HeightSets the edge flange’s height. Check the height reference and preview when matching a drawing dimension.
AngleSets how far the edge bends; 90° makes a right-angle wall.
Per-edge angle and heightLets selected edges in one feature have different dimensions. Empty values use the common setting.
PositionPlaces the flange relative to the selected edge. The preview shows which material remains inside or outside the original outline.
FlipBends toward the other side of the sheet.
Corner Relief Shape and sizeUse the rule’s setting or override relief between edge flanges of this feature. These overrides are not available for base or contour flanges.
DistanceSets the length of a contour flange’s extrusion along the open sketch.

Try it: two sides of a tray

  1. Set a sheet rule with 1.5 mm thickness and 1.5 mm bend radius.
  2. Draw and finish an 80 × 50 mm rectangular sketch.
  3. Choose Flange, select the rectangle’s region and make a Base flange.
  4. Choose Flange again, select an edge and set its height to 20 mm.
  5. Add another 20 mm flange on the opposite edge. Check the bend directions before confirming each feature.
  6. Use Create Flat Pattern to inspect the developed part and bend lines.

Tips and common mistakes

  • Do use one edge flange feature for adjoining walls whose shared corners should close together. Flanges made as separate features keep their own ends.
  • Do inspect warnings and the flat pattern; a relief that cannot fit may be left out with a warning.
  • Don’t confuse height with sheet thickness. The rule owns thickness.
  • Don’t select a sketch point for an edge flange: choose an edge of the sheet. For a base flange, select a closed sketch region instead.

Examples and community resources

ResourceWhat to exploreAuthor and licence
Editable sheet metal demoThe rule, base sketch and two edge flanges used in this illustration.SolidCraft contributors; MIT OR Apache-2.0.

Contribute a tip, demo, model or screenshot, explaining the edge or region that must be selected.

See also

Hem returns an edge back toward the sheet. Fold bends a sheet along a chosen line. Sheet Metal Rules controls thickness and bend settings. Create Flat Pattern shows the developed part.

Automation details

Command ID: sheet.flange

Parameters:

base: sketch + profiles? (rule?, flip?) | contour: sketch + curves (open chain of lines) + distance (rule?, flip?, reverse?) | edge: edges: [[x,y,z] on top/bottom edges, or {point: [x,y,z], angle?, height?} for an edge with its own angle and height] + height (along the flange, to its far edge), angle? (default 90 deg), radius? (default: rule), height_from?: outer|inner|tangent (where the height is measured from: the outer virtual sharp (default), the inner virtual sharp, or past 90 deg the line square to the flange touching the bend's outside (tangent; up to 90 deg the outer sharp)), position?: inside|outside|middle|material_outside|tangent (where the bend starts: the outer virtual sharp on the edge (default), the bend starting at the edge (bend_outside is the same), half way, the inner virtual sharp on the edge, or the bend's outer face tangent to the edge's face (below 90 deg the bend's end on that face)), flip?, body?, corner_relief_shape?: notch|round|rectangular|tear and corner_relief? (size across): the relief at the corners these flanges make (default: the rule's); then?: [{angle?, height, flip?}] further bends (at most 16), each a flange on the far edge of the one before, flip: true turns that bend the other way (edge only); type?: base|edge|contour (default from the inputs); name?, body_name? (the new body). Thickness, K-factor and bend radius come from the rule (sheet.manage_rules); passing them here is refused, and so is the corner relief on a base or contour flange

Path Flange

Command group: SHEET METAL › CREATE

Read the sheet metal guide.

Automation details

Command ID: sheet.path_flange

Parameters:

edge: [x,y,z] on a top or bottom edge of the sheet; sketch + curves: an open chain of sketch lines drawn on a plane across that edge, from the edge out (each line one flange as long as the line, to the outer face from the virtual sharp; each corner one bend, turning the way the lines turn); radius? (default: rule); body?. One feature, one body

Perforate

Command group: SHEET METAL › CREATE

Read the sheet metal guide.

Automation details

Command ID: sheet.perforate

Parameters:

diameter, pitch: expr; margin?: expr (clear of edges, cut-outs and bends; default: the diameter); pattern?: staggered (60°, default) | square; body? - a perforation field over the whole flat sheet: holes in the flat pattern (perforations), the DXF (layer PERFORATION) and the measured volume, not cut into the B-rep (#732)

Hem

Command group: SHEET METAL › CREATE

Fold a sheet metal edge back through a half turn to form a return. Use a hem when you need a doubled-over edge, rather than an upright wall.

Before you start

  • You need an existing sheet metal body and a supported free sheet edge. Make a base flange or convert a suitable solid plate first.
  • Select the edge, not a sketch line, face or point. Hem does not require a new sketch. A bend along a line inside the sheet uses Fold instead.
  • Leave room for the return so it does not run into another wall or return.

Options

ChoiceMeaning
EdgesThe sheet edges to turn back. Check that the preview changes the intended edge.
LengthThe return’s length, measured to its outer face. It is not the thickness of the sheet.
GapControls the inner radius of the return bend. Leave it empty to use the sheet rule’s hem setting.
FlipTurns the return toward the other side of the sheet.

Try it: a returned edge

  1. Create an 80 × 50 mm base flange in 1.5 mm sheet.
  2. Choose Hem and select a free 80 mm edge of the sheet.
  3. Set Length to 8 mm and Gap to 1.5 mm.
  4. Check which side receives the return; use Flip if necessary, then confirm.
  5. Inspect Create Flat Pattern to see the material needed for the bend.

Tips and common mistakes

  • Do check the bend in the preview: an edge returning toward another feature needs enough clearance.
  • Don’t draw a sketch line to tell Hem where to bend. Its input is an existing sheet edge; use Fold for a bend line through a panel.
  • Don’t use Hem for an ordinary right-angle wall. That is an edge Flange.

Examples and community resources

ResourceWhat to exploreAuthor and licence
Editable hem demoThe sheet rule, base flange and 8 mm return used in this illustration.SolidCraft contributors; MIT OR Apache-2.0.

Contribute a tip, demo, model or screenshot, explaining the selected edge and dimensions.

See also

Flange makes a base sheet or an angled wall. Fold bends along a line in the sheet. Sheet Metal Rules sets the default hem gap. Create Flat Pattern shows the developed part and bend lines.

Automation details

Command ID: sheet.hem

Parameters:

edges: [[x,y,z] on sheet edges]; length (to the outer face); gap? (inner radius, default: rule); flip?; body?

Fold

Command group: SHEET METAL › CREATE

Read the sheet metal guide.

Automation details

Command ID: sheet.fold

Parameters:

line: sketch + curve (a sketch line on the sheet's base face; followed when the sketch changes) or points: [[x,y,z], [x,y,z]]; angle? (default 90 deg); radius? (default: rule); position?: centerline|start|end|mould (where the line sits in the bend, default centerline); fixed?: [x,y,z] on the side that stays (default: the larger side); flip? (fold the other way); body?

Convert to Sheet Metal

Command group: SHEET METAL › CREATE

Read the sheet metal guide.

Automation details

Command ID: sheet.convert

Parameters:

body; face: [x,y,z] on its large flat face (a plate of even thickness; recesses in one face up to half the thickness deep, such as an engraved label, become pockets of the sheet), or that face's name from model.faces; rule?; bends?: [[x,y,z] on sharp edges] (a solid or a shelled body: `face` is the fixed face and the flat faces reached from it across these edges become the sheet; a shell keeps its thickness, a solid takes the rule's inward; edges between two of those faces that are no bends are cut open with the rule's gap; a point in the middle of a chamfer between two faces, or on a bend modelled with its radius (a cylinder between two flat faces tangent to it, either skin), makes it one bend of the rule's radius at their virtual sharp; the faces' holes become cut-outs and their engravings, up to half the thickness deep, pockets)

Create Flat Pattern

Command group: SHEET METAL › CREATE

Read the sheet metal guide.

Automation details

Command ID: sheet.flat_pattern

Parameters:

body? → flat size, outline loops and cut-outs (flat coordinates, as point lists), cutout_shapes (the same cut-outs exactly, in the same order: {circle: {center, radius}} for a round hole, else {segments: [{line: [a, b]} | {arc: {center, radius, start_deg, sweep_deg}} | {polyline: [...]}]}), pockets (with their own cutout_shapes), bend lines and the bend table

SHEET METAL › MODIFY

Unfold

Command group: SHEET METAL › MODIFY

Read the sheet metal guide.

Automation details

Command ID: sheet.unfold

Parameters:

body? (default: the last sheet body) — all bends

Refold

Command group: SHEET METAL › MODIFY

Read the sheet metal guide.

Automation details

Command ID: sheet.refold

Parameters:

body? (default: the last unfolded sheet)

Sheet Metal Rules

Command group: SHEET METAL › MODIFY

Read the sheet metal guide.

Automation details

Command ID: sheet.manage_rules

Parameters:

name (new or existing); thickness?, k_factor?, bend_radius?, relief_width?, relief_depth?, corner_relief?, hem_gap?, gap? (expressions; `Thickness` is the rule's; gap: between flanges that meet at a corner, whose ends are closed toward each other at any angle); corner_relief_shape?: notch|round|rectangular|tear (what is cut where two bends meet at a corner of the base: round and rectangular a relief `corner_relief` across; tear none, each bend's end is cut straight from the corner to its flange's end; default notch); angle_display?: bend|included (how the DXF bend notes read the bend angles: the bend angle, default, or the included angle left between the bend's sides, 180° less it; the bend table gives both, and a flange's `angle` is always the bend angle); active?: bool; delete?: bool

WELDMENTS › CREATE

Frame Member

Command group: WELDMENTS › CREATE

Automation details

Command ID: frame.member

Parameters:

sketch: the frame sketch (id or name; 2D or 3D); lines?: [curve ids] (one member each; default: every straight line drawn in the sketch: not construction, not projected or otherwise linked, not of no length); profile: {kind: bar|round_bar|rect_tube|round_tube|angle|channel|i_beam, …its dimensions: each a number in the design's units or a length expression over its parameters ("tube_wall", "2 in")} (frame.profile.list gives each kind's dimensions and an example; dimensions left out take defaults from the profile's size) | profile_sketch: a sketch whose profile is the section, in its own x and y around its origin, with profiles?: picks as solid.extrude takes them (default: its material, nested loops alternating, so two circles make a tube); anchor?: origin|center|centroid|top_left|top|top_right|left|right|bottom_left|bottom|bottom_right (the profile point that sits on each line, default origin); angle?: angle expr (the profile turned about the line; default 0: its y as near world up as the line allows, a vertical member's x along world X); mirror?: bool (the profile mirrored across its y axis); name?; body_name? (what the members are named after, then numbered: `Rail`, `Rail (2)`…; default the profile's description, `Rect Tube 40x40x3`, or the profile sketch's name); names?: {line id: name} (names to keep, as Edit Feature keeps them). One body per line, from its start to its end; each member keeps its name when other lines are added or deleted. Returns the feature and the bodies it made

PLASTIC › CREATE

Boss

Command group: PLASTIC › CREATE

Read the plastic parts guide.

Automation details

Command ID: plastic.boss

Parameters:

position: [x,y,z] on a face; direction? (default: out of the face); diameter, height; hole_diameter?, hole_depth? (default: to the face); draft? (angle), fillet? (root radius); ribs? (count), rib_thickness?, rib_length? (out from the wall), rib_offset? (below the top); body?

Lip

Command group: PLASTIC › CREATE

Read the plastic parts guide.

Automation details

Command ID: plastic.lip

Parameters:

face: [x,y,z] on the rim face of a shelled body; width, height; type?: lip|groove; gap? (groove clearance); side?: inside|outside (which rim edge); body?

Snap Fit

Command group: PLASTIC › CREATE

Read the plastic parts guide.

Automation details

Command ID: plastic.snap_fit

Parameters:

position: [x,y,z] on a face; direction? (default: out of the face); hook: [x,y,z] (the catch's direction); length, thickness, width, catch_depth, catch_length; base_height? (extends the base below the face); new_body?: bool (make a separate body instead of joining); body?

Rest

Command group: PLASTIC › CREATE

Read the plastic parts guide.

Automation details

Command ID: plastic.rest

Parameters:

position: [x,y,z] on a face (the rest's centre); direction? (default: out of the face); width (round: the diameter); length? (a rectangle, along `along`); along?: [x,y,z]; height; draft? (angle; default: the body's plastic rule); thickness? (wall of a hollow rest); body?

PLASTIC › SETUP

Manage Plastic Rules

Command group: PLASTIC › SETUP

Read the plastic parts guide.

Automation details

Command ID: plastic.manage_rules

Parameters:

name (library or new rule; a new one starts from `from`, default ABS (1.5mm)); from?; material?; thickness?, nominal_radius?, clearance?, knife_edge?, reveal_height?, thickness_variation?, draft?, max_thickness?, min_thickness?, min_draft? (expressions; `Thickness` is the rule's); active?: bool (rule for bodies without one); delete?: bool (a design rule; a library rule goes back to the library values)

Assign Plastic Rule

Command group: PLASTIC › SETUP

Read the plastic parts guide.

Automation details

Command ID: plastic.assign_rule

Parameters:

bodies: [names]; rule: name (empty: no rule) — plastic features on these bodies take its draft and clearance as defaults

Other commands: sketch

Edit Sketch

Automation details

Command ID: sketch.edit

Parameters:

sketch: id or name

Draw Dimensioned Sketch Geometry

Automation details

Command ID: sketch.draw.dimensioned

Parameters:

command: sketch creation command, params: object, dimensions: object of role to numeric or expression value, or `name = expression` (also `#name = expression`), which defines the user parameter `name` as sketch.dimension does (the reply's `defined` lists the names); creates geometry and all driving dimensions atomically in one undo step. Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

Delete Sketch Entities

Automation details

Command ID: sketch.delete

Parameters:

entities: [curve, point or constraint ids]

Drag Sketch Point

Automation details

Command ID: sketch.move_point

Parameters:

point: ref, to: [x,y]

Drag Sketch Geometry

Automation details

Command ID: sketch.drag

Parameters:

entity: point or curve, from: [x,y] where it was grabbed, to: [x,y], live?: bool: points and the material point grabbed on a line move toward `to` within the design constraints. When exact placement is impossible, bounded feasible steps minimize cursor distance. Splines slide by to - from; a circle or arc grabbed on its edge takes the radius to `to`. `with?`: [point or curve ids] moves the rest of a selection with the entity as one translation (circles keep their radii). Long moves retain the solution branch; arcs cannot sweep through their starts. Returns `reached`: progress projected onto the requested move (0..1), `at`: the grabbed position for the next frame, and `retry`: budget-limited progress can continue in another frame. `live: true` shares a work budget across held-solve decomposition and cursor correction; ordinary recovery and the final model evaluation retain their existing limits, not a wall-clock deadline. Later features stay stale until `sketch.drag_end`; `dof` stays from before the drag

End Sketch Drag

Automation details

Command ID: sketch.drag_end

Parameters:

constraint?: {command: a sketch.constraint.* id, params}: ends a drag made of `sketch.drag` `live: true` frames: adds the constraint it let go on (not kept if it over-constrains the sketch), then evaluates the whole model once; returns the constraint's result and the sketch's solved state and degrees of freedom

Move Dimension Text

Automation details

Command ID: sketch.dimension_text

Parameters:

dimension: constraint id or parameter name; at: [x,y] text centre (sketch coordinates) | reset: true (default place)

Sketch Palette Options

Automation details

Command ID: sketch.options

Parameters:

sketch?: id|name (default active); any of show_profile, show_points, show_dimensions, show_constraints, show_projected, show_construction, grid, snap, slice, sketch_3d: bool. Returns them all

Chain

Automation details

Command ID: sketch.chain

Parameters:

curve: id: the curves joined to it end to end (what a double-click selects)

Solve Sketch

Automation details

Command ID: sketch.solve

Parameters:

reports the solver status and degrees of freedom

Add Spline Point

Automation details

Command ID: sketch.spline.insert_point

Parameters:

curve: fit point spline id, at: [x,y]: a fit point is inserted where the curve passes nearest to it, between its neighbours (the curve still runs through it and all its old points; constraints on them stay); end?: start|end: `at` becomes the spline's new first or last point instead, and the curve runs on to it (refused when that end is joined to other geometry). Control point splines take no new points yet. Returns point: the new point's id

Infinite Line

Automation details

Command ID: sketch.infinite

Parameters:

curves: [line ids], value?: bool (default toggles): infinite line type (#1359): construction geometry drawn across the whole view through the line's two points; off, a normal line

Edit Text

Automation details

Command ID: sketch.edit_text

Parameters:

link: the text's link id (or entity: one of its curves), text? or text_expression? (as in sketch.text; typed words replace the expression), at?, height?, angle?: deg (numbers or expressions as in sketch.text; a number replaces an expression, and so does moving the text), font?: family or file path (empty: the built-in font), bold?, italic?: bool (an installed family's bold or italic face; italic without one is slanted), align?: left|center|right (the lines against `at`, or along the path), letter_spacing?: extra mm between letters, line_spacing?: times the font's line distance (default 1), path?: a curve id of the sketch the baseline follows ("": none; `at` and `angle` then do not place the text; the curve becomes construction, a guide the letters stand on), reverse?: bool (the other way along the path) (each kept when left out); or edits: [{link or entity, text?, at?, …}]: several texts changed together, the design rebuilt once (all or nothing; returns edits: each one's result); live?: bool: one frame of an interactive change (the sketch is solved, the features after it stay as they were until `sketch.drag_end`). Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

Toggle Driven Dimension

Automation details

Command ID: sketch.toggle_driven

Parameters:

constraint: dimension id, driven?: bool (default toggles); a driving dimension gets a parameter with its current value

Toggle Radius / Diameter

Automation details

Command ID: sketch.toggle_diameter

Parameters:

constraint: a circle's or an arc's radius or diameter dimension id; diameter?: bool (default: the other one); sketch?: id|name (default: the one being edited). The circle stays the same size: its parameter is halved or doubled (a plain value is rewritten, an expression becomes `(e) / 2` or `2 * (e)`); refused when anything else uses that parameter

Constraint Glyphs

Automation details

Command ID: sketch.glyphs

Parameters:

sketch?: id|name: every constraint with where to draw its glyph (sketch coordinates)

Snap Inference

Automation details

Command ID: sketch.snap

Parameters:

at: [x,y], from?: [x,y] (previous click), radius?: mm (snap distance, default 1): what a click there would snap to and infer

Drawing Size

Automation details

Command ID: sketch.drawing_bounds

Parameters:

path | text: SVG or DXF (by `format`: "svg" | "dxf", default by the file name, else SVG); returns min, max, width and height in the file's own size

Save As DXF

Automation details

Command ID: sketch.export_dxf

Parameters:

sketch?: id|name (default active); path?: file to write (else the DXF text is returned)

Loose Ends

Automation details

Command ID: sketch.loose_ends

Parameters:

sketch?: id|name (default active): the ends of profile curves (not construction, projected or text) that can make a profile fail. open: [{point, curve, at}] ends that touch no other profile curve (no profile runs through them); untied: [{point, curve, at, touches: {point}|{curve}}] ends that touch another curve only by position (the profile closes now, but nothing keeps it closed when a dimension changes)

Tie Loose Ends

Automation details

Command ID: sketch.loose_ends.tie

Parameters:

sketch?: id|name (default active); points?: [point ids] (default: every untied end): ties each untied end to what it touches, coincident with another curve's end or on another curve. Returns constraints: [ids added], and the untied ends left

3D Line

Automation details

Command ID: sketch.line3d

Parameters:

points: [[x,y,z]…] world points (2 or more): one 3D line per segment, joined end to end (needs 3D Sketch on). Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

3D Spline

Automation details

Command ID: sketch.spline3d

Parameters:

points: [[x,y,z]…] world fit points (2 or more): a smooth 3D curve through them (needs 3D Sketch on). Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

3D Arc

Automation details

Command ID: sketch.arc3d

Parameters:

start, through, end: [x,y,z] world points: an exact circular arc through them, from start through through to end (needs 3D Sketch on). Stored exactly (centre, radius, angles), so path consumers can treat it as a true arc. Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

3D Point

Automation details

Command ID: sketch.point3d

Parameters:

point: [x,y,z] world point (needs 3D Sketch on). Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

Move 3D Point

Automation details

Command ID: sketch.move3d

Parameters:

wire: drawn 3D curve or point id, index?: fit point (default 0), to: [x,y,z] | by: [dx,dy,dz]; points joined to it move too

Break Offset Association

Automation details

Command ID: sketch.offset.break

Parameters:

curve: derived offset curve id (retains geometry and makes its points editable)

Trim Along Path

Automation details

Command ID: sketch.trim.path

Parameters:

points: [[x,y]…] (2…2000 positions: a path drawn across the sketch). Every piece the path crosses is removed as `sketch.trim` removes the piece at that crossing, in the order the path crosses them; a piece crossed again after it is gone is not trimmed twice; projected geometry, infinite lines, offset outputs and pieces trim refuses are passed over (why in `skipped`). dry_run?: bool (report without changing the design). One undo step → trimmed: [each trim's result], removed: [[[x,y]…]] (each removed piece as a polyline). Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

Automation details

Command ID: sketch.break_link

Parameters:

link?: link id (j1) | entities?: [curve or point ids]: linked geometry becomes normal sketch geometry

Auto-Project Edges on Reference

Automation details

Command ID: sketch.auto_project

Parameters:

value?: bool (default toggles): project a face's edges when a sketch is created on it

Redefine Sketch Plane

Automation details

Command ID: sketch.redefine

Parameters:

sketch: id or name; plane: as sketch.create; frame?: as sketch.create; author_path?: exact owner occurrence ids; explicitly rebinds or freezes the plane while preserving geometry and dimension names

Copy Sketch Entities

Automation details

Command ID: sketch.copy

Parameters:

entities?: [curve or point ids] (default: the selected sketch geometry); the constraints and dimensions among them come along

Cut Sketch Entities

Automation details

Command ID: sketch.cut

Parameters:

entities?: [curve or point ids] (default: the selected sketch geometry): copies them as sketch.copy does, then deletes them (one undo step)

Paste Sketch Entities

Automation details

Command ID: sketch.paste

Parameters:

at?: [x, y] (sketch point the copy's centre goes to) | translate?: [x, y]; without either, offset from the original in its own sketch and at the same coordinates in another; sketch?: target (default: the active sketch)

Inspect Sketch

Automation details

Command ID: sketch.inspect

Parameters:

sketch?: id|name (default active)

Other commands: canvas

Calibrate Canvas

Automation details

Command ID: canvas.calibrate

Parameters:

canvas: id or name; a, b: two points on the canvas plane [x,y]; distance: their true distance (mm): scales the image about a

Delete Canvas

Automation details

Command ID: canvas.delete

Parameters:

canvas: id or name

Canvas to Sketch

Automation details

Command ID: canvas.to_sketch

Parameters:

canvas?: id or name (default: the last canvas); name?: the new sketch's name. Traces the canvas image (dark drawing on a light background, or the reverse) into a new sketch on the canvas plane, lying exactly on the image: lines, splines and holes

Other commands: mesh

Convert Mesh

Automation details

Command ID: mesh.convert

Parameters:

body?: mesh body name (default: the selected mesh body); tolerance?: length expression (default 0.05 mm): reconstruct a closed constant-section mechanical mesh as editable planar and cylindrical faces, with a parametric timeline feature in the mesh body's owning component (the active component must be that component or an ancestor; otherwise activate the named component first); the active component is unchanged; name?

Other commands: sheet

List Sheet Metal Rules

Automation details

Command ID: sheet.rules

Parameters:

→ rules with their expressions and values, and the active one

Export Flat Pattern as DXF

Automation details

Command ID: sheet.export_dxf

Parameters:

body?, path?, curves?: exact|arcs (default exact: an ellipse as ELLIPSE, splines, text outlines and other Béziers as SPLINE; arcs: tangent arcs and lines within 0.001 mm, for machines that read only those), text?: cut|etch (default cut: letters that text cut through the sheet are cut contours on layer TEXT; etch: single contours on layer ETCH and the sheet keeps its material there; text machined to a depth is always on ETCH), bend_notes?: bool (default false: a note beside each bend line on layer BEND_NOTES, `B1 UP 90%%d R1`, its angle the included angle when the body's rule has angle_display: included), note_height?: mm (default 3), bend_lines?: bool (default true; false leaves BEND_UP and BEND_DOWN out, for a cutter that would cut them), layers?: roles|single (default roles, the layers below; single: every entity on layer 0), per_body?: bool (a file for every sheet body, `<path>-<body>.dxf`, or their DXF texts without a path → files: [{body, path | dxf, bends}]; not with `body`) → DXF (AutoCAD 2000, mm): layers OUTLINE (the outer contour), CUT (what is cut out inside it), TEXT or ETCH (letters), BEND_UP and BEND_DOWN (dashed centre lines), BEND_NOTES, POCKET_<BOTTOM|TOP|INTERNAL>_Z<from>_TO_<to>_MM (one per side and depth) and PERFORATION; inner contours come before the outline

Export Bend Table

Automation details

Command ID: sheet.export_bend_table

Parameters:

body?, format?: csv|json (default csv), path? → bend table in mm and degrees, including rule and flat centre-line coordinates; angle_deg is the bend angle and included_angle_deg the angle left between the bend's sides (180° less it); a bend that cut-outs split has a row for each piece

Other commands: plastic

List Plastic Rules

Automation details

Command ID: plastic.rules

Parameters:

→ rules with their expressions and values, the active rule and the rules assigned to bodies

Other commands: frame

Profile Library

Automation details

Command ID: frame.profile.list

Parameters:

Returns kinds: [{kind, label, required, optional, example}]: the built-in profiles, each SolidCraft's own parametric definition

Profile Properties

Automation details

Command ID: frame.profile.properties

Parameters:

profile: {kind: bar|round_bar|rect_tube|round_tube|angle|channel|i_beam, …its dimensions: each a number in the design's units or a length expression over its parameters ("tube_wall", "2 in")} (frame.profile.list gives each kind's dimensions and an example; dimensions left out take defaults from the profile's size); density?: kg/m³ (adds mass_per_m, kg/m). Returns profile (every default filled in), area (mm²), centroid [x,y] (mm, from the bounding box centre), ixx, iyy, ixy (mm⁴ about the centroid), width, height

Insert Profile

Automation details

Command ID: frame.profile.insert

Parameters:

profile: {kind: bar|round_bar|rect_tube|round_tube|angle|channel|i_beam, …its dimensions: each a number in the design's units or a length expression over its parameters ("tube_wall", "2 in")} (frame.profile.list gives each kind's dimensions and an example; dimensions left out take defaults from the profile's size); at?: [x,y] (sketch mm, default the origin); anchor?: origin|center|centroid|top_left|top|top_right|left|right|bottom_left|bottom|bottom_right (the profile point placed on `at`: its origin, the default and a built-in profile's centre, its bounding box's centre, its centroid, or a corner or edge middle of its bounding box); angle?: radians, counter-clockwise; fixed?: bool (default true: the curves are locked, so solving the sketch keeps the shape); sketch?: id|name (default: the sketch being edited). Returns the section as frame.profile.properties does. Returns created: {points, curves, constraints, dimensions}: the ids of what it added (stable and never reused: usable right away in sketch.dimension, sketch.constraint.*, sketch.delete…)

Other commands: component

Cycle Component Color

Read the components and joints guide.

Automation details

Command ID: component.cycle_color

Parameters:

component: id or name; saves the next identification colour and enables Component Colors; shared by every instance, separate from appearances

Create Components from Bodies

Read the components and joints guide.

Automation details

Command ID: component.from_bodies

Parameters:

bodies: [names] → one new component per body, named after it

Activate Component

Read the components and joints guide.

Automation details

Command ID: component.activate

Parameters:

component: id or name (0 or "root" for the design); occurrence?, path?: exact placement used to author shared geometry

List Components

Read the components and joints guide.

Automation details

Command ID: component.list

Parameters:

compact?: bool (counts of bodies, features, sketches and construction planes instead of their names; occurrences leave out identity transforms; children as occurrence ids); bodies?: bool (with compact: body names, not their count)

Component Physical Properties

Read the components and joints guide.

Automation details

Command ID: component.properties

Parameters:

component?: id or name (default active); descendants?: bool (default true). Measures the first placement, or all placements for root, including pending moves; material-aware mass and center of mass in world coordinates; volume, density, mass and center of mass only for closed, consistently oriented bodies; total.open_bodies_skipped counts open bodies excluded from volume/mass totals

Rename Component

Read the components and joints guide.

Automation details

Command ID: component.rename

Parameters:

component, name

Delete Component

Read the components and joints guide.

Automation details

Command ID: component.delete

Parameters:

component: deletes it, its subcomponents, occurrences and features

Unlock Contents

Read the components and joints guide.

Automation details

Command ID: component.unlock

Parameters:

component: removes the rigid joints that hold its contents together (an imported assembly's rigid group), so its parts move and take joints one by one → joints (the ids removed)

Move Bodies to Component

Read the components and joints guide.

Automation details

Command ID: component.move_bodies

Parameters:

bodies: [names], component; component_path?: its placement to place them by (default: its only one, else the active one; a component placed more than once gets them in every instance); from_path?: the placement of their component they move from (default: its only one, else its first, where its bodies have their own names)

Paste Bodies

Read the components and joints guide.

Automation details

Command ID: component.copy_bodies

Parameters:

bodies: [names, as the Browser shows them: a body seen in another placement of its component (`Cube (B:2)`) is copied from there]; component?: where the copies go (default: the active one); component_path?: its placement to place them by (default: its only one, else the active one; a component placed more than once gets them in every instance). Each copy stays where its body is in the world; the copies' names come back as `bodies`

Move Sketches to Component

Read the components and joints guide.

Automation details

Command ID: component.move_sketches

Parameters:

sketches: [ids or names], component

Paste New

Read the components and joints guide.

Automation details

Command ID: component.paste_new

Parameters:

component: independently copy its nested definition graph and history, materials and styles; occurrence?, path?: selected source placement; parent?: component the copy goes in (default: the source placement's; not the component or one inside it); in_place?, parent_path?: as occurrence.copy; translate?: [x,y,z]. Reassigned external bodies become base geometry; retained external links and omitted boundary joints are reported

Read the components and joints guide.

Automation details

Command ID: component.update_links

Parameters:

component?: id or name (default: every linked component) — reads the linked designs again and replaces their bodies where they changed; → updated, unchanged, warnings (also joints whose faces are gone or that no longer solve)

Read the components and joints guide.

Automation details

Command ID: component.relink

Parameters:

component: id or name of a linked component; path: a saved .solidcraft design — replaces the source and linked bodies for all its occurrences, preserving identities and placements; returns path, previous_path, warnings, joint_errors and joint_conflicts

Read the components and joints guide.

Automation details

Command ID: component.break_link

Parameters:

component: id or name of a linked component — keeps its bodies as they are and forgets the design file

Extract to File

Read the components and joints guide.

Automation details

Command ID: component.extract

Parameters:

component: id or name of a component that is not linked; path: the .solidcraft design to write → its history, subcomponents and their joints move to that design, and the component becomes linked to it (as component.insert_design makes it); returns path, file, feature, bodies, notices (what stays behind), warnings and copies (components that build the same bodies: see component.replace_with_link)

Find Identical Copies

Read the components and joints guide.

Automation details

Command ID: component.copies

Parameters:

component: id or name of a linked component → copies: [{component, name}], the components not linked whose own history builds the same bodies

Read the components and joints guide.

Automation details

Command ID: component.replace_with_link

Parameters:

component or components: [ids or names] of components that are not linked; with: a linked component, or path: a .solidcraft design (its link here, else a new linked component) → each component's history goes and its placements become placements of the linked component; refused when its bodies are not the same as the link's; returns component, name, replaced and warnings

Read the components and joints guide.

Automation details

Command ID: component.links

Parameters:

→ linked components: component, name, path, file (resolved), found (null when the file is on a network location not allowed, or names a device: it is not looked for), and then host (the network location) and reason

Part Properties

Read the components and joints guide.

Automation details

Command ID: component.metadata

Parameters:

component: id or name (0 or "root": the design's own properties) → component, name, part_number, description, revision, metadata (as saved, other tools' keys too), properties: {name: text}

Change Part Properties

Read the components and joints guide.

Automation details

Command ID: component.metadata.set

Parameters:

component: id or name (not the root: use document.metadata.set); part_number?, description?, revision?: text (empty or null removes); values?: {key: value} (SolidCraft's keys, as document.metadata's properties lists them, or a reverse-DNS key holding an object); properties?: {name: text, …} (free properties; empty or null removes). All or nothing, one undo step → component, metadata, properties, changed: [keys]

Other commands: occurrence

Occurrence Physical Properties

Read the components and joints guide.

Automation details

Command ID: occurrence.properties

Parameters:

occurrence: id or name; path?: [occurrence ids] (required if nested under multiple instances); descendants?: bool (default true). Physical properties of this placement in world coordinates, including pending moves; volume, density, mass and center of mass only for closed, consistently oriented bodies; total.open_bodies_skipped counts open bodies excluded from volume/mass totals

Paste (Instance)

Read the components and joints guide.

Automation details

Command ID: occurrence.copy

Parameters:

component (or occurrence): what to place again; path?: validates selected occurrence; parent?: component (default: the same parent); translate?: [x,y,z]; in_place?: bool (default false: the selected transform within the parent; true: where the selected placement is in the world, translate in world axes; a parent placed more than once is placed by parent_path?, else the active placement, and every instance gets the copy). Copies the selected effective transform, including pending moves

Move Occurrence

Read the components and joints guide.

Automation details

Command ID: occurrence.move

Parameters:

occurrence; path?: exact placement; space?: local|world (default local); translate?: [x,y,z]; axis?: [x,y,z], angle?: radians or "30 deg", origin?: [x,y,z]; matrix?: [12 or 16 numbers] (instead of translate/axis/angle/origin: a rigid move as a row-major 3x4 rotation-and-translation or 4x4 matrix, flat or as rows; one that is a rotation only up to rounding is orthonormalised, a scale, shear or mirror is refused); tolerance?: largest accepted |RᵀR − I| (default 1e-9, at most 1e-3); capture?: bool (default true; false keeps it pending until Capture Position); move_grounded?: bool (default false: a grounded occurrence refuses; true moves it and it stays grounded). Nested occurrence definitions remain shared

Drag Occurrence

Read the components and joints guide.

Automation details

Command ID: occurrence.drag

Parameters:

occurrence or path: exact placement; at: [x,y,z] world point on it; point: [x,y,z] where it goes. Moves the placement by point - at (with any chain of joints it is in that is joined to nothing grounded) and captures its position; other pending moves stay pending. Shared definitions move in all placements. Grounded parts and parts joints hold to something fixed are refused (joint.reach moves those)

Ground

Read the components and joints guide.

Automation details

Command ID: occurrence.ground

Parameters:

occurrence; grounded?: bool (default toggles)

Move to Component

Read the components and joints guide.

Automation details

Command ID: occurrence.reparent

Parameters:

occurrence; path?: exact placement; parent: component id or name (0 or "root" for the design); parent_path?: the parent's placement to place it by (default: its only one, else the active one; every instance of the parent gets it). The placement keeps its world position; a move that would break a feature is refused

Other commands: joint

Reach Point

Read the components and joints guide.

Automation details

Command ID: joint.reach

Parameters:

occurrence: id|name; point: [x,y,z] (where its point goes, world); at?: [x,y,z] (its point, in the world where it is now; default: the centre of          its bodies' box); z?: [x,y,z] (the way its axis then points); axis?: [x,y,z] (that axis, in the world now; default: its own z); joints?: [ids          or names] (only these move toward the point; the other joints of a closed loop they are in follow); quiet?: bool; continuous?: bool (a frame          of a drag: the answer says continuous, and the app's command line doesn't echo it). Moves the values of the joints          on its chain from where they are to the nearest pose, within their limits, through motion links, keeping closed loops closed as joint.drive does          (contact sets are not checked) → reached; error_mm (and error_deg with z): how close it got; point: where its point is; values: [{joint, name,          values}] of the joints that moved, as joint.list gives them; moved; stopped_by_limit: [{joint, value, limit: min|max}]: the limits it rests on          short of the point; stopped_by_loop: {joint}: the closed loop that stopped it (its chain alone gets closer); reason: why nothing can move

Joint Limits

Read the components and joints guide.

Automation details

Command ID: joint.limits

Parameters:

joint; index?: value index (default 0); min?, max? (omit both to clear)

Edit Joint

Read the components and joints guide.

Automation details

Command ID: joint.edit

Parameters:

joint; type?, flip?, offset?, angle? (a number, or an expression the joint then follows), suppressed?, name?

Delete Joint

Read the components and joints guide.

Automation details

Command ID: joint.delete

Parameters:

joint: id|name (or origin: name, link: index)

List Joints

Read the components and joints guide.

Automation details

Command ID: joint.list

Parameters:

→ joints (type, occurrences, values, limits; expressions: {offset?, angle?, values?} when they were typed as expressions), origins, links, degrees of freedom, conflicts, floating: [{occurrences, joints}] (joint chains joined to nothing grounded: the solver places none of them, so driving them moves nothing)

Inspect Joint

Read the components and joints guide.

Automation details

Command ID: joint.inspect

Parameters:

joint?: id|name (default: every joint) → joints: [{id, name, type, suppressed, visible, flip, offset (mm), angle (deg), values: as joint.list gives them, dofs, expressions?: {offset?, angle?, values?}, a, b: {occurrence, occurrence_name, component, component_name, path (occurrence names from the top, `/` between), snap (as saved: type, pick, face, end, edge, corner, x, point, z, in the component's coordinates), references: [{role: face|end|x|edge|corner, name, role_in_feature?: (top, side:c1…), feature?: {id, name, type} (the feature that made the face; error when it is gone), sketch?: {id, name, curve, curve_type} (a face swept from a sketch curve), faces?: [an edge's two faces], unverified?: a name saved before exact names}], resolves, frame?: {origin, z, x} in the world, error?: why the origin is lost}, links: [{index, role: driver|driven, …as joint.list}], errors, conflicts}] (reads only: nothing changes)

Solve Joints

Read the components and joints guide.

Automation details

Command ID: joint.solve

Parameters:

re-place the occurrences from the joints → conflicts, errors, dof

Sweep Joint

Read the components and joints guide.

Automation details

Command ID: joint.sweep

Parameters:

joint: id|name; from, to: its value the sweep runs between (degrees for angles, mm for distances, or expressions); index? (which value, default 0); step? (between samples, in the joint's unit; default: fine enough that no part passes through another between two); refine?: mm (the first contact is bisected until no part moves more than this between the last clear value and the touching one; default 0.01); occurrences?: [ids or names] (checked against each other; default every occurrence), with against?: [ids or names] (the parts that stay: each of `occurrences` only against these), or contact_sets?: true (the pairs of the design's contact sets); report_gaps?: bool (the nearest gap at every sample, default false); apply?: bool (leave the design where the sweep stopped; default false: the design is not changed) → stopped_at (the last value clear of contact, or where a loop or limit stopped it; null: it reached `to`), stopped_by: {a, b, at: [x,y,z] (where they touch, world)} | "loop" | "limit" | null, samples: [{value, min_gap_mm?, pair?}], min_gap? (report_gaps: {part: {mm, at_value, to}}, the nearest each part came to another), unit, gap_method ("mesh": distances between the tessellations), gap_tolerance_mm (how far those can be off: 0 when every face is flat), pairs (checked), touching_at_start: [[a, b]] (pairs already touching at `from`, such as parts joined face to face or a door on its frame: these stop it only once they pass into each other deeper than they start), applied. The parts are tested at the samples and through the bisection; the motion is on a copy (closed loops follow, contact sets do not stop it)

Other commands: inspect

Clearance

Automation details

Command ID: inspect.clearance

Parameters:

bodies?: [names] (default: every solid body, in world placement, but those in `against`; mesh bodies are not measured); against?: [names] (only pairs with one body in `bodies` and the other here); min_volume?: mm³ (default 0.01: smaller overlaps count as contact); clearance?: mm (default 0: report pairs closer than this); nearest?: n (each body of `bodies` gets its n nearest others); skip_within?: "occurrence" (pairs of bodies of one occurrence) | "component" (pairs of bodies inside one placed component, its subcomponents included) | null; tolerance?: mm (default 1e-6: a gap below it is contact, 0) → overlaps: [{a, b, volume_mm3, area_mm2, bbox, center}]; near: [{a, b, distance_mm, from, to, overlap_mm3?: a contact's shared volume below min_volume, exact?: false when measured on the meshes}], nearest by body (the same for pairs that overlap: 0); nearest: {body: [{body, distance_mm}]}; unchecked: [{a, b, reason}] (pairs whose overlap could not be worked out; each mesh body, STL/3MF/OBJ import, is not measured and is listed as {a: name, b: null, reason: "mesh body: not checked"}, also when named in `bodies` or `against`; the result's `bodies` counts the solid bodies only); pairs_checked; pairs_reused (of those, measured by an earlier call: neither body changed or moved since); pairs_pruned (ruled out by their boxes); ms. Distances are measured on the exact faces and edges, the meshes only rule pairs out

Parameter Sweep

Automation details

Command ID: inspect.parameter_sweep

Parameters:

parameter: name; values: [number | expression] (at most 200) | from, to: numbers, steps? (default 10, at most 199: steps + 1 values) → for each value, in a copy of the design (the design itself is not changed): {value, ms (the rebuild), ok, failed: [{feature, name, error}], warned: [{feature, name, warning}] (features that build at the current value and fail or warn at this one), joints_lost: [{joint, name, origin?: a|b, why}], joints_flipped: [{joint, name, origin: a|b, degrees}] (an origin's z turned more than 90° on its own part from where it is now), sketches_flipped: [{sketch, name, degrees}] (the sketch plane's normal turned more than 90°), sketches_failed: [{sketch, name, failing, folded}] (a solve that fails, or keeps a triangle's turn or an offset's side only by flipping it)} (or {value, ms, ok: false, error} where the parameter takes no such value); summary: {values, ok, slowest_ms, failed, joints_lost, joints_flipped, sketches_flipped, sketches_failed} (how many values show each)

Compare Bodies

Automation details

Command ID: inspect.compare

Parameters:

a, b: body names (default: the two selected bodies, or the design's only two), in world placement; tolerance?: mm (0.001 to 10, default 0.01): surfaces closer than this agree; spacing?: mm (default 0.5): the largest piece of a face sampled as one point, coarser for a body that would need more than max_points? (default 8 million, up to 50 million) samples; max_regions? (default 50); color?: true | {only_in_a?, only_in_b?: "#rrggbb"} (colours the faces that hold a region, red where only a has material and green where only b has: the faces mostly beyond the tolerance, else the one with the largest share; an undo step) → a, b: volume_mm3, area_mm2, center_of_mass, bbox; difference: b − a; deviation: a_to_b, b_to_a (max_mm, mean_mm, at, area_beyond_mm2); regions, largest first: side (only_in_a | only_in_b), volume_mm3 (integrated along lines through the region: resolution), area_mm2, max_deviation_mm, at, center, bbox, faces_a, faces_b (face indices, as model.faces lists them); identical; verdict; warnings (a body whose surface does not enclose what it measures, lines left out). Works from the two surfaces, without a boolean of the bodies, so near-identical bodies compare too

Silhouette

Automation details

Command ID: inspect.silhouette

Parameters:

view?: front|back|left|right|top|bottom|iso (default front); or camera?: {target: [x,y,z], yaw, pitch, distance, fov?} (mm, radians; fov 0 means parallel); bodies?: [world body names] (default visible bodies, named hidden bodies included); rows?: mask height in pixels (default 240, clamped to 16..1024) → tightly framed run-length mask, box_mm, mm_per_px, right/up, projection, body and triangle counts

Other commands: contact

Edit Contact Set

Automation details

Command ID: contact.edit

Parameters:

set: id|name; occurrences?; name?; suppressed?: bool; delete?: bool

List Contact Sets

Automation details

Command ID: contact.list

Parameters:

→ sets, enabled, all

Check Contact

Automation details

Command ID: contact.check

Parameters:

→ pairs in contact sets that pass through each other now

Other commands: motion

Play Motion Study

Read the components and joints guide.

Automation details

Command ID: motion.play

Parameters:

study: id|name; step (0…steps) — sets the joints to the study's values there (contact sets stop them); quiet?: bool (positions of only the occurrences that moved) → values: [{joint, values: [{name, value, unit}]}], positions, moved: whether any occurrence moved, unmoved: [{joint, name, reason}] (keyed joints that can move nothing, such as a chain joined to nothing grounded)

Export Motion Study

Read the components and joints guide.

Automation details

Command ID: motion.export

Parameters:

study; samples? (default steps + 1); path? (.json or .csv) → occurrence positions per step (the design is not changed)

Export Motion Animation

Read the components and joints guide.

Automation details

Command ID: motion.export_animation

Parameters:

study: id|name, or joint: id|name with from and to (degrees for angles, mm for distances, or expressions) and index?, or view: id|name (an exploded view, coming apart from the assembled placement) with back? (default false; true: back together too, exploded at the middle frame of an odd count); path: a .gif file, or a folder for PNG frames (frame-0001.png, frame-0002.png, …); samples? (frames, 2…1000; default the study's steps + 1, 100 for a joint, 41 for a view or 81 with back); width?, height? (16…4096 pixels, default 800 × 500); camera?: {target, yaw, pitch, roll?, distance, fov?, up?} (ui.camera's reply; fields left out keep the default view: view.apply's camera, or the home view framing the model, for a view both assembled and exploded); fps? (1…50, default 20); grid?, axes? (default true: the ground grid and the origin's axes) - draws the study as it plays, the joint as it is driven or the view as it explodes, with the headless renderer → path, format, frames, width, height, fps (GIF), bytes, renderer, stopped_at, stopped_by_loop, stopped_by_contact (the design is not changed, nor its placements)

Keep Motion Trace

Read the components and joints guide.

Automation details

Command ID: motion.trace.keep

Parameters:

occurrence: id|name, or an occurrence path [ids] (an instance inside sub-assemblies); point: [x,y,z] world point on it, where it is placed now; study: id|name, or joint: id|name with from and to (degrees for angles, mm for distances, or expressions) and index? (which value, default 0); samples? (2…500, default the study's steps + 1, or 100) - the point's path as the study plays or the joint is driven, closed loops following; name? (default Motion TraceN); auto_update?: bool (default true); point_ref?: joint origin snap - keeps the trace as a root 3D sketch spline. Associative curves follow mechanism and driving-input edits; false keeps a fixed curve. point_ref retains a geometry snap; otherwise point is retained in component coordinates → sketch, name, curves, points

Edit Motion Trace

Read the components and joints guide.

Automation details

Command ID: motion.trace.edit

Parameters:

sketch: id|name; joint? with from and to, or study?; index?; samples? (2…500); auto_update?: false to detach. Edits a saved associative trace's driving conditions in one undo step

Plot Motion Study

Read the components and joints guide.

Automation details

Command ID: motion.plot

Parameters:

study: id|name; joints?: [id|name] (default: every joint that moves); occurrence? and point? (a point of a part to follow, as motion.trace takes them); samples? (3…1000, default the study's steps + 1); duration?: seconds the whole study takes, 0.001 or more (velocities and accelerations then per second, else per step) → step: [the study step of each sample], time?: [s], joints: [{joint, name, index, dof, unit, value, velocity, acceleration, velocity_unit, acceleration_unit}] (degrees for angles, mm for distances; angles unwrapped), point?: {occurrence, position: [[x,y,z]…], velocity, acceleration (vectors), speed, acceleration_norm, unit, velocity_unit, acceleration_unit}, samples (taken), stopped_at, stopped_by_loop, stopped_by_contact. The study plays as motion.play plays it, each sample driven from the one before, on a copy (the design is not changed); velocities and accelerations are finite differences between samples (central, one-sided at the ends)

Motion Interference

Read the components and joints guide.

Automation details

Command ID: motion.interference

Parameters:

study: id|name; occurrences?: [ids or names] (two or more, checked against each other; default every occurrence), with against?: [ids or names] (then each of `occurrences` is checked only against these, such as an arm against the parts it must miss), or contact_sets?: true (the pairs of the design's contact sets); samples? (2…1000, default the study's steps + 1) → collisions: [{a, b, first_step, last_step, steps: [[from, to]…] (the step ranges where they overlap), depth_mm (how far into each other, the most at deepest_step), volume_mm3 (their overlap there; null when it was not cheap to work out)}], clear, pairs (checked), samples (taken), truncated (the work budget ran out; checked_to: the last step checked), stopped_at, stopped_by_loop. The study plays as motion.play plays it but contact sets do not stop it, on a copy (the design is not changed). Parts are tested at the samples only: one that passes wholly through another between two samples is missed

List Motion Studies

Read the components and joints guide.

Automation details

Command ID: motion.list

No parameter description is provided by the command registry.

Delete Motion Study

Read the components and joints guide.

Automation details

Command ID: motion.delete

Parameters:

study

Other commands: explode

Show Exploded View

Automation details

Command ID: explode.show

Parameters:

view: id|name (or none: back to the assembled placement) — shown only; the design keeps its placements

List Exploded Views

Automation details

Command ID: explode.list

No parameter description is provided by the command registry.

Delete Exploded View

Automation details

Command ID: explode.delete

Parameters:

view

Other commands: config

Configuration Column

Read the parameters and expressions guide.

Automation details

Command ID: config.column

Parameters:

param? | feature? | material? | appearance? (target name); delete?: bool

Configuration Row

Read the parameters and expressions guide.

Automation details

Command ID: config.row

Parameters:

name; from? (row to copy; default current values); values?: {column key: expression, suppression, material name, appearance name or Look object}; rename?; delete?: bool

Activate Configuration

Read the parameters and expressions guide.

Automation details

Command ID: config.activate

Parameters:

row: name — sets its parameter values and suppressions

Preview Configuration

Read the parameters and expressions guide.

Automation details

Command ID: config.preview

Parameters:

row: name — validates a rebuild without changing the design or history

Configuration Rule

Read the parameters and expressions guide.

Automation details

Command ID: config.rule

Parameters:

rule?: {id,name,enabled,condition,effect}; rules?: [rule…] (added or replaced together, then the rows checked once); id? + delete?; id? + index? (ordered move)

Configuration Rules

Read the parameters and expressions guide.

Automation details

Command ID: config.rules

Parameters:

ordered typed rules, rows and active state

Other commands: parts

Standard Parts

Automation details

Command ID: parts.library

Parameters:

family? → families (name, standard, sizes, lengths) and, with family, each size's dimensions (mm)

Insert Part

Automation details

Command ID: parts.insert

Parameters:

family (socket_head_cap_screw | hex_bolt | hex_nut | washer | set_screw | dowel_pin | bearing); size ("M6", or "608" for bearings); length? (mm; screws, bolts, set screws, pins; default a standard length near 2.5 d); at?: [x,y,z] on a hole's rim or wall (the part seats on the hole's face with a rigid joint) | point?: [x,y,z] with direction?: [x,y,z] (no joint); name?

Change Part Size

Automation details

Command ID: parts.resize

Parameters:

component: id|name of an inserted part; size?; length? — rebuilds it (joints keep it seated)

Other commands: body

Rename Body

Automation details

Command ID: body.rename

Parameters:

body: its name, name: the new name (features that use the body follow)

Other commands: browser

New Group

Read the window tour.

Automation details

Command ID: browser.group

Parameters:

folder: bodies|sketches|construction; component?: id (default 0); name?; items?: [keys] (they leave other groups)

Ungroup

Read the window tour.

Automation details

Command ID: browser.ungroup

Parameters:

group: id (its items go back to the folder)

Rename Group

Read the window tour.

Automation details

Command ID: browser.rename_group

Parameters:

group: id, name

Move Browser Items

Read the window tour.

Automation details

Command ID: browser.move

Parameters:

folder, component?, items: [keys]; group?: id (into it; omit to take them out of groups); before?: key (position in the group)

Order Browser Items

Read the window tour.

Automation details

Command ID: browser.order

Parameters:

folder, component?, order: [keys] (the folder's items in display order)

Show/Hide

Read the window tour.

Automation details

Command ID: browser.visibility

Parameters:

visible: bool; items?: [sketch id or name | body name | construction name | joint name | O|X|Y|Z|XY|XZ|YZ]; or joints?: [joint id or name] (their glyphs; they still constrain and move parts); or features?: [feature id or name] (the bodies they made; path?: [occurrence ids] for only that placement's); or folder?: bodies|sketches|construction|origin|joints|all (all of it; showing also shows its browser folders and groups, and `all` takes in the occurrence hides too); or tree_folders?: [browser folder or group key: c0/bodies, o:4/sketches, c0/g7, c0/joints, c0/canvases] (the folder or group itself: its items keep their own state); or paths?: [[occurrence ids]] (exact placements and descendants), isolate?: bool (requires paths and visible:true). Saved with the design and undone like any other change (the camera is not)

Expand All

Read the window tour.

Automation details

Command ID: browser.expand_all

Parameters:

path?: [occurrence ids] (that placement and its descendants); component?: id (that component's own folders); omit both for the whole tree, including folders that start closed (Origin, Named Views, Features). Display only: open/closed rows are not saved in the design and are not an undo step → open, open_by_default, closed_by_default

Collapse All

Read the window tour.

Automation details

Command ID: browser.collapse_all

Parameters:

path?: [occurrence ids]; component?: id; omit both for the whole tree (the design row stays open so the first level remains visible). Display only; not an undo step → open, open_by_default, closed_by_default

Other commands: document

Change Design Units

Automation details

Command ID: document.units

Parameters:

units: mm|cm|m|in|ft (display and unit-less parameters; values keep their meaning)

Design Properties

Automation details

Command ID: document.metadata

Parameters:

→ metadata: the design's metadata object as saved (other tools' keys too); properties: each of SolidCraft's design properties (project, part number, revision…), its text or null (absent, or not text)

Change Design Properties

Automation details

Command ID: document.metadata.set

Parameters:

key and value, or values: {key: value, …} (all or nothing, one undo step). SolidCraft's keys, the ones document.metadata's properties lists, take text ("" or null removes); another tool's data goes under its reverse-DNS key such as com.example.tool (an object; null removes) → metadata, changed: [keys]

Remove Design Property

Automation details

Command ID: document.metadata.remove

Parameters:

key, or keys: [keys] (any key, also one another tool wrote) → metadata, removed: [keys that were there]

Inspect Design

Automation details

Command ID: document.inspect

Parameters:

measure?: bool (include body measurements)

Design Revision

Automation details

Command ID: document.revision

Parameters:

→ document_id (this open design's id: kept while it stays open, another for each design started or opened), revision (moves whenever the design, what is hidden or a component's uncaptured position changes, never on a selection or a view; from one counter for the whole run, so it never repeats). Read-only

Other commands: view

New Named View

Read the window tour.

Automation details

Command ID: view.save

Parameters:

name?; camera: {target: [x,y,z], yaw, pitch, distance, fov?} (replaces a view of the same name)

Rename Named View

Read the window tour.

Automation details

Command ID: view.rename

Parameters:

view: name, name

Delete Named View

Read the window tour.

Automation details

Command ID: view.delete

Parameters:

view: name

List Named Views

Read the window tour.

Automation details

Command ID: view.list

No parameter description is provided by the command registry.

Restore Named View

Read the window tour.

Automation details

Command ID: view.apply

Parameters:

view?: front|back|top|bottom|left|right|iso|home (frames the model) | a named view's name; or camera?: {target: [x,y,z], yaw, pitch, distance, fov?, roll?} (radians, mm; roll defaults to 0, must be finite and is clamped to ±π; up is refused: the up axis comes from the design settings) → camera. The viewport (and the MCP screenshot) moves there. View state: not saved, not an undo step

Fit

Default keyboard shortcut: F6

Read the window tour.

Automation details

Command ID: view.fit

Parameters:

no parameters → frame the active canvas or selection; display only

Home view

Read the window tour.

Automation details

Command ID: view.home

Parameters:

no parameters → home orientation framing the active canvas; display only

Read the window tour.

Automation details

Command ID: view.tool

Parameters:

tool: orbit|pan|zoom|none → tool; latch a camera tool, none releases it

Continuous orbit

Read the window tour.

Automation details

Command ID: view.spin

Parameters:

on?: bool (omitted: toggle) → on?; continuous orbit until the next click or key

Visual style

Read the window tour.

Automation details

Command ID: view.visual_style

Parameters:

style: shaded_with_edges|shaded|wireframe|shaded_with_hidden_edges → style, index (0..3 in that order)

Grid

Read the window tour.

Automation details

Command ID: view.grid

Parameters:

on?: bool (omitted: toggle) → on?; show the viewport grid

Ground shadow

Read the window tour.

Automation details

Command ID: view.ground_shadow

Parameters:

on?: bool (omitted: toggle) → on?; show the ground shadow

Read the window tour.

Automation details

Command ID: view.navigation_bar

Parameters:

visible?: bool (omitted: toggle) → visible?; show the navigation bar (window setting)

Render Stage

Read the window tour.

Automation details

Command ID: view.render_stage

Parameters:

stage: look|light|frame|output → {stage}; per-document UI state, never edits or evaluates the design; headless validation only

Shots Strip

Command group: RENDER CAMERA › SHOTS

Read the window tour.

Automation details

Command ID: view.shots_strip

Parameters:

visible: bool → {visible}; Render Shots strip UI preference. Headless echo only, no document edits or undo

Workspace layout

Read the window tour.

Automation details

Command ID: view.layout

Parameters:

mode: floating|compact → validated workspace layout; display only, never opens a dialog

History layout

Read the window tour.

Automation details

Command ID: view.history_layout

Parameters:

width?: 1..1000000; dock?: bottom|left|under_browser; collapsed?: bool → validated layout request; display only, never opens a dialog

Graphics Preset

Read the window tour.

Automation details

Command ID: view.graphics_preset

Parameters:

preset: performance|quality → preset, enabled, display_quality, supersampling, supersampling_adaptive; Quality: AO, Fine, adaptive 2x SSAA; Performance: no AO, Normal, no SSAA

Ambient Occlusion

Read the window tour.

Automation details

Command ID: view.ambient_occlusion

Parameters:

enabled: bool → enabled; apply soft contact shading in the GPU viewport

Perspective view

Read the window tour.

Automation details

Command ID: view.perspective

Parameters:

enabled: bool → enabled; draw the view in perspective, or orthographic when false; a sketch being edited is always shown orthographic

Read the window tour.

Automation details

Command ID: view.navigate

Parameters:

camera: Camera; direction?: [x,y,z] in the camera's up-axis frame; or action: left|right|up|down|clockwise|counterclockwise|home|fit, degrees?: 0..180 (how far left|right|up|down turn; default 90); or motion: pan|orbit|zoom, delta?: [dx,dy] (pixels, each ±10000), free_orbit?: bool (orbit through poles, default false), viewport?: [width,height] (1..1000000, required for pan or pivot), pivot?: [x,y,z], factor?: 0.05..20 (required for zoom), anchor?: [x,y,z] → camera, fit, continuous?

Normal to Selection

Read the window tour.

Automation details

Command ID: view.normal_to

Parameters:

camera?: Camera (default: current session camera or home view) → camera; Look At the first selected planar face or plane, centered on the picked point; repeat while aligned to flip the side; preserves scale and projection

Front View

Default keyboard shortcut: Ctrl+1

Read the window tour.

Automation details

Command ID: view.front

Parameters:

camera?: Camera (default: current session camera or home view) → camera; turns to that standard view as the view cube does, keeping target, distance and projection

Back View

Default keyboard shortcut: Ctrl+2

Read the window tour.

Automation details

Command ID: view.back

Parameters:

camera?: Camera (default: current session camera or home view) → camera; turns to that standard view as the view cube does, keeping target, distance and projection

Left View

Default keyboard shortcut: Ctrl+3

Read the window tour.

Automation details

Command ID: view.left

Parameters:

camera?: Camera (default: current session camera or home view) → camera; turns to that standard view as the view cube does, keeping target, distance and projection

Right View

Default keyboard shortcut: Ctrl+4

Read the window tour.

Automation details

Command ID: view.right

Parameters:

camera?: Camera (default: current session camera or home view) → camera; turns to that standard view as the view cube does, keeping target, distance and projection

Top View

Default keyboard shortcut: Ctrl+5

Read the window tour.

Automation details

Command ID: view.top

Parameters:

camera?: Camera (default: current session camera or home view) → camera; turns to that standard view as the view cube does, keeping target, distance and projection

Bottom View

Default keyboard shortcut: Ctrl+6

Read the window tour.

Automation details

Command ID: view.bottom

Parameters:

camera?: Camera (default: current session camera or home view) → camera; turns to that standard view as the view cube does, keeping target, distance and projection

Isometric View

Default keyboard shortcut: Ctrl+7

Read the window tour.

Automation details

Command ID: view.isometric

Parameters:

camera?: Camera (default: current session camera or home view) → camera; turns to that standard view as the view cube does, keeping target, distance and projection

Other commands: selection

Delete

Automation details

Command ID: selection.delete

Parameters:

items?: [selection items]; components?, occurrences?, canvases?, joints?: [ids or names]; dry_run?: bool → deleted, deleted_joints, would_fail, skipped (one undo step)

Other commands: edit

Undo

Default keyboard shortcut: Ctrl+Z

Automation details

Command ID: edit.undo

No parameter description is provided by the command registry.

Redo

Default keyboard shortcut: Ctrl+Y

Automation details

Command ID: edit.redo

No parameter description is provided by the command registry.

Repeat Last Command

Default keyboard shortcut: Shift+R

Automation details

Command ID: edit.repeat

Parameters:

Starts the last tool or dialog started in the app again, with its defaults (a toolbar click, not a replay of its values). Only the app has a tool to start: called here it is refused, and changes nothing

Checkpoint

Automation details

Command ID: edit.checkpoint

Parameters:

→ {checkpoint: id}: remember the design, active sketch and undo history (restore with edit.restore_checkpoint)

Restore Checkpoint

Automation details

Command ID: edit.restore_checkpoint

Parameters:

checkpoint: id; forget?: bool (true = drop it without going back). Goes back to it, undo history included

Other commands: timeline

Rename

Automation details

Command ID: timeline.rename

Parameters:

feature: id|name, name (references to it follow)

New Feature Folder

Automation details

Command ID: timeline.group

Parameters:

name?; features?: [id|name]; parent?: folder id (features leave any other timeline folder)

Remove Feature Folders

Automation details

Command ID: timeline.ungroup

Parameters:

group: id | groups: [ids] (features remain in the timeline)

Rename Feature Folder

Automation details

Command ID: timeline.rename_group

Parameters:

group: id, name

Move Features to Folder

Automation details

Command ID: timeline.move_to_group

Parameters:

features?: [id|name], groups?: [ids], group?: id (omit or null to move to the timeline root)

Move Timeline Items

Automation details

Command ID: timeline.move_many

Parameters:

features?: [id|name], groups?: [folder ids], group?: folder id, position: insertion slot, active?: bool (true = the moved contents end up before the history marker, false = behind it; other features keep their state); atomically changes folder membership and moves all selected contents as one block

Move Timeline Marker

Automation details

Command ID: timeline.rollback

Parameters:

position: number of features to keep active, or "end" (omit = end)

Roll History Marker

Automation details

Command ID: timeline.roll_to

Parameters:

position: number of features to keep active, or "end" (omit = end) | feature: id|name (the marker goes right after it)

Reorder Feature

Automation details

Command ID: timeline.reorder

Parameters:

feature: id|name, position: its new index, active?: bool (true = it ends up before the history marker, false = behind it; other features keep their state); refused when a feature that worked would fail, unless allow_errors?: bool (default false): then made, and broken: [{feature, error}] lists the features it broke

Reorder Features

Automation details

Command ID: timeline.reorder_many

Parameters:

features: [id|name], position: insertion slot in the current history; selected features keep their relative order; active?: bool (as timeline.reorder's); refused when a feature that worked would fail, unless allow_errors?: bool (default false): then made, and broken: [{feature, error}] lists the features it broke

Edit Feature

Automation details

Command ID: timeline.redefine

Parameters:

feature: id|name, command: the feature's command id, params: its parameters (the feature is rebuilt in place)

Feature Dependents

Automation details

Command ID: timeline.dependents

Parameters:

feature: id|name → features deleted with it, and features that would fail without it

Suppress Feature

Automation details

Command ID: timeline.suppress

Parameters:

feature: id|name | features: [id|name] | groups: [timeline folder ids] (every feature in those folders and their nested folders; one undo step), suppressed?: bool (default toggles: several features are all suppressed unless all of them already are, then all are unsuppressed) → feature: id (or features: [ids]; groups: [ids] when given), suppressed

Edit Feature

Automation details

Command ID: timeline.edit

Parameters:

feature: id|name, set: {fields to change, merged into the feature's definition as timeline.inspect returns it, e.g. {"extent": {"distance": "30"}} (extrude), {"angle": "90 deg"} (revolve); a dotted key names a nested field ({"plane.distance": "8 mm"} = {"plane": {"distance": "8 mm"}}); expressions are text, or a number in mm or degrees} → recomputed: features rebuilt, restored: features whose earlier result for the same inputs was reused

Inspect Feature

Automation details

Command ID: timeline.inspect

Parameters:

feature: id|name → type, definition (the fields timeline.edit's set changes, with their current values), inputs: [{label, param, expression, unit}] (named inputs parameters.change can also set), error, warning

Copy Features

Automation details

Command ID: timeline.copy

Parameters:

features: [ids or names] (in timeline order on paste)

Paste Features

Automation details

Command ID: timeline.paste

Parameters:

translate?: [x,y,z] (moves the copies' geometry); component?: where the copies go (default: the active one), component_path?: its placement (default: the active one, else its only one); the copies go at the marker, each where its original is in the world (copies into their own component keep its coordinates)

Add Recorded Feature

Automation details

Command ID: timeline.add

Parameters:

feature: a feature as the design file and timeline.inspect hold it ({type, name?, id?, …}; the name is kept even when another feature has it, the id is kept and refused when another feature has it, so later steps can refer to them); params?: [{name, expression, unit?, comment?}] (the model parameters its sketch dimensions use); the feature goes at the marker → feature, name, error, warning

Export Command Script

Automation details

Command ID: timeline.export_script

Parameters:

path?: write the script to this file → script: {commands: [...]} that rebuilds the design (solidcraft-cli eval/run), steps, omitted: what the script leaves out (appearances, folders, views, configurations); components and assemblies are not supported yet

Other commands: select

Select

Read the window tour.

Automation details

Command ID: select.set

Parameters:

items: [{type: body|edge|face|feature|sketch_curve|sketch_point|profile, …}], add?: bool

Clear Selection

Read the window tour.

Automation details

Command ID: select.clear

No parameter description is provided by the command registry.

Other commands: parameters

List Parameters

Read the parameters and expressions guide.

Automation details

Command ID: parameters.list

Parameters:

favorites?: bool (only favourites), filter?: all|user|sketch|feature|favorites → parameters (name, expression, unit, value in its unit, source, feature/input, comment, favorite, uses, used_by, error) and cycles

Add User Parameter

Read the parameters and expressions guide.

Automation details

Command ID: parameters.add

Parameters:

name, expression, unit?: as parameters.change (text: a text parameter, its expression the text), comment?, favorite?: bool

Rename Parameter

Read the parameters and expressions guide.

Automation details

Command ID: parameters.rename

Parameters:

name, new_name (expressions, feature inputs and dimensions that use it follow)

Delete Parameter

Read the parameters and expressions guide.

Automation details

Command ID: parameters.delete

Parameters:

name (refused while something uses it; the error lists the users)

Favourite Parameter

Read the parameters and expressions guide.

Automation details

Command ID: parameters.favorite

Parameters:

name, favorite?: bool (default true)

Move Parameter

Read the parameters and expressions guide.

Automation details

Command ID: parameters.move

Parameters:

name, before | after: another user parameter; the user parameter is listed just before or after it

Comment Parameter

Read the parameters and expressions guide.

Automation details

Command ID: parameters.comment

Parameters:

name, comment

Parameter Users

Read the parameters and expressions guide.

Automation details

Command ID: parameters.users

Parameters:

name → users (parameters, feature inputs, dimensions) and the features it drives

Parameter Graph

Read the parameters and expressions guide.

Automation details

Command ID: parameters.graph

Parameters:

→ nodes, edges [user, used] (users include Feature:<name>), cycles, errors

Export Parameters

Read the parameters and expressions guide.

Automation details

Command ID: parameters.export

Parameters:

format?: csv|json (default csv, or from the path), path?: write to a file → text

Import Parameters

Read the parameters and expressions guide.

Automation details

Command ID: parameters.import

Parameters:

text: CSV (header with name, expression, unit?, comment?) or JSON [{name, expression, unit?, comment?}] | path; all or nothing

Complete Expression

Read the parameters and expressions guide.

Automation details

Command ID: parameters.complete

Parameters:

prefix?: the text before the cursor → word, suggestions [{text, kind: parameter|function|unit|constant, detail}]

Other commands: expr

Evaluate Expression

Read the parameters and expressions guide.

Automation details

Command ID: expr.evaluate

Parameters:

expression, kind?: length|angle|unitless (or unit?: mm|in|deg…; text: the text a text parameter would hold, as `text`) → ok, value (mm/rad), display_value, references, error

Other commands: file

New Design

Default keyboard shortcut: Ctrl+N

Read the import and export guide.

Automation details

Command ID: file.new

Parameters:

name?

Save

Default keyboard shortcut: Ctrl+S

Read the import and export guide.

Automation details

Command ID: file.save

Parameters:

path? (default: current file); format?: container|json (default: json for .json, otherwise container); compression?: fast|compact (default: fast); cache?: bool (the evaluated model, so the design opens without rebuilding; default: true); preview?: bool (saved display meshes, default: false); overwrite?: bool (replace the design's file even though another program or computer changed it since it was opened or saved; without it that save is refused)

Save As

Default keyboard shortcut: Ctrl+Shift+S

Read the import and export guide.

Automation details

Command ID: file.save_as

Parameters:

path; format?: container|json (default: json for .json, otherwise container); compression?: fast|compact (default: fast); cache?: bool (the evaluated model, so the design opens without rebuilding; default: true); preview?: bool (saved display meshes, default: false); overwrite?: bool (as file.save, when `path` is the design's own file)

Export

Read the import and export guide.

Automation details

Command ID: file.export

Parameters:

path; format?: stl|stla|obj|step|3mf|3mf-tagged|urdf|json (default from extension; 3mf-tagged: 3MF whose triangles carry their B-rep face, at full precision, for meshing and analysis tools; docs/formats/3mf-face-tags.md; urdf: the whole assembly as a robot, with STL meshes written next to it; docs/urdf.md); bodies?: [names] (JSON and URDF export the complete design); urdf only: mesh_prefix? (before each mesh file name, e.g. package://robot/meshes/), effort? (default 1000), velocity? (default 10); quality?: standard|fine|finest (STL, OBJ and 3MF: how closely the mesh follows curved faces, a chord tolerance of 2e-4, 5e-5 or 1e-5 of each body's size; default standard)

Save As Mesh

Command group: INSERT › FILES

Read the import and export guide.

Automation details

Command ID: file.save_mesh

Parameters:

path; format?: stl|3mf|3mf-tagged (default from the extension, else stl; 3mf-tagged: docs/formats/3mf-face-tags.md); bodies?: [names] (default: all); ascii?: bool (STL); slicer?: id or name from file.slicers, the program path it lists, or a program the user added under Custom… (send the saved file there, through the same steps as file.send_to_slicer: a slicer that has to be started first is waited for; may be deprecated later in favour of file.send_to_slicer or a Send to App workflow, kept for scripts); single_instance?: bool (default true; see file.send_to_slicer); quality?: standard|fine|finest (STL, OBJ and 3MF: how closely the mesh follows curved faces, a chord tolerance of 2e-4, 5e-5 or 1e-5 of each body's size; default standard)

Send to Slicer

Command group: INSERT › FILES

Read the import and export guide.

Automation details

Command ID: file.send_to_slicer

Parameters:

slicer: id or name from file.slicers, or a program the user added under Custom…; bodies?: [names] (default: the selected bodies); wait?: block|return|no (default block: a slicer that drops a file at a cold start is started alone and the call waits up to 10 s for it to be ready, then sends; return: start it and answer {starting}; no: send now); single_instance?: bool (default true: PrusaSlicer, SuperSlicer and Cura load the file in the window that is open); format?: 3mf|stl|3mf-tagged (default 3mf, in millimetres; STL if that can't be written) → saves the bodies in this user's slicer folder and opens the file in the slicer. The file name stays the same for the same design and bodies, so sending again replaces it (use the slicer's Reload from disk)

Open with EasyPrint

Read the import and export guide.

Automation details

Command ID: file.open_in_easyprint

Parameters:

consent: bool (required: true only once the user has agreed to upload the model to Printables' servers; it stays there for 30 minutes and opening it needs a Printables sign-in); bodies?: [names] (default: the selected bodies); format?: 3mf|stl (default 3mf, in millimetres) → uploads the bodies to EasyPrint, Printables' slicer in the browser, and opens it in the browser. 100 MB at most. Works in the desktop app and the browser build; the CLI has no way to upload yet

Installed Slicers

Read the import and export guide.

Automation details

Command ID: file.slicers

Parameters:

→ the slicers found on this machine: [{id, name, program, icon?}]; pass an id, a name or the program path as file.send_to_slicer's or file.save_mesh's `slicer`

Export Current View as DXF

Read the import and export guide.

Automation details

Command ID: file.export_view_dxf

Parameters:

camera: Camera (current view); hidden?: omit|dashed (default omit); tolerance?: 0.0001..1 mm (curve chord tolerance, default 0.01); path?: .dxf file (else returns dxf text). Visible placed bodies and shown sketches' profile curves (no construction geometry, points, dimensions or constraints); 2D LINE/LWPOLYLINE entities on VISIBLE/HIDDEN layers (sketch curves on SKETCH), mm; finished sketches are hidden behind bodies, the active sketch is drawn on top; perspective projected onto the camera target plane; no viewport crop or overlays.

Other commands: doc

Open

Default keyboard shortcut: Ctrl+O

Read the import and export guide.

Automation details

Command ID: doc.open

Parameters:

path: .solidcraft design, .dxf/.svg drawing (opens as a new, unsaved design with an XY sketch, using sketch.insert_dxf/sketch.insert_svg units and defaults), or a .step/.stp/.igs/.fcstd/.3dm/.3mf/.stl/.obj/.glb/.gltf file (STEP, IGES, FreeCAD, Rhino, 3MF, STL, OBJ or glTF; opens as a new design holding the file as a component named after it, as file.insert_step and file.insert_mesh make); up?: z|y for a STEP, IGES, FreeCAD, Rhino or glTF file (see file.insert_step and file.insert_mesh); names?: auto|solid|product|instance for a STEP, IGES, FreeCAD or Rhino file (see file.insert_step); read_only?: bool (a design: saving to its own file is refused, file.save_as keeps the changes elsewhere) → open_elsewhere: {host, user, app, opened} when another SolidCraft has the design open (its lock file is fresh)

Recoverable Designs

Read the import and export guide.

Automation details

Command ID: doc.recovery_list

Parameters:

dir? (default: the recovery folder) → designs autosaved by apps that crashed or closed with unsaved changes

Recover Design

Read the import and export guide.

Automation details

Command ID: doc.recover

Parameters:

id (from doc.recovery_list); dir?; discard?: bool (delete the entry once open) — opens it with its file path, unsaved

Discard Recovered Design

Read the import and export guide.

Automation details

Command ID: doc.recovery_discard

Parameters:

id, or all: true; dir?

Other commands: model

List Edges

Automation details

Command ID: model.edges

Parameters:

body: name

List Faces

Automation details

Command ID: model.faces

Parameters:

body: name → per face: index, name (what face.delete, sheet.convert `face`, solid.shell … take in place of a point), exact, area, centroid (not always on the face), plane_normal, point (a point on the face that picks it), cylinder? ({origin, axis, radius} of a cylindrical face), sheet_face? (a folded sheet's face: `sheet:<body>:<panel>:<side>`, panel base or a flange's tag F<feature>.<k>, side top | bottom | rim.<edge> | bend.inner | bend.outer; taken wherever a face name is, and it holds while sizes change and flanges come and go)

List Threads

Automation details

Command ID: model.threads

No parameter description is provided by the command registry.

Other commands: appearance

Appearance Library

Automation details

Command ID: appearance.library

Parameters:

→ 20 legacy scalar appearances, six opaque PBR finishes and 40 starter recipes with IDs, categories, provenance, requirements and availability; six starter glass recipes are unavailable

List Appearances

Automation details

Command ID: appearance.list

Parameters:

body?: name → assigned appearances; with body, its resolved look and its faces' (face index, look)

Paint Appearance

Command group: RENDER APPEARANCE › APPEARANCE

Automation details

Command ID: appearance.paint

Parameters:

No supported parameters. Always refuses without changing the design or history.

Pick Up Appearance

Command group: RENDER APPEARANCE › APPEARANCE

Automation details

Command ID: appearance.pick_up

Parameters:

No supported parameters. Always refuses without changing the design or history.

Replace Appearance

Command group: RENDER APPEARANCE › APPEARANCE

Automation details

Command ID: appearance.replace

Parameters:

No supported parameters. Always refuses without changing the design or history.

Other commands: material

List Materials

Automation details

Command ID: material.list

Parameters:

→ built-in and design-owned materials (user: true, look, optional physical_card/physical_validation/density_comparison). Read-only; candidate engineering records do not certify sources or supply a solver

New Physical Material

Automation details

Command ID: material.create

Parameters:

name (not a built-in material's); density_g_cm3: (0, 1000]; appearance?: library name (appearance.library) | color?: "#rrggbb" or [r, g, b] (0–255), opacity? (0–1), pbr?: {metallic:0..1, roughness:0.045..1, dielectric_ior:1..3} (opaque only, needs color/appearance): the default look. A named appearance keeps its preset response when pbr is omitted; pbr: null selects scalar shading. Optical edits do not change density. physical_card?: validated SI candidate record (null/omitted means unknown); card density never changes assigned density. Assign it with material.assign

Edit Physical Material

Automation details

Command ID: material.edit

Parameters:

material: a material defined in this design; name? (bodies and configuration cells follow); density_g_cm3?; appearance? | color?, opacity?, pbr? (as material.create; color: null clears the look). physical_card?: validated SI candidate record (omitted retains, null clears). Omitted appearance/color retains the entire current look

Inspect Physical Material

Automation details

Command ID: material.inspect

Parameters:

material: built-in or design-owned name. Returns assigned density, default appearance, optional physical_card, validation and density comparison. Read-only; missing engineering data remains unknown and card density does not change mass

Delete Physical Material

Automation details

Command ID: material.delete

Parameters:

material: a material defined in this design; replace?: material for the bodies and configuration cells that use it (without it, a material in use is refused)

Validate Physical Material Data

Automation details

Command ID: material.properties.validate

Parameters:

card: schema_version 1 engineering material card in SI units. Returns numerical consistency, derived isotropic moduli, missing conditions and sources needing review. Read-only; does not assign/save properties or provide an analysis solver. See docs/physical-material-cards.md

Directional Elastic Modulus

Automation details

Command ID: material.properties.directional

Parameters:

card: schema_version 1 engineering material card; direction: three finite nonzero-vector components in the card's material-local axes. Returns normalized direction, Young modulus in Pa and source/condition review. Read-only constitutive query; no structural solver, persistence or body-axis assignment. See docs/physical-material-cards.md

Other commands: engine

List Commands

Automation details

Command ID: engine.commands

No parameter description is provided by the command registry.

Describe Command

Automation details

Command ID: engine.describe

Parameters:

command: a command id. Returns {id, label, params, input, output} (and param_warnings in the warn parameter-check mode): the command's parameter documentation and, once the command has a typed contract, the JSON Schemas (2020-12) of its parameters and of a successful result (null otherwise). Read-only.

Other commands: library

Inspect Local Library

Automation details

Command ID: library.inspect

Parameters:

path: v1/v2 library JSON; returns validated catalog and exact entry revisions, without changing the design

Export Design Library

Automation details

Command ID: library.export

Parameters:

path: .json; id? (default user.local), name?, provenance?, overwrite? false, format? solidcraft-library/2 (default) | solidcraft-library/1 (refuses PBR/cards). Copies assigned looks and design-local physical definitions; never changes the design

Apply Local Library Entry

Automation details

Command ID: library.apply

Parameters:

path, entry: qualified ID, revision: exact content SHA-256; targets?: {bodies?, faces?: [{body,point}], components?}; name?: physical material name on import. Copies values in one undo step; material conflicts are explicit

Other commands: diagnostics

Crash Reports

Automation details

Command ID: diagnostics.crash_reports

Parameters:

limit?: number (default 20). Lists this computer's crash reports, newest first: {dir, reports: [{id, kind, time, message, command, count, version, path, replayable}]}. kind: command_panic | panic | kernel_panic_recovered | unclean_exit. Read one with diagnostics.crash_report; reproduce it with `solidcraft-cli crashes replay <id>`

Crash Report

Automation details

Command ID: diagnostics.crash_report

Parameters:

id: report id. The whole report: message, location, backtrace, app version and commit, system, the command that crashed and the recent ones, notes, and design_path / replay_path when the crash can be replayed (`solidcraft-cli run <replay_path> --in <design_path>`)

Delete Crash Reports

Automation details

Command ID: diagnostics.crash_reports.clear

Parameters:

id?: one report (default: all). Returns {deleted}

Crash Test

Automation details

Command ID: diagnostics.crash_test

Parameters:

mode: panic | kernel | abort. Checks that crash reports work: panic = an internal error in this command (caught; the design is unchanged), kernel = one inside the geometry kernel (caught), abort = the app ends at once (reported at the next start). Only when the SOLIDCRAFT_CRASH_TEST environment variable is set

Other commands: render

Layered Surface Aging

Automation details

Command ID: render.aging.describe

Parameters:

Empty object. Read-only original Rust/patina/dust/grime/scratch/chip/fading presets and exact GPU aging contract. UI activation opens the shared Aging tab; edits remain a saved render draft, never engineering geometry or material-property mutation.

Lens and Creative Effects

Automation details

Command ID: render.effects.describe

Parameters:

Empty object. Read-only original photographic/creative filter defaults and constraints. UI activation opens shared Effects controls. Saved finishing and exact-master regrading preserve raw EXR bytes; no physical lens or branded-film calibration is implied.

Save Optical Binding

Automation details

Command ID: render.optics.bind

Parameters:

name: GPU setup; set?: complete numerical setup patch; body_index and body_name: exact captured target; expected_revision; optics:{ior,absorption_per_mm:[r,g,b],boundary:closed_mesh|closed_box|thin_sheet,thickness_mm,shadow_transmission,subsurface?:{scattering_per_mm,anisotropy}}; replace?:false. Stores stable definition/feature/occurrence identity in one undo without modifying engineering geometry/materials. Nested media require separate job.options.nested_media and producer certification. Unresolved or incompatible targets refuse atomically.

Remove Optical Binding

Automation details

Command ID: render.optics.unbind

Parameters:

name: saved setup; target: exact saved definition/feature/component/occurrence_path; expected_revision. Removes only that optical assignment in one undo without a device or file access.

Regrade Linear Master

Automation details

Command ID: render.result.regrade

Parameters:

job: exact completed JobId; presentation: {exposure_ev?,tone_map?,finishing?,backdrop?,background?,transparent_background?}. Queues cancellable nondestructive PNG presentation from that retained native FLOAT32 master, not from PNG. Captured geometry/camera/lighting and source EXR remain unchanged; no path tracing, denoising, external EXR import or automatic file writes. Returns a distinct job with source identity and original-master digest. Existing frame retention and export rules still apply.

Set Render Camera

Automation details

Command ID: render.camera.set

Parameters:

camera: complete Render Camera snapshot (target, yaw, pitch, distance, fov; roll defaults to 0 and up to z). Validates the same finite mm/radian bounds as saved render intent, preserves explicit roll/up and changes only transient view state. No model evaluation, setup save, renderer, dirty flag or undo step. Design view.apply retains its separate up-axis policy.

Inspect Render Camera

Automation details

Command ID: render.camera.get

Parameters:

No parameters. Returns the explicitly defined current view camera, or null if the session has no camera override. No camera is fitted, no job is started and no saved setup or engineering document is changed.

Frame Render Subject

Automation details

Command ID: render.camera.fit

Parameters:

No parameters. Fits the current camera to the visible product bounds through the shared Camera::fit contract; changes only view state, not a saved setup, rendering job, stage or engineering geometry.

Review Native Studio

Automation details

Command ID: render.preset.resolve

Parameters:

id: NATIVE-STUDIO-001..025; name; set?: typed GPU setup patch; expected_revision?:u64. Resolves original built-in HDR/rig/passive ground with conservative geometry clearance, returns all replacements and preserved fields without mutation. Unbound SCENE-* concepts are not accepted.

Apply Native Studio

Automation details

Command ID: render.preset.apply

Parameters:

Same reviewed input as render.preset.resolve, expected_revision required, replace_lighting_and_environment:true and replace_stage:true when an existing stage would change. Re-resolves the complete candidate and publishes one undo or no mutation; camera, optical bindings, geometry and engineering materials are preserved.

Review Fixed Sampling Budget

Automation details

Command ID: render.quality.prepare

Parameters:

id: Q-*; variant:fixed_samples_png; acknowledge_omissions:true. Read-only bounded GPU still-budget projection, not full adaptive/convergence/linear-master quality acceptance. Returns dimensions/samples/depth/seed/denoise and explicit omissions. Never switches executor or mutates a shot.

Duplicate Render Shot

Automation details

Command ID: render.shot.duplicate

Parameters:

name, new_name, expected_revision:u64. Copies exact saved setup and resource references in one undo. Existing destinations refuse; captured jobs and camera navigation are unchanged.

Rename Render Shot

Automation details

Command ID: render.shot.rename

Parameters:

name, new_name, expected_revision:u64. Renames exact saved setup in one undo; an existing destination or stale review refuses.

Remove Render Shot

Automation details

Command ID: render.shot.remove

Parameters:

name, expected_revision:u64. Removes only that saved setup in one undo; retains resources, geometry and captured results.

Inspect Original Surface Map

Automation details

Command ID: render.library.preview

Parameters:

id: SURF-*. Returns bounded hash-verified original base-color PNG bytes and source-map fidelity label, not a rendered material thumbnail. No external paths, rendering or document edits.

Prepare Physical Reference

Automation details

Command ID: render.library.physical.prepare

Parameters:

id: named built-in physical profile, name: proposed new material label, acknowledge_reference:true. Read-only loss-aware creation plan using native ValidatedCard admission and one point density; returns source receipts, extended fields and omissions. Does not execute material.create, assign bodies or infer effective-part physics.

Save Render Ground

Automation details

Command ID: render.stage.ground

Parameters:

name: typed raytrace setup, set?: setup patch, margin_fraction?:0.25, gap_mm?:0.1, reflectance_linear?:[0.18,0.18,0.18], replace_stage?:false. Fits one finite passive ground below the visible product once and saves its physical transforms in one undo. Product AABB separation is rechecked on every render.

Save Physical Render Background

Automation details

Command ID: render.stage.backdrop

Parameters:

name: typed raytrace setup, set?: setup patch, kind: floor_wall or cyclorama, reflectance_linear?: [0.18,0.18,0.18], expected_revision: reviewed revision, replace_stage?:false. Fits a finite floor/wall or a 24-strip polygonal cyclorama behind the visible subject using the saved camera azimuth; world +Z up and a minimum one-mm stage envelope. Preserves subject geometry, lighting, output, pose and engineering materials; one undo and rechecked product separation. Not an infinite/analytically smooth/terrain background.

Remove Render Stage

Automation details

Command ID: render.stage.clear

Parameters:

name: setup, set?: setup patch. Removes saved render-only panels atomically; CAD geometry and lighting are unchanged.

Save Surface Binding

Automation details

Command ID: render.library.surface.bind

Parameters:

name: GPU setup; set?: setup patch; surface: same input as render.library.surface.prepare; replace?: false. Pins exact source hashes and definition/feature/occurrence identity with local-mm mapping in one undo. No paths, mesh ordinals or physical material changes.

Remove Surface Binding

Automation details

Command ID: render.library.surface.unbind

Parameters:

name: setup, target: saved definition/feature/component/occurrence_path, set?: setup patch. Removes only that explicit binding in one undo; no device or current geometry required.

Retain Displayed Render Result

Automation details

Command ID: render.result.pin

Parameters:

job: completed JobId, or null to release the displayed-result pin. Retains at most one completed result independently of a newer completion; preserves exact export bytes and original host memory accounting. No design/undo change; preview or foreign jobs refuse.

Find Render Library Targets

Automation details

Command ID: render.library.targets

Parameters:

query?: exact-name substring; offset?:0; limit?:128 (1..128). Returns a bounded page of captured body ordinals/names, revision and scene bounds. Settles the model through ordinary command handling; never returns a large mesh payload.

Browse Render Library

Automation details

Command ID: render.library.list

Parameters:

kind?: surfaces, selene_appearances, hdr, rigs, scenes, materials, lighting, environments, quality, native_scenes, selene_shots or capabilities; query?: bounded search; availability?: all/usable/specification/blocked; offset?:0; limit?:48 (1..128). Returns source status and explicit implemented projections separately. No device, file IO or design change.

Inspect Render Library Resource

Automation details

Command ID: render.library.describe

Parameters:

kind, id: exact authored resource. Returns original specification, runtime projection variants and explicit omissions. A concept is not an executable preset.

Apply Library Opaque Appearance

Automation details

Command ID: render.library.appearance.apply

Parameters:

id: SURF-* or SELENE-AP-*; variant: uniform_opaque (required); bodies: 1..256 exact body names. Applies the original scalar baseline through ordinary appearance assignment in one undo, preserving physical properties. Spatial maps and advanced target effects are explicitly excluded.

Apply Built-in HDR Environment

Automation details

Command ID: render.library.environment.apply

Parameters:

id: HDR-*; name: saved setup; set?: typed CPU/GPU setup patch; rotation_rad?: authored rotation (native origin offset is explicit in the reply); intensity?:1; samples?:16 for CPU; replace_environment?:false. Hash-verifies and embeds original bytes, saves one atomic undo without external files or a render device. An HDR-owned sun cannot duplicate an analytic sun.

Prepare Authored Surface Maps

Automation details

Command ID: render.library.surface.prepare

Parameters:

id: SURF-*; body_index and body_name from render.scene; origin?:[0,0,0]; plane?:xy/yz/zx; scale?:1. Returns an explicit GPU planar map binding with source hashes, original millimetre scale, image-up normal orientation and absolute base-color semantics. No document change; height/displacement and true anisotropy are not included.

Prepare Authored Studio Lights

Automation details

Command ID: render.library.studio.prepare

Parameters:

id: RIG-*; variant: complete for emitter-only rigs, emitters_only for rigs with passive cards; center_mm and subject_extent_mm required. Converts exact rectangular half-edges and solar direction/radius to GPU lighting. Blocked calibration and external-sun rigs refuse. Returns a geometry-clearance review requirement; does not create cards or modify the scene.

Apply Authored Studio Lights

Automation details

Command ID: render.library.studio.apply

Parameters:

rig: render.library.studio.prepare parameters; name; set?: typed GPU setup patch; replace_lighting_and_environment:true required. Saves the explicit rig projection in one undo, removing prior lighting/environment only with that confirmation. Subject clearance still needs review; passive cards are never silently omitted.

Inspect HDR Source

Automation details

Command ID: render.hdr.inspect

Parameters:

path: scoped Radiance HDR file; validates the complete bounded source and returns sha256, width, height, encoded_bytes and primaries without saving or rendering

Save Render Settings with HDR

Automation details

Command ID: render.settings.capture_hdr

Parameters:

name, set: typed CPU/GPU setup patch with hdr/environment unset; path: scoped HDR; expected_sha256?: digest returned by render.hdr.inspect (changed sources refuse); rotation_rad?:0, intensity?:1; samples?:1/4/16/64 for CPU only (default16); assume_linear_srgb?:false for GPU only. Captures immutable bytes and saves resource plus setup atomically in one undo, without a host; returns name/setup/resource metadata, never source bytes

Check Render Request

Automation details

Command ID: render.preflight

Parameters:

setup?: saved name OR settings?: full RenderSetup. A typed job selects raster/cpu_raytrace/gpu_path and its numerical options plus embedded HDR before dispatch; only replace may accompany it. Without job, the legacy runtime controls below remain available. See docs/render-settings.md. integrator?: raster (default) or raytrace; progressive?: false (registered GPU path, CPU integrator/LED options are mutually exclusive); samples?: 1..4096; max_depth?: 1..16; seed?: u32 for progressive; raytrace?: bounded runtime progressive/primary_samples/lights/punctual_lights/area_lights/area_samples/seed/exposure_ev/shadows/reflections/anisotropic_faces/emissions/surface_effects/dielectrics/environment options, only with raytrace. CPU raytrace.budget?: compact (legacy default), studio or workstation; see docs/render-cpu-resource-profiles.md for explicit image/geometry/memory/work limits. CPU raytrace.progressive?: {samples_per_pixel:1..profile limit, seed:u32}; requires primary_samples:1 and selected reflections.samples:1; no area/LED, anisotropy or dielectrics in this initial mode. See docs/render-cpu-progressive.md; environment?: {path: scoped HDR, expected_sha256?: inspected digest, rotation_radians: 0, intensity: 1, samples: 16} OR {resource: saved HDR digest, rotation_radians, intensity, samples}; embedded resources cannot combine with path/hash; explicit sRGB/D65 HDR primaries required. Opaque CPU preview with selected mirror/rough-specular reflections and certified planar anisotropy. HDR with rough reflections or anisotropy requires fully metallic selected bodies and all effective faces; unsupported combinations refuse. No MIS or GI. CPU runtime dielectrics support only certified thin_sheet/closed_box boundaries with explicit IOR and Beer absorption; see docs/render-raytrace-dielectrics.md. CPU emissions are visible radiance only; surface_effects change roughness/shading normals without geometry changes. led_strip?: continuous world-mm LED rectangle recipe; led_samples?: 1/4/16/64 for the whole strip, default16. At most8directional+8punctual+4rectangle/LED sources; shared area N. See docs/render-light-union.md. transparent_background?: false; replace?: false. With progressive:true, raytrace instead accepts GPU dielectrics/clear_coats/textures; environment instead accepts tagged hdr/embedded_hdr/sky with rotation_rad/intensity; file hdr supports expected_sha256, embedded_hdr uses a document resource digest. See docs/render-hdr-resources.md. GPU lens, studio lighting, tone_map, denoise, bounded finishing/backdrop and linear_exr retention are also available. GPU adaptive?: {pilot_samples:16..256,min_samples:16..samples,relative_error:0..1,absolute_error:0.000001..1000000,coverage_error:0.001..0.25} allocates independent production budgets; pilots are discarded, not a certified error guarantee. transmission_samples?:1|2|4 stratifies the first Fresnel branch with extra path cost. volume?:{min_mm:[x,y,z],max_mm:[x,y,z],extinction_per_mm:0..1000,scattering_albedo:[r,g,b],anisotropy:-0.95..0.95} is one finite homogeneous world-mm medium; active media require explicit lighting/environment and refuse glass, denoise and multiple transmission strata. These fields also persist in GPU job.options. See docs/render-materials/TRANSPORT-MASTER-BATCH-2026-10-23.md; see docs/render-transmission.md, render-environment.md, render-runtime-textures.md, render-thin-lens.md, render-studio-lighting.md and render-denoise.md. Optional CPU raytracing requires a raytrace-cpu build and native host, checked before scene capture. Stale geometry is rejected. See docs/render-jobs.md

Render Image

Command group: RENDER › IMAGE

Automation details

Command ID: render.start

Parameters:

Same request as render.preflight. Captures an immutable product scene and queues a bounded image job. Returns its session-scoped job identity, captured scene_generation and progress. Does not change the design. See docs/render-jobs.md

Render Progress

Automation details

Command ID: render.status

Parameters:

job: {session, serial, generation}. Non-blocking progress, error, optional CPU preview metadata {frame_sequence,samples_per_pixel,frame}, and completed frame metadata, optional sampling allocation/work counts and retained-master presentation provenance; no image bytes and no rendering in this call. Preview is separate from the exportable final image.

Cancel Render

Automation details

Command ID: render.cancel

Parameters:

job: {session, serial, generation}. Requests cooperative cancellation; completed jobs remain completed. Late cancelled frames cannot be published.

Export Render Image

Automation details

Command ID: render.export

Parameters:

job: {session, serial, generation}, path: destination matching format?: png (default) or exr, overwrite?: false. EXR requires an opt-in raw linear master retained by that completed GPU job; never converts PNG pixels. Exports a retained completed image atomically; an existing destination is preserved on failure. See docs/render-jobs.md

Render Backends

Automation details

Command ID: render.backends

Parameters:

No parameters. Returns {schema_version: 1, default_backend: builtin, backends: [{id, label, availability, executors: [{id, availability, profiles, limits, scratch}]}]}. Metadata only; does not start rendering or probe a GPU. See docs/render-backends.md

Render Settings

Automation details

Command ID: render.settings.get

Parameters:

name?: saved setup. Without name returns {setups, defaults}; with name returns {name, setup}. Does not evaluate the model or apply a camera. See docs/render-settings.md

Save Render Settings

Automation details

Command ID: render.settings.set

Parameters:

name: setup name, set: object of fields to replace (backend, mode, camera, width, height, format, exposure_ev, environment_rotation, environment_intensity, background, job, surfaces, stage). job?: typed active raster/cpu_raytrace/gpu_path configuration with optional validated embedded HDR reference; omitted preserves, null clears, object replaces the complete job. Creates from defaults and saves without a host, validates atomically, one undo step; identical edits are no-ops. See docs/render-settings.md

Inspect Render Scene

Command group: RENDER › SCENE

Automation details

Command ID: render.scene

Parameters:

No parameters. Authoritative product-scene metadata, without modelling overlays or mesh payloads. Explicitly settles stale geometry; does not render an image. See docs/render-workspace.md

Apply Render Camera

Automation details

Command ID: render.settings.apply

Parameters:

name: saved setup. Applies its existing Camera snapshot including roll/up as view state, without modifying the document or starting a render.

Solo Light

Command group: RENDER SCENE › LIGHTS

Automation details

Command ID: render.lights.solo

Parameters:

No supported parameters. Always refuses without changing the design or history.

Compare Images

Command group: RENDER › RESULT

Automation details

Command ID: render.compare

Parameters:

No supported parameters. Always refuses without changing the design or history.

Render All Shots

Command group: RENDER › BATCH

Automation details

Command ID: render.batch

Parameters:

No supported parameters. Always refuses without changing the design or history.