{
 "source": "src/commands/catalog/commands.json",
 "commands": [
  {
   "id": "app.new_document",
   "name": {
    "en": "New document"
   },
   "python": "yonta.new_document",
   "parameters": [
    "name?",
    "body?"
   ],
   "summary": {
    "en": "Create a new document and make it active."
   },
   "example": "doc = yonta.new_document(\"Bracket\")"
  },
  {
   "id": "app.open_document",
   "name": {
    "en": "Open document"
   },
   "python": "yonta.open_document",
   "parameters": [
    "path",
    "name?",
    "background?",
    "copy?"
   ],
   "summary": {
    "en": "Open a .yonta file as a new document."
   },
   "example": "doc = yonta.open_document(\"bracket.yonta\")"
  },
  {
   "id": "app.close_document",
   "name": {
    "en": "Close document"
   },
   "python": "yonta.close_document",
   "parameters": [
    "document?"
   ],
   "summary": {
    "en": "Close a document without saving."
   },
   "example": "yonta.close_document(doc)"
  },
  {
   "id": "app.set_active_document",
   "name": {
    "en": "Switch document"
   },
   "python": "yonta.set_active_document",
   "parameters": [
    "document"
   ],
   "summary": {
    "en": "Make an open document the active one."
   },
   "example": "yonta.set_active_document(doc)"
  },
  {
   "id": "doc.add_object",
   "name": {
    "en": "Add object"
   },
   "python": "Document.add_object",
   "parameters": [
    "document?",
    "type",
    "name?"
   ],
   "summary": {
    "en": "Add an object of a registered type."
   },
   "example": "sketch = doc.add_object(\"yonta.sketch.sketch\")"
  },
  {
   "id": "doc.remove_object",
   "name": {
    "en": "Remove object"
   },
   "python": "Document.remove_object",
   "parameters": [
    "document?",
    "object"
   ],
   "summary": {
    "en": "Remove an object."
   },
   "example": "doc.remove_object(body)"
  },
  {
   "id": "doc.set_visible",
   "name": {
    "en": "Set visible"
   },
   "python": "Document.set_visible",
   "parameters": [
    "document?",
    "objects",
    "visible"
   ],
   "summary": {
    "en": "Show or hide objects in the 3D view: one undo step, saved with the document, no recompute."
   },
   "example": "doc.set_visible([body], False)"
  },
  {
   "id": "doc.set_suppressed",
   "name": {
    "en": "Suppress"
   },
   "python": "Document.set_suppressed",
   "parameters": [
    "document?",
    "objects",
    "suppressed?"
   ],
   "summary": {
    "en": "Suppress objects: they are not computed, each passing its base's solid through; or bring them back."
   },
   "example": "doc.set_suppressed([body])"
  },
  {
   "id": "doc.set_rollback",
   "name": {
    "en": "Rollback"
   },
   "python": "Document.rollback",
   "parameters": [
    "document?",
    "object?"
   ],
   "summary": {
    "en": "Roll the model back to an object, or forward to the end: what follows is not computed."
   },
   "example": "doc.rollback()"
  },
  {
   "id": "doc.move_object",
   "name": {
    "en": "Move in tree"
   },
   "python": "Document.move_object",
   "parameters": [
    "document?",
    "object",
    "before?"
   ],
   "summary": {
    "en": "Move an object to another place in the model tree; a feature takes its new place in the solid chain."
   },
   "example": "doc.move_object(body)"
  },
  {
   "id": "doc.rename",
   "name": {
    "en": "Rename"
   },
   "python": "Document.rename",
   "parameters": [
    "document?",
    "object",
    "name"
   ],
   "summary": {
    "en": "Give an object another name; links to it keep working."
   },
   "example": "doc.rename(body, \"Base\")"
  },
  {
   "id": "doc.set_label",
   "name": {
    "en": "Set label"
   },
   "python": "Document.set_label",
   "parameters": [
    "document?",
    "object",
    "label"
   ],
   "summary": {
    "en": "Set the name the window shows for an object; its name in Python and the file stays."
   },
   "example": "doc.set_label(body, \"Base plate\")"
  },
  {
   "id": "doc.set_property",
   "name": {
    "en": "Set property"
   },
   "python": "Document.set_property",
   "parameters": [
    "document?",
    "object",
    "property",
    "value"
   ],
   "summary": {
    "en": "Set a property of an object."
   },
   "example": "doc.set_property(body, \"Length\", 10.0)"
  },
  {
   "id": "doc.add_parameter",
   "name": {
    "en": "Add parameter"
   },
   "python": "Document.add_parameter",
   "parameters": [
    "document?",
    "name",
    "expression",
    "quantity?",
    "group?",
    "minimum?",
    "maximum?",
    "comment?",
    "before?"
   ],
   "summary": {
    "en": "Add a parameter to the document's table; the first one makes the table."
   },
   "example": "doc.add_parameter(\"Body\", expression)"
  },
  {
   "id": "doc.set_parameter",
   "name": {
    "en": "Set parameter"
   },
   "python": "Document.set_parameter",
   "parameters": [
    "document?",
    "name",
    "expression"
   ],
   "summary": {
    "en": "Give a parameter another expression; what reads it follows in the same step."
   },
   "example": "doc.set_parameter(\"Body\", expression)"
  },
  {
   "id": "doc.edit_parameter",
   "name": {
    "en": "Edit parameter"
   },
   "python": "Document.edit_parameter",
   "parameters": [
    "document?",
    "name",
    "quantity?",
    "group?",
    "minimum?",
    "maximum?",
    "comment?"
   ],
   "summary": {
    "en": "Change a parameter's kind, group, limits or comment."
   },
   "example": "doc.edit_parameter(\"Body\")"
  },
  {
   "id": "doc.move_parameter",
   "name": {
    "en": "Move parameter"
   },
   "python": "Document.move_parameter",
   "parameters": [
    "document?",
    "name",
    "before?"
   ],
   "summary": {
    "en": "Move a parameter to another place in the table."
   },
   "example": "doc.move_parameter(\"Body\")"
  },
  {
   "id": "doc.rename_parameter",
   "name": {
    "en": "Rename parameter"
   },
   "python": "Document.rename_parameter",
   "parameters": [
    "document?",
    "old",
    "new"
   ],
   "summary": {
    "en": "Give a parameter another name; every expression that uses it is written anew."
   },
   "example": "doc.rename_parameter(old, new)"
  },
  {
   "id": "doc.remove_parameter",
   "name": {
    "en": "Delete parameter"
   },
   "python": "Document.remove_parameter",
   "parameters": [
    "document?",
    "name",
    "keep_values?"
   ],
   "summary": {
    "en": "Remove a parameter that nothing uses, or turn what uses it into values."
   },
   "example": "doc.remove_parameter(\"Body\")"
  },
  {
   "id": "doc.set_expression",
   "name": {
    "en": "Set expression"
   },
   "python": "Document.set_expression",
   "parameters": [
    "document?",
    "object",
    "property",
    "expression"
   ],
   "summary": {
    "en": "Give a numeric property of an object an expression."
   },
   "example": "doc.set_expression(body, \"Length\", expression)"
  },
  {
   "id": "doc.clear_expression",
   "name": {
    "en": "Clear expression"
   },
   "python": "Document.clear_expression",
   "parameters": [
    "document?",
    "object",
    "property"
   ],
   "summary": {
    "en": "Take a property's expression away; its last value stays."
   },
   "example": "doc.clear_expression(body, \"Length\")"
  },
  {
   "id": "doc.recompute",
   "name": {
    "en": "Recompute"
   },
   "python": "Document.recompute",
   "parameters": [
    "document?",
    "background?"
   ],
   "summary": {
    "en": "Recompute a document."
   },
   "example": "doc.recompute()"
  },
  {
   "id": "doc.undo",
   "name": {
    "en": "Undo"
   },
   "python": "Document.undo",
   "parameters": [
    "document?"
   ],
   "summary": {
    "en": "Undo the last change of a document."
   },
   "example": "doc.undo()"
  },
  {
   "id": "doc.redo",
   "name": {
    "en": "Redo"
   },
   "python": "Document.redo",
   "parameters": [
    "document?"
   ],
   "summary": {
    "en": "Redo the last undone change of a document."
   },
   "example": "doc.redo()"
  },
  {
   "id": "doc.save",
   "name": {
    "en": "Save"
   },
   "python": "Document.save",
   "parameters": [
    "document?",
    "path?",
    "rename?",
    "force?"
   ],
   "summary": {
    "en": "Save a document to a .yonta file."
   },
   "example": "doc.save(\"bracket.yonta\")"
  },
  {
   "id": "doc.export",
   "name": {
    "en": "Export"
   },
   "python": "Document.export",
   "parameters": [
    "document?",
    "path",
    "objects?",
    "schema?",
    "stl_format?",
    "unit?",
    "resolution?",
    "y_up?"
   ],
   "summary": {
    "en": "Export solids to STEP or STL."
   },
   "example": "doc.export(\"bracket.step\")"
  },
  {
   "id": "doc.import_step",
   "name": {
    "en": "Import STEP"
   },
   "python": "Document.import_step",
   "parameters": [
    "document?",
    "path",
    "name?"
   ],
   "summary": {
    "en": "Import a STEP file: one solid object per root or leaf instance."
   },
   "example": "imported = doc.import_step(\"housing.step\")"
  },
  {
   "id": "part.new_sketch",
   "name": {
    "en": "New sketch"
   },
   "python": "Document.new_sketch",
   "parameters": [
    "document?",
    "plane?",
    "support?",
    "face?",
    "name?"
   ],
   "summary": {
    "en": "Add a sketch on a base plane or a planar face."
   },
   "example": "sketch = doc.new_sketch(plane=\"XY\", name=\"Body\")"
  },
  {
   "id": "part.pad",
   "name": {
    "en": "Pad"
   },
   "python": "Document.pad",
   "parameters": [
    "document?",
    "profile?",
    "length?",
    "name?",
    "through_all?",
    "reversed?",
    "symmetric?",
    "side?",
    "second_length?",
    "extent?",
    "up_to?",
    "up_to_element?",
    "offset?",
    "profile_edge?",
    "new_body?",
    "support?",
    "face?",
    "thin?"
   ],
   "summary": {
    "en": "Extrude a closed sketch into a solid, joined to the tip solid."
   },
   "example": "body = doc.pad(sketch, 10.0)"
  },
  {
   "id": "part.pocket",
   "name": {
    "en": "Pocket"
   },
   "python": "Document.pocket",
   "parameters": [
    "document?",
    "profile?",
    "length?",
    "name?",
    "through_all?",
    "reversed?",
    "symmetric?",
    "side?",
    "second_length?",
    "extent?",
    "up_to?",
    "up_to_element?",
    "offset?",
    "profile_edge?",
    "support?",
    "face?"
   ],
   "summary": {
    "en": "Cut a closed sketch into the tip solid."
   },
   "example": "body = doc.pocket(sketch, 5.0)"
  },
  {
   "id": "part.revolve",
   "name": {
    "en": "Revolve"
   },
   "python": "Document.revolve",
   "parameters": [
    "document?",
    "profile",
    "angle?",
    "axis?",
    "name?",
    "new_body?"
   ],
   "summary": {
    "en": "Revolve a closed sketch about an axis, joined to the tip solid."
   },
   "example": "body = doc.revolve(sketch, 2 * math.pi)"
  },
  {
   "id": "part.groove",
   "name": {
    "en": "Groove"
   },
   "python": "Document.groove",
   "parameters": [
    "document?",
    "profile",
    "angle?",
    "axis?",
    "name?"
   ],
   "summary": {
    "en": "Revolve a closed sketch about an axis and cut it from the tip solid."
   },
   "example": "body = doc.groove(sketch, math.pi / 2)"
  },
  {
   "id": "part.fillet",
   "name": {
    "en": "Fillet"
   },
   "python": "Document.fillet",
   "parameters": [
    "document?",
    "edges",
    "radius?",
    "base?",
    "name?",
    "sizes?",
    "chains?"
   ],
   "summary": {
    "en": "Round edges of the tip solid with a radius."
   },
   "example": "body = doc.fillet([edge], 1.0)"
  },
  {
   "id": "part.chamfer",
   "name": {
    "en": "Chamfer"
   },
   "python": "Document.chamfer",
   "parameters": [
    "document?",
    "edges",
    "size?",
    "base?",
    "name?",
    "sizes?",
    "chains?"
   ],
   "summary": {
    "en": "Bevel edges of the tip solid by a distance."
   },
   "example": "body = doc.chamfer([edge], 0.5)"
  },
  {
   "id": "part.shell",
   "name": {
    "en": "Shell"
   },
   "python": "Document.shell",
   "parameters": [
    "document?",
    "faces",
    "thickness?",
    "outward?",
    "join?",
    "base?",
    "name?"
   ],
   "summary": {
    "en": "Hollow the tip solid to a wall, open at the chosen faces."
   },
   "example": "doc.shell([face], thickness=4.0)"
  },
  {
   "id": "part.draft",
   "name": {
    "en": "Draft"
   },
   "python": "Document.draft",
   "parameters": [
    "document?",
    "faces",
    "angle?",
    "neutral",
    "neutral_element?",
    "pull?",
    "pull_element?",
    "reversed?",
    "base?",
    "name?"
   ],
   "summary": {
    "en": "Tilt faces of the tip solid about a neutral plane, as a moulded part needs."
   },
   "example": "body = doc.draft([face], math.radians(2.0), neutral=(body, bottom))"
  },
  {
   "id": "part.primitive",
   "name": {
    "en": "Primitive"
   },
   "python": "Document.primitive",
   "parameters": [
    "document?",
    "kind",
    "length?",
    "width?",
    "height?",
    "radius?",
    "radius2?",
    "plane?",
    "support?",
    "face?",
    "origin?",
    "new_body?",
    "name?"
   ],
   "summary": {
    "en": "Add a box, cylinder, sphere or cone as a solid."
   },
   "example": "box = doc.primitive(\"box\", length=40.0, width=20.0, height=10.0)"
  },
  {
   "id": "part.loft",
   "name": {
    "en": "Loft"
   },
   "python": "Document.loft",
   "parameters": [
    "document?",
    "profiles",
    "profile_edges?",
    "ruled?",
    "closed?",
    "new_body?",
    "name?"
   ],
   "summary": {
    "en": "Build a solid through profiles in order."
   },
   "example": "doc.loft([sketch, upper])"
  },
  {
   "id": "part.sweep",
   "name": {
    "en": "Sweep"
   },
   "python": "Document.sweep",
   "parameters": [
    "document?",
    "profile",
    "path",
    "path_edges?",
    "frame?",
    "transition?",
    "profile_edge?",
    "new_body?",
    "name?"
   ],
   "summary": {
    "en": "Sweep a profile along a path into a solid."
   },
   "example": "body = doc.sweep(profile, path)"
  },
  {
   "id": "part.mirror",
   "name": {
    "en": "Mirror"
   },
   "python": "Document.mirror",
   "parameters": [
    "document?",
    "plane?",
    "support?",
    "face?",
    "base?",
    "name?",
    "features?",
    "new_body?"
   ],
   "summary": {
    "en": "Join the tip solid with its reflection in a plane or a planar face."
   },
   "example": "body = doc.mirror(plane=\"YZ\")"
  },
  {
   "id": "part.pattern_linear",
   "name": {
    "en": "Linear pattern"
   },
   "python": "Document.pattern_linear",
   "parameters": [
    "document?",
    "features",
    "direction?",
    "count?",
    "spacing?",
    "direction2?",
    "count2?",
    "spacing2?",
    "length?",
    "offset?",
    "end_offset?",
    "symmetric?",
    "reversed?",
    "skip?",
    "base?",
    "name?"
   ],
   "summary": {
    "en": "Copy features' tools along a direction: the count includes the original."
   },
   "example": "row = doc.pattern_linear([hole], direction=\"X\", count=4, spacing=15.0)"
  },
  {
   "id": "part.pattern_circular",
   "name": {
    "en": "Polar pattern"
   },
   "python": "Document.pattern_circular",
   "parameters": [
    "document?",
    "features",
    "axis?",
    "count?",
    "angle?",
    "offset?",
    "end_offset?",
    "symmetric?",
    "reversed?",
    "skip?",
    "base?",
    "name?"
   ],
   "summary": {
    "en": "Copy features' tools round an axis: the count includes the original."
   },
   "example": "ring = doc.pattern_circular([hole], axis=\"Z\", count=6, angle=math.radians(60.0))"
  },
  {
   "id": "part.body",
   "name": {
    "en": "New body"
   },
   "python": "Document.body",
   "parameters": [
    "document?",
    "name?"
   ],
   "summary": {
    "en": "Add an empty body: the next feature with no base joins it."
   },
   "example": "doc.body()"
  },
  {
   "id": "part.set_material",
   "name": {
    "en": "Material"
   },
   "python": "Document.set_material",
   "parameters": [
    "document?",
    "objects",
    "material?",
    "density?"
   ],
   "summary": {
    "en": "Set the material of a body's solid (a feature's is its body's): a table material or a custom density; its mass follows."
   },
   "example": "doc.set_material([body])"
  },
  {
   "id": "part.section_plane",
   "name": {
    "en": "Section plane"
   },
   "python": "Document.section_plane",
   "parameters": [
    "document?",
    "plane?",
    "support?",
    "face?",
    "flip?",
    "offset?",
    "name?"
   ],
   "summary": {
    "en": "Add the document's section plane on XY, XZ or YZ or on a planar face: the side its normal points to is cut away in the view; no solid changes."
   },
   "example": "doc.section_plane()"
  },
  {
   "id": "part.boolean",
   "name": {
    "en": "Boolean"
   },
   "python": "Document.boolean",
   "parameters": [
    "document?",
    "tools",
    "operation?",
    "base?",
    "name?"
   ],
   "summary": {
    "en": "Fuse, cut or intersect other bodies into a body."
   },
   "example": "doc.boolean(\"Body001\")"
  },
  {
   "id": "part.hole",
   "name": {
    "en": "Hole"
   },
   "python": "Document.hole",
   "parameters": [
    "document?",
    "profile",
    "diameter?",
    "depth?",
    "through_all?",
    "reversed?",
    "base?",
    "name?",
    "type?",
    "standard?",
    "size?",
    "fit?",
    "series?",
    "thread_length?",
    "left_hand?",
    "counterbore?",
    "countersink?",
    "tip?",
    "tip_angle?",
    "depth_to?",
    "end?",
    "support?",
    "up_to_face?",
    "offset?",
    "far_counterbore?"
   ],
   "summary": {
    "en": "Drill plain holes at a sketch's points and circle centres into the tip solid."
   },
   "example": "body = doc.hole(sketch, 3.0, 5.0)"
  },
  {
   "id": "part.datum_plane",
   "name": {
    "en": "Datum plane"
   },
   "python": "Document.datum_plane",
   "parameters": [
    "document?",
    "plane?",
    "support?",
    "face?",
    "offset?",
    "name?",
    "method?",
    "references?",
    "angle?"
   ],
   "summary": {
    "en": "A reference plane on a base plane or a planar face, moved by an offset."
   },
   "example": "plane = doc.datum_plane(plane=\"XY\", offset=10.0)"
  },
  {
   "id": "part.datum_axis",
   "name": {
    "en": "Datum axis"
   },
   "python": "Document.datum_axis",
   "parameters": [
    "document?",
    "axis?",
    "support?",
    "edge?",
    "offset?",
    "name?"
   ],
   "summary": {
    "en": "A reference axis along X, Y or Z, or on a straight edge, moved by an offset."
   },
   "example": "doc.datum_axis()"
  },
  {
   "id": "part.datum_point",
   "name": {
    "en": "Datum point"
   },
   "python": "Document.datum_point",
   "parameters": [
    "document?",
    "support?",
    "vertex?",
    "offset?",
    "name?"
   ],
   "summary": {
    "en": "A reference point at the origin or a vertex, moved by an offset."
   },
   "example": "doc.datum_point()"
  },
  {
   "id": "sketch.add_geometry",
   "name": {
    "en": "Add sketch element"
   },
   "python": "Sketch.add_line",
   "parameters": [
    "document?",
    "sketch",
    "kind",
    "coords",
    "construction?"
   ],
   "summary": {
    "en": "Add a point, line, circle or arc to a sketch."
   },
   "example": "line = sketch.add_line((0, 0), (10, 0))"
  },
  {
   "id": "sketch.copy_geometry",
   "name": {
    "en": "Copy sketch elements"
   },
   "python": "Sketch.copy",
   "parameters": [
    "document?",
    "sketch",
    "geometry",
    "offset?",
    "angle?",
    "center?"
   ],
   "summary": {
    "en": "Copy sketch elements moved by an offset or turned about a point, with the constraints among them."
   },
   "example": "copies = sketch.copy([line], offset=(10.0, 0.0))"
  },
  {
   "id": "sketch.add_external",
   "name": {
    "en": "Add external geometry"
   },
   "python": "Sketch.add_external",
   "parameters": [
    "document?",
    "sketch",
    "object",
    "edge?",
    "edges?"
   ],
   "summary": {
    "en": "Project an edge of another object into the sketch as fixed construction geometry that follows it."
   },
   "example": "external = sketch.add_external(body, edge)"
  },
  {
   "id": "sketch.add_constraint",
   "name": {
    "en": "Constraint"
   },
   "python": "Sketch.add_constraint",
   "parameters": [
    "document?",
    "sketch",
    "type",
    "first",
    "second?",
    "value?",
    "value2?",
    "third?",
    "inner?",
    "driving?",
    "expression?"
   ],
   "summary": {
    "en": "Add a sketch constraint."
   },
   "example": "sketch.add_constraint(\"coincident\", (line, \"end\"), (other, \"start\"))"
  },
  {
   "id": "sketch.set_value",
   "name": {
    "en": "Change dimension"
   },
   "python": "Sketch.set_value",
   "parameters": [
    "document?",
    "sketch",
    "constraint",
    "value"
   ],
   "summary": {
    "en": "Change a sketch dimension."
   },
   "example": "sketch.set_value(constraint, 10.0)"
  },
  {
   "id": "sketch.set_label",
   "name": {
    "en": "Move dimension label"
   },
   "python": "Sketch.set_label",
   "parameters": [
    "document?",
    "sketch",
    "constraint",
    "offset?"
   ],
   "summary": {
    "en": "Place a dimension's label away from its default place; dragging a label does this."
   },
   "example": "sketch.set_label(constraint)"
  },
  {
   "id": "sketch.set_expression",
   "name": {
    "en": "Set dimension expression"
   },
   "python": "Sketch.set_expression",
   "parameters": [
    "document?",
    "sketch",
    "constraint",
    "expression"
   ],
   "summary": {
    "en": "Give a driving dimension an expression."
   },
   "example": "sketch.set_expression(constraint, expression)"
  },
  {
   "id": "sketch.clear_expression",
   "name": {
    "en": "Clear dimension expression"
   },
   "python": "Sketch.clear_expression",
   "parameters": [
    "document?",
    "sketch",
    "constraint"
   ],
   "summary": {
    "en": "Take a dimension's expression away; its last value stays."
   },
   "example": "sketch.clear_expression(constraint)"
  },
  {
   "id": "sketch.set_driving",
   "name": {
    "en": "Reference dimension"
   },
   "python": "Sketch.set_driving",
   "parameters": [
    "document?",
    "sketch",
    "constraint",
    "driving"
   ],
   "summary": {
    "en": "Make a dimension a reference dimension, which measures and is never solved for, or a driving one again."
   },
   "example": "sketch.set_driving(constraint, False)"
  },
  {
   "id": "sketch.move",
   "name": {
    "en": "Drag"
   },
   "python": "Sketch.move",
   "parameters": [
    "document?",
    "sketch",
    "ref",
    "to",
    "grab?"
   ],
   "summary": {
    "en": "Drag a point or an element within its constraints; no constraint is added or removed."
   },
   "example": "sketch.move((line, \"end\"), (25.0, 5.0))"
  },
  {
   "id": "sketch.set_construction",
   "name": {
    "en": "Construction geometry"
   },
   "python": "Sketch.set_construction",
   "parameters": [
    "document?",
    "sketch",
    "geometry",
    "on"
   ],
   "summary": {
    "en": "Make elements construction geometry, which guides and constrains but is never part of a profile, or normal geometry again."
   },
   "example": "sketch.set_construction([line], True)"
  },
  {
   "id": "sketch.trim",
   "name": {
    "en": "Trim"
   },
   "python": "Sketch.trim",
   "parameters": [
    "document?",
    "sketch",
    "geometry",
    "at"
   ],
   "summary": {
    "en": "Remove the piece of a line, arc or circle between the curves that cut it."
   },
   "example": "sketch.trim(line, (16.0, 0.0))"
  },
  {
   "id": "sketch.extend",
   "name": {
    "en": "Extend"
   },
   "python": "Sketch.extend",
   "parameters": [
    "document?",
    "sketch",
    "geometry",
    "end"
   ],
   "summary": {
    "en": "Lengthen a line or an arc from one end to the next curve ahead."
   },
   "example": "sketch.extend(line, \"end\")"
  },
  {
   "id": "sketch.offset",
   "name": {
    "en": "Offset"
   },
   "python": "Sketch.offset",
   "parameters": [
    "document?",
    "sketch",
    "geometry",
    "distance",
    "constraints?"
   ],
   "summary": {
    "en": "Copy elements a distance away, joined where they meet and tied to their sources."
   },
   "example": "sketch.offset([line], 2.0)"
  },
  {
   "id": "sketch.fillet",
   "name": {
    "en": "Sketch fillet"
   },
   "python": "Sketch.fillet",
   "parameters": [
    "document?",
    "sketch",
    "corner?",
    "geometry?",
    "radius",
    "constraints?"
   ],
   "summary": {
    "en": "Round a sketch corner with a tangent arc; the corner's dimensions are kept."
   },
   "example": "sketch.fillet((line, \"end\"), 3.0)"
  },
  {
   "id": "sketch.transform",
   "name": {
    "en": "Move sketch elements"
   },
   "python": "Sketch.transform",
   "parameters": [
    "document?",
    "sketch",
    "geometry",
    "offset?",
    "angle?",
    "center?"
   ],
   "summary": {
    "en": "Move or turn sketch elements themselves, keeping their constraints."
   },
   "example": "sketch.transform([line], angle=math.radians(90.0))"
  },
  {
   "id": "sketch.mirror",
   "name": {
    "en": "Mirror sketch elements"
   },
   "python": "Sketch.mirror",
   "parameters": [
    "document?",
    "sketch",
    "geometry",
    "axis",
    "constraints?"
   ],
   "summary": {
    "en": "Copy sketch elements mirrored in a line, with their constraints."
   },
   "example": "sketch.mirror([line], other.id)"
  },
  {
   "id": "doc.copy_sketch",
   "name": {
    "en": "Copy sketch"
   },
   "python": "Document.copy_sketch",
   "parameters": [
    "document?",
    "sketch",
    "plane?",
    "source?",
    "name?"
   ],
   "summary": {
    "en": "Copy a sketch, with every constraint, onto a base plane, from this document or another."
   },
   "example": "doc.copy_sketch(sketch)"
  },
  {
   "id": "sketch.set_polygon_sides",
   "name": {
    "en": "Polygon sides"
   },
   "python": "Sketch.set_polygon_sides",
   "parameters": [
    "document?",
    "sketch",
    "geometry",
    "sides"
   ],
   "summary": {
    "en": "Give a polygon another number of sides; its circle and its first side's constraints stay."
   },
   "example": "sketch.set_polygon_sides(circle, 5)"
  },
  {
   "id": "sketch.remove_geometry",
   "name": {
    "en": "Remove sketch element"
   },
   "python": "Sketch.remove_geometry",
   "parameters": [
    "document?",
    "sketch",
    "geometry"
   ],
   "summary": {
    "en": "Remove a sketch element and its constraints."
   },
   "example": "sketch.remove_geometry(line)"
  },
  {
   "id": "sketch.remove_constraint",
   "name": {
    "en": "Remove constraint"
   },
   "python": "Sketch.remove_constraint",
   "parameters": [
    "document?",
    "sketch",
    "constraint"
   ],
   "summary": {
    "en": "Remove a sketch constraint."
   },
   "example": "sketch.remove_constraint(constraint)"
  }
 ]
}