Sawhorse

Sawhorse user guide

Sawhorse is pre-alpha. This page covers what works today (lane 10): looking around, drawing, push/pull, measuring, guides and dimensions, the transform tools (Move, Rotate, Scale, Offset, Follow Me), groups and components, tags and scenes, the cut list, and materials, paint, styles and shadows.

The first ten minutes #

You will make a board, cut a dado across it, and set a shelf in the dado. Everything is keyboard and mouse; nothing needs a dialog.

Minute 0 to 1: look around. The screen is the approved layout: menus and view buttons along the top, the tool rail on the left, the 3D view in the middle, a panel on the right, and the Value Control Box (VCB) at the bottom right. Middle-drag to orbit, right-drag (or Shift+middle-drag) to pan, and roll the wheel to zoom toward the cursor. The buttons Iso, Top, Front, Right and Persp jump to the standard views. Shift+Z fits everything in view. The red, green and blue lines are the X, Y and Z axes; their dashed halves are the negative sides. The grid follows your units: 1 in and 1 ft lines in inches, 10 mm and 100 mm lines in metric.

Minute 1 to 3: a board. Press R (Rectangle). Type 3/4, 11 1/4 and press Enter: a 3/4 in by 11 1/4 in rectangle appears on the ground at the origin. You don't need to click in the box first; typing goes straight into it. Press P (Push/Pull), type 30 and press Enter: the rectangle you just drew rises 30 in into a solid board. The badge at the top left of the view shows the solid count, face count, volume and whether the solid is watertight.

Minute 3 to 5: a guide and a dado. Press Right (the view button) so you face the board's inner side, then Shift+Z.

  1. Press T (Tape). Click on the bottom edge of that face. The point turns amber (On Edge).
  2. Move the cursor up, type 12 and press Enter. A dashed guide line now runs across the face 12 in up.
  3. Press R. Hover where the guide crosses the board's front edge: the point turns magenta (Intersection). Click there.
  4. Move the cursor up and into the face, type 11 1/4, 3/4 and press Enter. The rectangle crosses the face from edge to edge, so it cuts the face into a strip.
  5. Press P, type -3/8 and press Enter. The strip sinks 3/8 in. That's a dado.

Minute 5 to 8: a shelf. Press Iso.

  1. Press R. Hover the dado's front bottom corner, at the back of the groove: it turns lime (Endpoint). Click.
  2. Move the cursor away from the board, level with the corner. Type 24, 11 1/4 and press Enter. The rectangle starts on a corner rather than inside a face, so its plane follows the cursor. Here that is the level plane through the corner.
  3. Press P, type 3/4 and press Enter. The shelf sits in the dado.

Minute 8 to 10: measure, annotate, undo.

If an operation can't be done (for example, erasing an edge would open a solid), nothing changes and the status line says why.

Keys #

Key Tool Gesture VCB takes
Space Select Click; double-click selects the whole solid, or opens a group or component; drag left to right for a window, right to left for a crossing box; Shift adds, Ctrl toggles, Esc clears -
E Erase Click an edge, a line drawn on a face, an imprinted face, a sketch region, a guide or a dimension; drag across several (one undo step) -
L Line Click, click, click; stops when it closes, when a face forms, or on Esc a length along the direction shown
R Rectangle Click two corners, or click one and type w, d; with nothing clicked, it starts at the origin w, d (a negative value goes the other way)
R again Rotated Rectangle Click both ends of one edge, then the width the edge's length, then the width
C Circle Click the centre, then the radius a radius; 48s sets segments (24 by default)
C again Polygon As Circle a radius; 6s sets sides (6 by default)
A Arc Click both ends, then pull out the bulge a bulge length, 12r radius, 12s segments
A again 3-Point Arc Click the start, a point it passes through, then the end -
P Push/Pull Press on a face and drag, then release; or click, move, click. Double-click repeats the last distance. Hold Ctrl when you let go to pull out a new face. a distance (negative flips it)
M Move Click a solid (or select first), move, click; or drag. Ctrl copies. With faces, edges or points selected, moves that part (Alt: autofold). a distance; after a copy x3, 3x, *3 or /4
Q Rotate Click the centre on the protractor's plane, the start of the angle, then the end. Ctrl copies. an angle in degrees (90, -22.5, 30deg); after a copy x3 or /4
S Scale Drag a grip on the selection's box (or click it, move, click). Shift: uniform. Ctrl: about the centre. a factor (2, 0.5, -1), three factors (2,1,0.5), or a size with a unit (30in)
F Offset Click a face or region (or near selected edges), move inward or outward, click a distance (negative goes the other way)
W Follow Me Select the path first (edges, or a face for its edge), then click the profile -
T Tape Click two points to measure. Click an edge, then move away from it, to place a parallel guide. the offset, or a length that drops a guide point
D Dimension Click two points (or one edge), then click where the dimension line goes -
B Paint Click a face to paint it with the active material; a closed group or component takes it as its default; Ctrl+click paints the whole solid; click something selected to paint the whole selection. Alt+click picks a material up. Double-click a textured face to move, turn or scale its texture with the handles. -
Shift+Z Zoom extents
Ctrl+Z / Ctrl+Y Undo / redo (Ctrl+Shift+Z also redoes)
Ctrl+A Select all (in the open group or component)
Ctrl+G Make Group from the selection
Ctrl+Shift+G Explode the selected groups and components
Delete Erase the selection
Esc Cancels the gesture, then clears the selection, then closes the open group or component

Axis locks (any tool drawing from a start point):

Ctrl and Alt taps. In Move and Rotate a tap of Ctrl switches copying on and off (holding it on the last click works too). In Scale, Ctrl switches between scaling about the opposite grip and about the centre. In Move, Alt switches autofold.

Value Control Box. Type a value at any point in a gesture. The units are your display units unless you type one: 3/4, 1 1/2, 1-1/2, 18", 1'6", 457mm, 45.7cm, 0.457m. Click the unit label to cycle through fractional in, decimal in, ft-in, mm, cm and m. Esc clears what you typed, and Ctrl+Z still works while you type. Angles (30°, or a bare number in Rotate) and the array forms (x3, 3x, *3, /4) belong to Rotate and Move; other tools say so. A value typed right after a move, turn, scale or offset changes it (one undo step).

Inference colours #

When the cursor lands on something the tool can use, a coloured point and a tip show it. These colours are Sawhorse's own:

Colour Means
Lime Endpoint
Teal Midpoint
Amber On Edge
Violet On Face
Magenta Intersection (two edges, or a guide crossing an edge)
Blue Centre of a circle, arc or polygon
Indigo Parallel or Perpendicular to an edge (a dotted line runs from your start point)
Grey From Point: lined up with a point you hovered earlier (a dotted line runs to it)
Tan On Guide or Guide Point
Sage Grid point (on the ground, when nothing nearer wins)
Red / Green / Blue On the red, green or blue axis direction from the start point

The legend under the view lists the four most common colours.

How the snapping chooses:

Drawing on solids #

A shape drawn on a solid's face becomes part of that face:

A shape that reaches past the solid (for example, a top board drawn from one side's corner to the other's) becomes a new sketch on that plane.

Push/Pull on a face moves it along its normal and keeps the solid closed. Pushing past the far side cuts through.

Moving, turning and scaling #

Move (M). With nothing selected, Move picks up the solid you click. Select first to move several solids, or to move part of one solid: a face, an edge or a point.

Copies:

  1. Tap Ctrl (the preview turns green), then move and click.
  2. Straight after, type x3: you get three copies, each the same distance further on.
  3. Or type /4: you get four copies dividing the distance.

Another count or distance replaces the last one. Ctrl+Z takes the whole array back to before the copy.

Moving part of a solid. Select a face (or an edge, or a corner), press M and move it. Faces that stay flat follow along: lifting a top face makes the box taller, and sliding a top edge slopes the sides. If a face would have to bend, Sawhorse refuses and says which face. Tap Alt for autofold: the bent face then folds along new edges.

Rotate (Q). The protractor appears on the face under the cursor, or level on the ground.

Scale (S). Grips appear on the box around the selection (or the solid under the cursor):

Sawhorse refuses a scale that would flatten the solid, turn it inside out or fold it into itself.

A tapered leg.

  1. Draw a 2 x 2 rectangle and pull it up 28.
  2. Select the top face and press S.
  3. Tap Ctrl (about the centre), click a corner grip and type 0.6. The leg tapers to the top.
  4. To put the taper at the foot, turn the leg end for end: Q, press Right, click the middle of a side edge, and type 180.

Offset and Follow Me #

Offset (F). Click a face, then move toward its middle and type 1/2. A loop 1/2 in inside the edge is imprinted, and Push/Pull (P) raises it straight away as a tenon.

Follow Me (W).

  1. Select the path: edges joined end to end (Shift-click to add them), or one face to go round its edge.
  2. Press W. The path shows in blue.
  3. Click the profile: a face, or a region of a sketch.

The profile travels along the path and turns on a miter at every corner. A region becomes a new solid. A face adds to its solid, or cuts into it when the path runs into it.

A moulding round the top of a box.

  1. Look at one end of the box (Right).
  2. With Line, draw from the top edge, 2 in in, down to the front edge, 2 in down. That cuts off a chamfer triangle.
  3. Select the top face, press W and click the triangle. The chamfer is routed all the way round.

Paths with arcs come later.

Groups and components #

Groups. Select solids (or other groups) and press Ctrl+G (Edit > Make Group). A group selects as one: a click on any of its solids selects the whole group, and Move, Rotate and Scale move it as a unit. Double-click it to open it for editing: the rest of the model fades, a dashed box marks the group, and the status bar shows where you are ("Edit: Model › Carcass"). Inside, you edit its solids as usual; strokes you draw only stick to strokes drawn in the same group, never to the ones outside. Esc closes it again (after clearing the selection). Clicking something outside the open group closes it too and selects what you clicked. Ctrl+Shift+G (Edit > Explode) takes a group apart; its solids stay exactly where they are.

Components. Edit > Make Component asks for a name and turns the selection into a component: a definition (the shared parts) and one copy of it, called an instance. Copies you make of an instance with Move and Ctrl, or with a Move array (x3, /4), are more instances of the same component. Open any instance and change it (push a face, draw on it, add a part) and every instance changes with it. To change only one, right-click it in the Outliner and choose Make Unique: it gets its own copy of the definition ("Shelf (2)"). A cut that splits a solid in two inside a component does that by itself, so the other instances keep their solid pieces. Copies of plain solids stay plain solids.

A bookshelf in components.

  1. R, type 3/4, 11 1/4, Enter; P, type 72, Enter. Ctrl+A, then Edit > Make Component, name it Side.
  2. M, tap Ctrl, click the side's front bottom corner, press the Right arrow (red), type 35 1/4, Enter. Two sides, one component.
  3. R, type 34 1/2, 11 1/4; P, 3/4. Double-click the new board to select it, M, click it, Right arrow, 3/4: it sits between the sides. Make Component Shelf.
  4. M, tap Ctrl, click a shelf corner, Up arrow (blue), type 23 3/4, Enter, then type x3: four shelves.
  5. Double-click one shelf, click its top face, P, type 1/4: all four shelves are 1 in thick now. Esc, Esc.
  6. Right-click the top shelf in the Outliner, Make Unique, double-click it and push its top back -1/4: only that one changes.

The Outliner (right panel) is the model's tree: groups, component instances ("component · 2 of 4") and solids, folded except around the group you have open (marked "editing"). Click a row to select it (Shift adds, Ctrl toggles); selecting something inside a closed group opens what holds it. The eye hides and shows, the padlock locks (a locked group cannot be opened, moved, exploded or deleted). Double-click a name to rename it; renaming a component renames it everywhere. Right-click for Edit inside, Make Group, Make Component, Make Unique, Explode, Hide, Lock, Rename and Delete.

Tags #

Tags control what you see, nothing else: geometry stays where it is and in its group. The Tags pane lists Untagged first (everything starts there), then your tags with their colour and how many things are on each. New tag adds one and lets you type its name. Select solids, groups or components and click a tag's label button to put them on it (Untagged's takes them off). The eye shows or hides everything on the tag, including what is inside a tagged group. Click the swatch to change the colour, double-click the name to rename (scenes follow), the bin deletes the tag (what was on it becomes untagged).

Scenes #

A scene remembers the camera, which tags are hidden, which group or component is open, and the style and shadows (Styles pane). The tabs above the view are your scenes: + saves the current view as a new one, a click goes to it, double-click renames it, and right-click updates it to the current view, renames or deletes it. View > Add Scene does the same as +. Going to a scene is an undo step for the tags it switches (the camera is not).

Materials and paint #

The Materials pane (right panel, Materials) shows the active material at the top, the materials in your model (with how many faces show each), and the library below: twelve woods (White oak, Red oak, Walnut, Cherry, Hard maple, Ash, Birch, Poplar, Pine, Douglas fir, Mahogany, Western red cedar), eight sheet goods (Baltic birch ply, Maple ply, Red oak ply, MDF, Hardboard, White melamine, OSB, Particle board), sixteen colours, and glass and metal. Type in the search box ("oak", "ply") or pick a category. Click a swatch and Paint (B) starts with it; a library material goes into your model with the first coat.

Painting.

Editing a material. Click a material of your model to see its editor: rename it, change its colour, its texture's real size (type a width or a height in your units: the other follows, keeping the image's shape) and rotation, and what it is as stock. Delete takes it off everything (what was painted with it shows what is around it). Import image... makes a new material from a PNG or JPEG, one foot across until you give it its real size.

Stock. A material can say what it is: Solid lumber or Sheet goods, and the species ("White oak", "3/4 Baltic birch ply"). The library's woods and sheet goods say so already. The cut list then lists a part painted with it by that species, as lumber or sheet goods, unless you named the part's stock yourself.

Positioning a texture. Double-click a textured face with Paint (or select one face and click Position texture in the pane). Three handles appear on the face: drag the square in the middle to slide the texture, the round one to turn it about the middle, the small square to scale it. The texture follows as you drag; letting go is one undo step. Enter or Esc finishes. By default a texture's grain runs along the longer side of each face, so boards read right without positioning.

Styles and shadows #

The Styles pane (right panel, Styles) changes how the model is drawn, never the model.

Sliders show their effect as you drag and are one undo step when you let go. Styles and shadows are saved with the model, and a scene saved after changing them brings them back when you go to it.

Cut list #

The Cut list pane (right panel, Cut list) turns the model into the list of boards you cut: one row per part, with how many, its finished size in lumber terms and its material, two tiles for board feet and sheets, and the files a shop needs.

What is a part.

So make the boards you repeat components (select, Edit > Make Component): six identical sides become one row, "Side, 2".

Sizes are finished sizes: thickness, width and length (T is the smallest, L the largest). Round to starts at Follow units: the nearest 1/16 in when your units are fractional inches, decimal inches or ft-in, the nearest 0.5 mm (sizes in mm) when they are metric; the menu says which ("Follow units (1/16 in)"). It also offers 1/16 in, 1/32 in and 0.5 mm outright. With decimal-inch or ft-in units the sizes are written as decimal inches (11.25 rather than 11 1/4), in the pane and in every file. A rounding you pick lasts for this session (a reload keeps it); click Pin beside it to keep it for next time too, and click Pin again (or go back to Follow units) to stop. Rounding only changes how sizes are written: whether a part is sheet goods, its board feet, its area and the sheet count all come from its exact size, so no rounding or unit changes a total. A part made of rectangles (a board, a dadoed side, a tenon) is measured exactly. A part that is not (a tapered leg, a moulding) is noted shaped and shows the box it comes out of. A mirrored copy counts in the same row, noted handed ("1 of 2 handed" when only some are).

Grain runs along the length; a small arrow beside L shows it. While the pane is open the view draws a grain arrow on every part. To change it, right-click a row: Grain along the length, Grain across (along the width) (the arrow moves to W, and the view's arrow turns), or No grain (MDF, a painted part). Files write the grain as "along L", "across W" or "none", and a grain you set is listed in the row's notes ("grain across W", "no grain").

Material and stock. The Material column shows the part's material (the one covering most of its first solid's faces, as painted), or a dash; a material that says what stock it is shows its species and decides lumber or sheet goods. Right-click a row and choose Stock / material... to name what it is cut from ("White oak", "1/4 birch ply") and whether it counts as solid lumber, sheet goods, or (the default) whichever its name and thickness say. Names with ply, MDF, HDF, OSB, particle board, melamine or hardboard in them are sheet goods, and so is anything 1/4 in thick or thinner (its exact thickness: a 0.26 in panel is lumber even though it shows as 1/4). Mark as sheet goods / Mark as solid lumber switches the row; Use the material's name undoes the naming. Stock belongs to the component, so it is the same in every copy.

Many rows at once. Click a row, then Shift+click another to pick every row between them, or Ctrl+click to add or drop one row (Ctrl+Shift+click adds a range). Right-click any picked row and the menu (titled "3 parts: Side, Shelf, Top") acts on all of them: grain, Stock / material... (one dialog, "Stock for 3 parts"), sheet goods or lumber. It is one step: one Ctrl+Z puts them all back. Right-clicking a row that is not picked acts on that row only. Ctrl+Z and Ctrl+Y work while the pane's controls (Round to, Visible only, the buttons) have focus; only a text field you are typing in keeps them for itself.

Narrow pane. The table fits the 300 px panel at every rounding: long part names and stock end in "..." and show in full when you hover them; the right-click menu shows the row's name at the top, and the row stays marked while the menu is open.

The tiles. Board feet = T x W x L / 144 (inches) for each lumber part times its quantity, from its exact size (not the rounded one), with the species when there is one. Sheet goods are counted as a rough number of 4 x 8 sheets (their area divided by a sheet's, rounded up), with the stock and thickness. That count is a rough estimate; Nesting (below) lays the parts out on real sheets and boards, kerf included. Edge banding is not included.

Hidden parts (the Outliner's eye, a hidden tag, a hidden group) stay in the list with a "hidden" note. Tick Visible only to leave them out of the rows and the totals.

A row click selects that part's pieces in the model (Shift+click picks a range of rows, Ctrl+click adds or drops one). When they all sit inside one closed group or component, it opens that first, as the Outliner does; picked rows in several places select the groups or components that hold them.

Files.

Each file is offered through the same save dialog as an export, named after your model ("Bookshelf cut list.csv", "Bookshelf labels.pdf").

The bookshelf as components. This builds the bookshelf the cut list tests use. Sizes in inches; typed values need no click first.

  1. The back panel, while there is room: R, 34 1/2, 71 1/4, Enter; P, 1/4, Enter. Double-click it, Q, Right arrow, click its corner at the origin, click along its long edge, type 90 (or -90 if it turned down into the ground): it stands up. Move it (M) 3/4 along red and back along green to 11. Edit > Make Component, Back panel.
  2. Sides: R, 3/4, 11 1/4; P, 71 1/4. Double-click it, Make Component Side. M, tap Ctrl, click its front bottom corner, Right arrow, 35 1/4.
  3. Top: R, 36, 11 1/4; P, 3/4; double-click it, M, Up arrow, 71 1/4. Make Component Top.
  4. Toe kick: R, 34 1/2, 3/4; P, 3 1/2; move it 3/4 along red and 2 along green. Make Component Toe kick.
  5. Shelves: R, 34 1/2, 11; P, 3/4; move it 3/4 along red and 3 1/2 up. Make Component Shelf. M, tap Ctrl, click a corner, Up arrow, 18, then x3.

The Cut list then reads: Side 2, 3/4 x 11 1/4 x 71 1/4; Top 1, 3/4 x 11 1/4 x 36; Toe kick 1, 3/4 x 3 1/2 x 34 1/2; Shelf 4, 3/4 x 11 x 34 1/2; Back panel 1, 1/4 x 34 1/2 x 71 1/4 (sheet). That is 2,735.15625 cubic inches of lumber, 18.99 board feet, and 1 sheet of 1/4 in stock. Right-click the Top, Grain across: its arrow turns. Right-click the Back panel, Stock, 1/4 birch ply, Sheet goods. Then CSV, PDF, Print and Labels.

Nesting (cutting diagrams) #

Nesting › at the bottom of the Cut list opens the Nesting section under the list: every piece of every part laid out on real sheets and boards, the cuts that free them, and what to buy. It works itself out again a moment after every change you make, and it is the same in the browser and on the desktop: the same model always gives the same layout.

What it is cut from. Each part's stock is chosen in this order:

  1. The part's own stock (right-click its row, Stock / material...), when that names a stock in the library ("4 x 8 MDF, 3/4"). A part named for a stock of the wrong thickness is listed as not placed.
  2. Its material's stock, set in the Stock... dialog ("Oak" from "4/4 x 8 x 96").
  3. Otherwise automatically. Sheet goods come from the sheet of their thickness (within 1/16 in, so a part drawn 3/4 in comes from 23/32 in "3/4" ply). Solid lumber comes from boards of the thinnest nominal thickness that covers it (4/4 for 3/4 in parts); all the parts of one material and thickness share one board size, the narrowest board as wide as the widest of them, so a narrow part rides on the offcuts of the wide ones.

Parts of different materials never share a sheet or a board.

The library (the Stock... button) starts with 4 x 8 sheets at 3/4, 1/2 and 1/4 in, 5 x 5 Baltic birch at 3/4 and 1/2 in, 4 x 8 MDF (no grain), 4/4 boards (13/16 in actual) 4, 6, 8 and 12 in wide, and 5/4, 6/4, 8/4 and 12/4 boards 6 in wide, all 8 ft long. In the dialog: pick each material's stock (or Automatic); Edit or Delete a stock; add one (name, sheet or board, width, length, thickness, a board's nominal thickness, grain along the length or none); Built-in stock puts everything back. Lengths run along the grain. Type sizes as anywhere else ("48", "5'", "1219mm"). Every change is one undo step and is saved with the model.

Saw, kerf and trim. Saw: Table saw (the default) lays sheets out so they come apart in straight cuts from edge to edge, the way a table saw or panel saw cuts. Tightest (CNC) packs parts as tightly as their rectangles allow; some of its layouts need a track saw, a jigsaw or a CNC (the diagram says "not all straight cuts"). Kerf is the width of every cut (1/8 in to start; type 3/32 for a thin-kerf blade). Trim is taken off every edge of a sheet and both ends of a board before anything else (factory edges, checked ends). Both commit when you press Enter, leave the field, or stop typing.

Grain. A part's grain runs along each sheet's and board's length, so a part is never turned across the grain; it turns 90 degrees only when it, or the stock (MDF), has no grain. Set a part's grain across (right-click its row) and it lies across the sheet.

Reading it.

Files. SVG saves one drawing per sheet or board, 1:1 in millimetres (it prints or projects to scale): every part outlined and labelled with its tag, name and size, the overall dimensions, every cut numbered where it starts, and the cut sequence written underneath. Each diagram's own SVG link saves just that one. DXF saves every sheet and board in one file for a CNC router or a laser, in millimetres: a closed polyline per part on a layer per sheet or board (SHEET-01, BOARD-02, ...), the stock outlines on layer STOCK and the tags as text on layer LABELS, so the CAM program can cut one layer and ignore the rest. DXF R12 is the same with old-style polylines, for programs that read only R12. PDF saves a booklet: a first page with what to buy (each stock and material, how many, the yield, board feet), the settings, any parts on no stock and an index; then a page per sheet or board with its diagram to scale, its parts and its cut sequence.

The bookshelf. Build the bookshelf above and name its back panel 1/4 birch ply, then open Nesting: the carcass, top, shelves and toe kick (3/4 in, no material) come from five 4/4 x 12 x 96 boards (each side takes a board, with 24 5/8 in left that nothing fits; the top and the toe kick share one; the four shelves go two to a board) and the back from one 4 x 8 sheet of 1/4 in: 6,105 sq in of parts from 10,368 sq in of stock, 58.9% yield. Name the carcass "3/4 birch ply" too and it becomes three sheets: two of 3/4 in (four 11 1/4 in strips fit across a sheet, but nothing 34 1/2 in long fits beside a 71 1/4 in side) and the back's.

When a cut goes all the way through #

A push, or a Follow Me cut, that cuts a board in two leaves two solids. The piece that keeps the board's smallest face id keeps its name ("solid 3"); the other gets the next number. Both stay in the board's group. Inside a component used more than once, the cut makes that instance unique first, so the other instances are not cut.

Unsaved work #

Sawhorse keeps your work in this browser as you go. If the tab closes or reloads, the status line offers Restore unsaved work? with Restore and Discard; Edit > Restore Unsaved Work does the same while the offer stands. Restoring brings the undo history back too. Real files (.shz) arrive with their lane.

This page on GitHub · Sawhorse home