diff --git a/CHANGELOG.md b/CHANGELOG.md
index a5191b2..1d28b82 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed
+- **User guide**: Chamfer (C) and Fillet (F) have their own sections. The Options **?** for those modes opens the matching section. **Add midpoint nodes** for square, both rectangle tools, and slot stays on the line-edge midpoint section (those shapes are built from straight edges). Settings **Sketch -> Nodes** has three midpoint rows: line edges (default off), square/rectangle (default on), and slot straight edges (default off).
- **Task toolbar**: Sketch / Design / Workbench switcher; the tools row shows only the current task. Design has its own Move / Rotate / Scale / Align shafts (bake bodies for CSG). Workbench has Move / Rotate / Align shafts (instance pose). G / R / J stay on the current task; S enters Design Scale.
- **Mode names**: Design idle is `Design_inspection` (was `Normal`); Sketch idle is `Sketch_inspection` (was `Sketch_inspection_mode`). `ezy.get_mode()` / `ezy.set_mode` use the new names; `Normal` and `Sketch_inspection_mode` still parse.
- **Move / rotate / scale space**: Options **Local** (default) or **World**. Local uses the first selected solid's frame (origin and X/Y/Z from **Show axes**). World keeps global XYZ at that solid's bounding-box center. Persisted as **`gui.transform_space`**.
diff --git a/docs/usage-settings.md b/docs/usage-settings.md
index 6a27b9d..07a5c53 100644
--- a/docs/usage-settings.md
+++ b/docs/usage-settings.md
@@ -56,7 +56,7 @@ Between those, the pane has collapsible sections. Expand a section to see its co
6. **Sketch** — Nested sections (open state remembered in `gui.settings_headers`):
- **Appearance** — edge and face display colors; shapes in sketch mode (faint/ghost/wire).
- **Dimensions** — length-dimension appearance and behavior (most rows have **?** help).
- - **Nodes** — permanent node marker size and origin color; midpoint options for line/rect/slot tools.
+ - **Nodes** — permanent node marker size and origin color; three midpoint rows (line edges, square/rectangle, slot).
- **Snap** — snap guide colors, line width (desktop), mode (including *None*), and **All co-axial nodes** (hidden when mode is *None*).
- **Underlay** — underlay highlight color.
@@ -75,7 +75,7 @@ Between those, the pane has collapsible sections. Expand a section to see its co
- **Arrow style** — *Standard*, *Sharp*, *Wide*, or *3D shaded*
- **Arrow orientation** — *Automatic*, *Internal*, or *External*
- **Show sketch dimensions** — global on/off for length dimensions on all sketches (tool mode may still limit which sketch shows dims when on)
- - **Permanent node annotation size** (scale for **+** markers on the sketch **Origin** and [Add node](usage-sketch.md#add-node-tool) points; see [Sketch origin](usage-sketch.md#sketch-origin)), **Origin marker color**, **Add midpoints to line edges** / **square/rectangle** / **slot edges**, **Underlay highlight color**, **Snap guide color (node)** / **(axis)**, **Snap guide line width** (desktop only; slider **0.5** to **8.0**; default **1.0**), **Snap guide mode** (*Traditional*, *Fullscreen*, *Both*, *None*), **All co-axial nodes** (hidden when mode is *None*)
+ - **Permanent node annotation size** (scale for **+** markers on the sketch **Origin** and [Add node](usage-sketch.md#add-node-tool) points; see [Sketch origin](usage-sketch.md#sketch-origin)), **Origin marker color**, **Add midpoints to line edges** (default off) / **square/rectangle** (default on) / **slot edges** (straight edges only, default off), **Underlay highlight color**, **Snap guide color (node)** / **(axis)**, **Snap guide line width** (desktop only; slider **0.5** to **8.0**; default **1.0**), **Snap guide mode** (*Traditional*, *Fullscreen*, *Both*, *None*), **All co-axial nodes** (hidden when mode is *None*)
**WebAssembly build** — Open CASCADE line-width controls (`SetWidth` / `Prs3d` line width) have no visible effect in the browser (WebGL/GLES). The **Settings** pane hides **Edge thickness**, **Dimension line width**, and **Snap guide line width** on the web build. Saved JSON may still contain those keys from a desktop session; they are not shown as editable rows in the browser UI.
@@ -121,7 +121,7 @@ Sketch-related preferences are edited in the **Options** panel while you use a s
- **Sketch options** (all sketch tools): **Snap guide mode** (*Traditional*, *Fullscreen*, *Both*, *None*), then **Snap dist** and **All co-axial nodes** (global co-axial grid vs closest-per-axis only; both hidden when mode is *None*), and **Faint shapes** (show document solids as ghost/wire while sketching; style and **Shape Faint Strength** in **Settings -> Sketch -> Appearance**). *None* disables snap-to-node and snap guides. See [How sketch snap works](usage-sketch.md#sketch-snapping). **Snap guide color (node)**, **Snap guide color (axis)**, **Snap guide line width**, **Snap guide mode**, and **All co-axial nodes** are also in **Settings -> Sketch -> Snap** (persisted in `gui.*` keys below).
- **Extrude sketch face**: under **Extrude**, **Both sides** (default on), **Twist**, and **Material** for the new solid (same document preset as **Normal** mode Options **Material**). With **Twist** on, the first drag sets height, then a second drag sets twist angle about the face center; Tab / Shift+Tab enter height / angle. Fast drag preview for dense faces is configured in **Settings -> Sketch -> Appearance** (**Extrude fast preview**); with **Twist**, face copies rotate as well as translate. Other modes that still show **Material** in Options use that same preset when relevant (for example **Sketch from planar face**).
- **Add edge** / **Add node** (and similar): a **Shortcuts** line documents TAB / Shift+TAB typing behavior.
-- **Add line edge**: under **Options**, **Add midpoint nodes** ([usage-sketch.md#line-edge-option-add-midpoint-nodes](usage-sketch.md#line-edge-option-add-midpoint-nodes)) and **Place from center** ([usage-sketch.md#line-edge-option-place-from-center](usage-sketch.md#line-edge-option-place-from-center)); each has a **?** link. See also [Line edge Options](usage-sketch.md#line-edge-options). The midpoint setting is also in **Settings -> Sketch -> Nodes** (persisted).
+- **Add line edge**: under **Options**, **Add midpoint nodes** ([usage-sketch.md#line-edge-option-add-midpoint-nodes](usage-sketch.md#line-edge-option-add-midpoint-nodes)) and **Place from center** ([usage-sketch.md#line-edge-option-place-from-center](usage-sketch.md#line-edge-option-place-from-center)); each has a **?** link. See also [Line edge Options](usage-sketch.md#line-edge-options). **Add midpoint nodes** is the same control on multi-line, arc, square, both rectangle tools, and slot, because those tools place straight edges; the checkbox **?** opens that same section. The saved rows under **Settings -> Sketch -> Nodes** are separate: **Add midpoints to line edges** (`gui.add_mid_pt_edges`, default **off**; also multi-line and arc), **Add midpoints to square/rectangle** (`gui.add_mid_pt_rect_edges`, default **on**), and **Add midpoints to slot edges** (`gui.add_mid_pt_slot_edges`, straight edges only, default **off**).
- **Add bone**: under **Options**, **Add center nodes**, **Add radius nodes**, and **Add total length nodes** (all default on) and **Holes** (**None**, **One radius**, **Two radii**). Persisted as **`gui.bone_add_center_nodes`**, **`gui.bone_add_radius_nodes`**, **`gui.bone_add_total_length_nodes`**, and **`gui.bone_holes`**. See [Bone Creation Tool](usage-sketch.md#bone-creation-tool).
- **Sketch operation** (mirror / revolve axis): mirror, revolve, angle, and clear-axis actions (see [usage-sketch.md](usage-sketch.md#operation-axis-tool)).
@@ -239,6 +239,9 @@ If saved layout text has no `[Docking]` section (older installs), a default dock
| `edge_dim_arrow_orientation` | integer | **0** automatic, **1** internal, **2** external. |
| `show_sketch_dimensions` | boolean | When false, hides length dimensions on all sketches. |
| `permanent_node_anno_scale` | number | Scale for permanent **+** markers: the sketch **Origin** and user-placed Add node points ([Sketch origin](usage-sketch.md#sketch-origin); **0.25** to **3.0**; default **1.0**). |
+| `add_mid_pt_edges` | boolean | **Settings -> Sketch -> Nodes -> Add midpoints to line edges.** Line, multi-line, and arc **Add midpoint nodes** (default **false**). Legacy `add_midpoints_to_linear_edges` is read when this key is absent. See [Line edge option: Add midpoint nodes](usage-sketch.md#line-edge-option-add-midpoint-nodes). |
+| `add_mid_pt_rect_edges` | boolean | **Add midpoints to square/rectangle** (square and both rectangle tools; default **true**). Same help section as line edges. |
+| `add_mid_pt_slot_edges` | boolean | **Add midpoints to slot edges** (slot straight edges only; default **false**). Same help section as line edges. |
| `bone_add_center_nodes` | boolean | Add-bone Options: commit permanent **Bone A** / **Bone B** (default **true**). |
| `bone_add_radius_nodes` | boolean | Add-bone Options: commit permanent **Bone A+** / **A-** / **B+** / **B-** axis-tangent nodes (default **true**). |
| `bone_add_total_length_nodes` | boolean | Add-bone Options: commit permanent **Bone A tip** / **Bone B tip** outer-end nodes (default **true**). |
diff --git a/docs/usage-sketch.md b/docs/usage-sketch.md
index bde5b01..70b1880 100644
--- a/docs/usage-sketch.md
+++ b/docs/usage-sketch.md
@@ -168,9 +168,12 @@ While the **Line Edge** tool is active, the Options panel (under the **Options**
When checked, each new straight edge created with this tool (and with **Add multi-line edge**) gets an automatic **midpoint node** at the center of the segment. That node is a snap target but does not show a **+** marker and is not listed under **Nodes** in the [Sketch List](usage.md#sketch-list).
-- Default is **off** (no midpoint nodes on new edges).
-- The same preference is available globally and persistently in **Settings -> Sketch -> Add midpoints to new linear edges** (saved as `gui.add_mid_pt_edges`). The Options checkbox mirrors that setting for the current session while you use line tools and the **Arc Segment** tool.
-- Affects **future** edges from the Line, Multi-line, and Arc Segment tools.
+**Add midpoint nodes** is the same control for every tool that places straight edges, so those tools share this page. A new straight-edge tool uses this section rather than a page of its own. Square, rectangle from two points, rectangle with center point, and slot are built from straight edges, so their Options checkbox and the matching **Settings -> Sketch -> Nodes** rows open here.
+
+- **Line**, **multi-line**, and **arc**: default **off**. Saved as **Add midpoints to line edges** (`gui.add_mid_pt_edges`). The Options checkbox mirrors that row while those tools are active. Older settings files may still have `add_midpoints_to_linear_edges`; that value is read when `add_mid_pt_edges` is absent.
+- **Square** and both **rectangle** tools: default **on**. Saved as **Add midpoints to square/rectangle** (`gui.add_mid_pt_rect_edges`).
+- **Slot**: straight edges only, default **off**. Saved as **Add midpoints to slot edges** (`gui.add_mid_pt_slot_edges`).
+- Affects **future** edges from the tool you are using.
- Midpoint snapping on **intersection splits** (when a new edge crosses an existing one) is separate topology behavior; see [Automatic splitting on edge intersections](#sketch-snapping).
(line-edge-option-place-from-center)=
@@ -218,7 +221,7 @@ When checked, the **first click** sets the **midpoint** of the new edge (not an
- Lines can be used as construction geometry or as part of your final design
- The line tool works in any sketch plane
- Multiple line edges can be created in sequence by right-clicking after each line
-- **New straight edges automatically split existing straight edges** at interior intersection points (or when snapping to an existing midpoint, if midpoints were created). This is how you divide a closed profile into multiple faces (for separate extrusions, etc.) — just draw the crossing or connecting line; no extra "split" step is required. The same logic applies to multi-line sequences. Collinear overlaps (including drawing the same segment twice) merge to a single copy of each piece. Midpoint creation for new edges is controlled by **Add midpoint nodes** in the Line Edge Options panel or **Settings > Sketch > Add midpoints to new linear edges** (default off).
+- **New straight edges automatically split existing straight edges** at interior intersection points (or when snapping to an existing midpoint, if midpoints were created). This is how you divide a closed profile into multiple faces (for separate extrusions, etc.) — just draw the crossing or connecting line; no extra "split" step is required. The same logic applies to multi-line sequences. Collinear overlaps (including drawing the same segment twice) merge to a single copy of each piece. Midpoint creation for new edges is controlled by **Add midpoint nodes** in the Line Edge Options panel or **Settings -> Sketch -> Nodes -> Add midpoints to line edges** (default off). Square, rectangle, and slot use the same control with their own defaults; see [Line edge option: Add midpoint nodes](#line-edge-option-add-midpoint-nodes).
- **Place from center** is useful for symmetric segments (e.g. a divider through the middle of a rectangle) without measuring half-lengths manually.
## Multi-Line Edge Tool
@@ -429,7 +432,7 @@ While the **Arc Segment** tool is active, the Options panel shows the same **Add
- When **on**, each new arc gets an automatic **midpoint node** at the geometric center of the arc curve (parametric half). That node is a snap target only; it does not show a **+** marker and is not listed under **Nodes** in the [Sketch List](usage.md#sketch-list).
- When **off** (default), only the three clicked points (start, bulge, end) are stored as nodes.
-- The setting mirrors **Settings -> Sketch -> Add midpoints to new linear edges** (`gui.add_mid_pt_edges`) for the current session.
+- The setting mirrors **Settings -> Sketch -> Nodes -> Add midpoints to line edges** (`gui.add_mid_pt_edges`) for the current session.
**Tips:**
- The three clicks define a unique circular arc; the second click controls bulge direction (which side of the chord the arc curves toward).
@@ -950,7 +953,7 @@ In both cases, Add node never leaves a **permanent edge** between two clicks the
Each sketch includes a built-in **Origin** (see [Sketch origin](#sketch-origin)) — shown as a permanent **+ inside a circle** on the **active sketch** when enabled in **Sketch properties**.
-Nodes you place with **Add node** are treated as **user-placed** points. When the sketch is visible, eligible points can show a red **+** marker in the 3D view so you can see and pick them; you can delete user-placed markers from the selection. Geometry that exists only as automatic **edge midpoints** for snapping is separate (those nodes are not shown the same way; controlled by the **Add midpoints to new linear edges** setting in Settings > Sketch, default off).
+Nodes you place with **Add node** are treated as **user-placed** points. When the sketch is visible, eligible points can show a red **+** marker in the 3D view so you can see and pick them; you can delete user-placed markers from the selection. Geometry that exists only as automatic **edge midpoints** for snapping is separate (those nodes are not shown the same way). Whether a tool adds them is set per tool group under **Settings -> Sketch -> Nodes**; see [Line edge option: Add midpoint nodes](#line-edge-option-add-midpoint-nodes).
### How to use
diff --git a/docs/usage.md b/docs/usage.md
index 64d5764..5df099c 100644
--- a/docs/usage.md
+++ b/docs/usage.md
@@ -237,7 +237,7 @@ Press Esc to cancel the current action or step back to a broader mode
- **If something is in progress:** Esc cancels it and discards the change. Examples: cancel a line you are drawing, revert an unconfirmed [move](#shape-move-tool-g)/[rotate](#shape-rotate-tool-r)/[scale](#shape-scale-tool-s), cancel [extrude](#extrude-sketch-face-tool-e) preview, clear the distance or angle input dialog.
- **If nothing is in progress:** Esc steps the application to the **parent mode** (one level up):
- From a **sketch tool** (e.g. Add line, Add circle, Operation axis, [Extrude](#extrude-sketch-face-tool-e)) -> **Sketch inspection mode**.
- - From **Sketch inspection**, **Design** tools ([Move](#shape-move-tool-g), [Rotate](#shape-rotate-tool-r), [Align shafts](#align-shafts-tool-j), [Scale](#shape-scale-tool-s), [Chamfer](#other-feature-operations) (C), [Fillet](#other-feature-operations) (F), [Polar duplicate](#shape-polar-duplicate-tool), [Create sketch from face](usage-sketch.md#create-sketch-from-planar-face-tool)), or Design **Inspection** -> **Design inspection**.
+ - From **Sketch inspection**, **Design** tools ([Move](#shape-move-tool-g), [Rotate](#shape-rotate-tool-r), [Align shafts](#align-shafts-tool-j), [Scale](#shape-scale-tool-s), [Chamfer](#chamfer-tool-c) (C), [Fillet](#fillet-tool-f) (F), [Polar duplicate](#shape-polar-duplicate-tool), [Create sketch from face](usage-sketch.md#create-sketch-from-planar-face-tool)), or Design **Inspection** -> **Design inspection**.
- From a **Workbench** tool ([Move](#shape-move-tool-g), [Rotate](#shape-rotate-tool-r), [Align shafts](#align-shafts-tool-j)) -> **Workbench** idle (not Design inspection). Use the task buttons to jump between Sketch, Design, and Workbench.
So repeated Esc from a sketch drawing tool first cancels the current element, then returns to Sketch inspection, then to Design inspection. Workbench tools step back to Workbench idle.
@@ -258,7 +258,7 @@ The typical modeling workflow in EzyCad follows these steps:
4. **Modify 3D Shapes**: Use [3D Modeling tools](#3d-modeling) to transform shapes ([move](#shape-move-tool-g), [rotate](#shape-rotate-tool-r), [scale](#shape-scale-tool-s), [align shafts](#align-shafts-tool-j)) or create patterns ([polar duplicate](#shape-polar-duplicate-tool)).
-5. **Apply Feature Operations**: Use [boolean operations](#boolean-operations) (cut, fuse, common) or edge-based feature operations (chamfer with C, fillet with F) to refine your 3D model.
+5. **Apply Feature Operations**: Use [boolean operations](#boolean-operations) (cut, fuse, common) or edge-based feature operations ([chamfer](#chamfer-tool-c) with C, [fillet](#fillet-tool-f) with F) to refine your 3D model.
**Key Concepts:**
@@ -687,10 +687,84 @@ Each solid has a local frame used for orientation. New solids start with a world
If any selected item is not a solid, or Open CASCADE cannot compute a section for a solid, that solid is skipped. If the plane misses some solids but still intersects others, the preview continues for the solids it cuts and the status notes how many were missed. Only when the plane misses the entire selection is the preview cleared. Section edges may be lines, circles, ellipses, B-splines, or other OCCT curves. The status message reports the curve counts.
+(chamfer-tool-c)=
+### Chamfer Tool (C)
+
+
+
+Bevel edges on a solid. The tool is on the **Design** toolbar. The default hotkey is C (remappable in **Settings -> Keyboard shortcuts** as **`mode.chamfer`**). The **?** next to the tool name in Options opens this section.
+
+A left click applies the chamfer immediately and replaces that solid. The result keeps the same Shape List identity, material, and local frame, and is named **Chamfered shape**. Workbench links to that body follow the new geometry. Ctrl+Z restores the previous solid. If Open CASCADE cannot build the chamfer, the status shows that error and the solid stays as it was.
+
+**Chamfer Mode** chooses which edges the click bevels. Entering the tool, and changing the combo, sets the pick filter to match.
+
+| | |
+| --------: | ------------------------------------------------------------ |
+| **Shape** | Default. Click the solid. Every edge of that solid. |
+| **Face** | Click a face. Every edge of that face. |
+| **Wire** | Click a wire (a connected chain of edges). Every edge in it. |
+| **Edge** | Click one edge. That edge only. |
+
+The combo lists **Edge**, **Wire**, **Face**, and **Shape**, in that order. **Shape** is the starting mode.
+
+If the click misses a solid, the status says **Click on a shape.** If the click is not on the sub-shape the mode expects, the status says **No chamfer face detected.**, **No chamfer wire detected.**, or **No chamfer edge detected.**
+
+**Chamfer dist** is the bevel size, typed in the current project unit. The suffix beside the field is `in` or `mm` (**File -> Project units**). Changing units remaps the number the same way as other length fields. The value is the diagonal width of the new chamfer face. EzyCad divides it by sqrt(2) and uses that as an equal setback along each face that meets the edge, so a square corner becomes a 45-degree chamfer of that face width. The field starts at 1 model unit, which shows as **0.01** in an inch project and **0.254** in a millimeter project when the dimension scale is the default **100**.
+
+**How to use:**
+
+1.  Press C or click **Chamfer** on the Design toolbar.
+2. In Options, set **Chamfer Mode** and **Chamfer dist**.
+3. Click the solid, or the face, wire, or edge, depending on the mode.
+
+**Shortcuts:**
+
+| | |
+| ----------------: | ---------------------------------------------- |
+| C | Chamfer mode (default; remappable) |
+| Escape | Leave the tool and return to Design inspection |
+
+(fillet-tool-f)=
+### Fillet Tool (F)
+
+
+
+Round edges on a solid. The tool is on the **Design** toolbar. The default hotkey is F (remappable as **`mode.fillet`**). The **?** next to the tool name in Options opens this section.
+
+A left click applies the fillet immediately and replaces that solid. The result keeps the same Shape List identity, material, and local frame, and is named **Filleted shape**. Workbench links to that body follow the new geometry. Ctrl+Z restores the previous solid. If Open CASCADE cannot build the fillet, the status shows that error and the solid stays as it was.
+
+**Fillet Mode** chooses which edges the click rounds. Entering the tool, and changing the combo, sets the pick filter to match.
+
+| | |
+| --------: | ------------------------------------------------------------ |
+| **Shape** | Default. Click the solid. Every edge of that solid. |
+| **Face** | Click a face. Every edge of that face. |
+| **Wire** | Click a wire (a connected chain of edges). Every edge in it. |
+| **Edge** | Click one edge. That edge only. |
+
+The combo lists **Edge**, **Wire**, **Face**, and **Shape**, in that order. **Shape** is the starting mode.
+
+If the click misses a solid, the status says **Click on a shape.** If the click is not on the sub-shape the mode expects, the status says **No fillet face detected.**, **No fillet wire detected.**, or **No fillet edge detected.**
+
+**Fillet radius** is the round size, typed in the current project unit. The suffix beside the field is `in` or `mm` (**File -> Project units**). Changing units remaps the number the same way as other length fields. The value is the fillet radius applied to each chosen edge. The field starts at 1 model unit, which shows as **0.01** in an inch project and **0.254** in a millimeter project when the dimension scale is the default **100**.
+
+**How to use:**
+
+1.  Press F or click **Fillet** on the Design toolbar.
+2. In Options, set **Fillet Mode** and **Fillet radius**.
+3. Click the solid, or the face, wire, or edge, depending on the mode.
+
+**Shortcuts:**
+
+| | |
+| ----------------: | ---------------------------------------------- |
+| F | Fillet mode (default; remappable) |
+| Escape | Leave the tool and return to Design inspection |
+
### Other Feature Operations
-- Create chamfers (C)
-- Add fillets (F)
+- [Chamfer](#chamfer-tool-c) (C)
+- [Fillet](#fillet-tool-f) (F)
- [Boolean operations](#boolean-operations) (Cut, Fuse, Common)
### Boolean Operations
diff --git a/src/gui_mode.cpp b/src/gui_mode.cpp
index 7b0b03a..a2ea34e 100644
--- a/src/gui_mode.cpp
+++ b/src/gui_mode.cpp
@@ -55,8 +55,8 @@ std::string GUI::get_doc_url_for_mode(Mode mode)
{Mode::Sketch_inspection, "https://ezycad.readthedocs.io/en/latest/usage-sketch.html#sketch-origin"},
{Mode::Sketch_from_planar_face, "https://ezycad.readthedocs.io/en/latest/usage-sketch.html#create-sketch-from-planar-face-tool"},
{Mode::Sketch_face_extrude, "https://ezycad.readthedocs.io/en/latest/usage.html#extrude-sketch-face-tool-e"},
- {Mode::Shape_chamfer, "https://ezycad.readthedocs.io/en/latest/usage.html#other-feature-operations"},
- {Mode::Shape_fillet, "https://ezycad.readthedocs.io/en/latest/usage.html#other-feature-operations"},
+ {Mode::Shape_chamfer, "https://ezycad.readthedocs.io/en/latest/usage.html#chamfer-tool-c"},
+ {Mode::Shape_fillet, "https://ezycad.readthedocs.io/en/latest/usage.html#fillet-tool-f"},
{Mode::Shape_polar_duplicate, "https://ezycad.readthedocs.io/en/latest/usage.html#shape-polar-duplicate-tool"},
{Mode::Sketch_add_node, "https://ezycad.readthedocs.io/en/latest/usage-sketch.html#add-node-tool"},
{Mode::Sketch_add_edge, "https://ezycad.readthedocs.io/en/latest/usage-sketch.html#single-line-edge-tool"},