Repository navigation
Releases: sawhorse3d/sawhorse
Release list
Sawhorse 0.1.0-alpha.4
Sawhorse 0.1.0-alpha.4
A pre-release: free, open source (MIT OR Apache-2.0), no account. Try it in the browser at https://sawhorse3d.com/app/ or install it below.
What is new since 0.1.0-alpha.3
A circle, an arc or a polygon is one curve (#3)
- Select it whole. Hovering any segment highlights the whole curve, and a click selects it. The status line says what it is, in your units: "Selected a circle (24 segments, radius 300 mm)". Shift and Ctrl add and toggle the whole curve. A window takes a curve only when all of it is inside; a crossing box takes it when it touches any segment. A click exactly on one of its points still selects that point.
- Move, Rotate, Scale and Ctrl-copy it as one. A circle that is moved, turned or scaled evenly is still a circle, with its new centre and radius ("Scaled a circle ×2: radius 600 mm."). Each copy is a new curve. Moving one point of a curve on its own is refused, and the message names Edit > Explode Curve. SketchUp bends the curve instead; this is a deliberate difference (ADR-0013).
- Erase it as one. The Eraser takes the whole curve on a click or across a drag, in one undo step. A drag across a circle or a polygon takes the face inside it too, and one Ctrl+Z brings both back. Edit > Explode Curve turns the selected curves back into plain edges.
- Drawing across a curve splits it. A line across a circle leaves two arcs, and each one selects whole.
- Rims stay curves after Push/Pull. Pull a circle or a polygon into a solid and the curve becomes the rim of both ends: a click on a rim selects all of it. The walls of a pulled circle come out soft and smooth, so it reads as a cylinder; a polygon's walls stay hard. Push it back flat and the circle is a curve in the sketch again.
- Centre inference. Hover a segment of a circle, an arc or a polygon with a drawing or moving tool and its centre shows as a small blue dot labelled Centre. Move there and the cursor snaps to it.
- Offset of a circle moves its radius, as SketchUp does: a 200 mm circle offset 50 mm out is a 250 mm circle with the same 24 segments. An arc and a polygon offset the same way.
- Saved
.shzfiles keep curves and rims, and older files open as before.
Sketch geometry moves (#2)
- Move, Rotate, Scale, Ctrl-copy and arrays (
x3,/4) work on lines, rectangles, circles, arcs and polygons before they are pulled into a solid. They use the same inference, arrow-key locks, typed distances and one undo step as a solid. "Sketch edges don't move yet" is gone. - Part of a shape moves within its plane. Drag one corner of a rectangle and its two edges stretch to it; the rest stays put.
- A whole shape moves anywhere. Lift it off the ground and it lands on a new plane, ready to push/pull.
- What it lands on joins it, as drawing there would. Touching edges become one, crossing edges split both shapes, and a move that would twist a face into a bow-tie splits it in two.
- Moved and copied shapes push/pull like any other: the solid is exactly the shape's area times the distance.
Fixed
- Messages read as sentences. A refusal that names something no longer there says so in words ("that curve no longer exists"), for section planes, sheets and their items too. Move, Rotate and Scale count shapes, so a circle and its face are one ("Moved 2 circles 100 mm along +red"). The box beside the Scale factor no longer shows "mm" next to a factor of 2.
- Drawings of soft edges. Sheet viewports and SVG drawings draw a soft edge only where it is the outline. A cylinder's front elevation is two lines, its sides, not its 24 seams. Hidden edges are left out of sheet viewports, as they already were of SVG drawings.
- A DXF's
CIRCLEandARCcome in as curves, and the import report counts them ("3 curves came in as curves"). - Geometry far from the origin, or very thin. The property tests and the fuzzer found several kernel bugs a user could have hit. A tiny part far from the origin could show the wrong volume: a 0.1 mm cylinder 6.6 km out, turned, measured 244 times its real volume. A very thin shape far out could leave the view unable to draw the model, for example a 0.07 mm band inside a 9 km circle; so could two holes in a face that touch at one point. Create Group from Slice could refuse a cap far along a tilted plane. Two edges crossing at an angle too small to see could put a point at infinity, which only reopening the saved file noticed. All of these are fixed, and each case found is now a test.
The full list is in the changelog.
Not yet
.skpexport (you can open SketchUp files, not save them).- Fillet and chamfer tools.
- Copy and paste in place.
- Back and Bottom views.
- Text, and radius or diameter dimensions in the model.
- Weld Edges: erasing the line that split a circle leaves two arcs.
- Signed installers (see below; the plan is in the code signing policy).
- Render credits: not launched. The app shows nothing about them unless you set a render service of your own in Edit > Settings.
Known limits
- A circle drawn on a solid's face is plain edges, not a curve. It imprints or cuts the face as before, and pulling it gives walls without rims. To get a curve, draw the circle in a sketch (off the solid) and push it.
- SketchUp files' curves come in as plain edges. openskp 1.3.0, which reads
.skpfiles, keeps no record of which edges make up a curve, and Sawhorse does not guess (skp-compat.md). A SketchUp circle's segments move, erase and offset as edges; its centre still snaps. - Zoomed out on a large circle, a click in the middle of a segment can pick a point instead of the circle, because short segments on screen leave little room between the points. Zoom in, or use a selection window (#12).
- Moving or importing many curves is slow. The time grows faster than their number: 200 circles took about 3 s to move and 400 about 10 s on the development machine (#11).
- After a move that splits a shape where it lands, for example a circle dropped across a rectangle's edge, the selection is not updated to the pieces it leaves. Click again to select what you want; the geometry itself is right (#7).
- A Move drag in a big sketch stutters. Each preview frame works out every edge of the sketch, not only the moving ones, so dragging keeps up only to about 1,500 to 2,000 sketch edges on the development machine (#8).
- A rectangle drawn after another can now and then land on a vertical plane instead of the ground. It has been seen only in scripted runs, with no steps that repeat it yet. Undo and draw it again (#9).
- A scene saved with the default style does not bring the grid back. Going to such a scene leaves the style as it is, so a grid hidden after the scene was saved stays hidden. Show it again with View > Grid. Updating the scene while the grid shows does not help, because it saves the default style again. A scene saved with any other style (X-ray faces, say, or the grid hidden) puts its grid back as it was saved. Tracked as #6.
- Models of a few thousand faces are quick; a 13.5k-face SketchUp office opened in about 4.5 s on the development machine. docs/LIMITS.md has the measurements and the hard limits.
- openskp 1.3.0 refuses a real SketchUp 2018 save and files from SketchUp 2012 and older (what comes across from the rest).
- Parts sized from their bounds are exact for boards and generous for anything slanted or rounded: check them against what you mean to build.
- The installers are not code-signed yet (below).
Unsigned installers
The installers are built in the open by GitHub Actions but are not code-signed yet, so the system warns before the first launch. To open them:
Windows (the .exe or the .msi)
- Run the installer. Windows shows "Windows protected your PC".
- Click More info.
- Click Run anyway.
macOS (the .dmg, Apple Silicon)
- Open the disk image and drag Sawhorse to Applications.
- Open Sawhorse. macOS says it cannot verify the app; click Done (not Move to Trash).
- Open System Settings > Privacy & Security, scroll to Security: "Sawhorse was blocked to protect your Mac". Click Open Anyway.
- Confirm with your password or Touch ID, then click Open Anyway once more. Later launches open normally.
Linux: the .AppImage needs to be made executable (chmod +x Sawhorse_*.AppImage); the .deb and .rpm install as usual.
To check a download against the release, put it next to SHA256SUMS.txt and run sha256sum -c --ignore-missing SHA256SUMS.txt (Linux; on macOS shasum -a 256 -c --ignore-missing SHA256SUMS.txt; on Windows compare Get-FileHash <file> with its line).
Downloads
| System | File |
|---|---|
| Windows 64-bit | Sawhorse_0.1.0-alpha.4_x64-setup.exe, or Sawhorse_0.1.0-alpha.4_x64_en-US.msi (MSI version 0.1.0.4) |
| macOS, Apple Silicon | Sawhorse_0.1.0-alpha.4_aarch64.dmg |
| Linux x86-64 | Sawhorse_0.1.0-alpha.4_amd64.AppImage, Sawhorse_0.1.0-alpha.4_amd64.deb, Sawhorse-0.1.0-alpha.4-1.x86_64.rpm |
| Checksums | SHA256SUMS.txt: the SHA-256 of every other file on the release (the installers above and `Sawhorse_... |
Sawhorse 0.1.0-alpha.3
A pre-release: free, open source (MIT OR Apache-2.0), no account. Try it in the browser at https://sawhorse3d.com/app/ or install it below.
What is new since 0.1.0-alpha.2
Section planes you can trust
- The cap closes the half it caps, whatever the geometry. The section cut is rebuilt on the solid's own triangles: every corner's distance from the plane is worked out once, the faces the plane splits are clipped along the triangles the solid's volume is measured by, and the cap is laid from exactly the edges that clipping leaves open. The alpha.2 caveat (in about one of every 130,000 random edit sequences, a face nudged to within a micrometre of a plane and then drawn on left the cut-away half without a cap) is gone, and so is the family of cases behind it: the property tests and the fuzzer now hold every cut to the cross-section of the solid worked out without the cut, at 100,000 cases a run (ADR-0010, lane 19c).
- Faster. A cut through the 13,562-face office fit-out takes 0.3 to 1.8 ms instead of 54 to 57 ms, with the same caps.
- A face lying exactly on a plane counts as kept, so the two ways a plane can face through it give different caps by design (user guide).
Getting around the model
- Orbit turns about the point under the cursor, and that point stays put (#5). Pressing the middle button picks the pivot (a corner or an edge near the cursor, else the face or the ground under it), a small crosshair marks it while you drag, and the model turns about it without swinging away. No lock near straight down or up: the tilt stops half a degree short and the turn across keeps working. Right-drag and Shift+middle-drag pan with the point under the cursor; the wheel zooms toward the cursor.
- View > Grid shows and hides the ground grid, as does Ground grid in the Styles pane (#4). It is one undo step and is saved with the file; a scene brings it back only when the scene was saved with a style of its own (see Known limits). Points on the ground still snap to grid steps when it is hidden.
For the shop
- A whole piece of furniture drawn as one block is not a board. A coffee table drawn as one closed 16 x 24 x 48 in block counted 128 board feet of 4/4. A part thicker than any board and over 12 in both ways, a thick solid more than 30% empty (a lamp, a stool) and lumber wider than 4 ft are now listed with their reason and not counted or nested; the Cut list's header says how many and why.
- No ellipsis in the Cut list table. Names, sizes and notes wrap instead of being cut off ("22 13/..."), the reason a part is not counted shows under its row instead of in a tooltip, and the panel is wider.
Fixed
- No triangle of a face stands off it: a face whose corners lie nearly in a line along an edge no longer gets a sliver triangle folded over a neighbouring face (it showed up in section caps; the volume, exports and booleans use the same triangles).
- Section cap rings never cross, including a hole touching its outer ring and caps clipped by a second plane.
- The render service's health check takes only the service's own answer: a catch-all server (a static host, a router's page, a sign-in page) no longer shows the Credits chip and the Render pane.
- A value typed right after a tool key goes to that tool. Pressing P while a rectangle was still being made, then typing a distance and Enter at once, could hand the distance to the Rectangle tool ("Rect takes two sizes separated by a comma") on a busy machine.
- Clicking a submenu (Plugins > a plugin's name) after pointing at it no longer closes it again.
- The docs say only what is true:
1'-1-1/2"reads as 13 1/2 in, the SketchUp 2018 issue is a draft not yet filed, and OpenCutList is free to download, open source (GPLv3) and donor-funded.
The full list is in the changelog.
Not yet
.skpexport (you can open SketchUp files, not save them).- Fillet and chamfer tools.
- Copy and paste in place.
- Back and Bottom views.
- Text, and radius or diameter dimensions in the model.
- Signed installers (see below; the plan is in the code signing policy).
- Render credits: not launched; the app shows nothing about them unless you set a render service of your own in Edit > Settings.
Known limits
- Sketch geometry cannot be moved or rotated before it is pushed into a solid (#2): Move and Rotate refuse a loose circle, rectangle or line. Push/pull it first, or redraw it where you want it.
- A circle, arc or polygon is selected one segment at a time (#3): clicking it picks the segment or corner under the cursor, not the whole curve.
- A scene saved with the default style does not bring the grid back. Such a scene leaves the style as it is when you go to it, so a grid hidden after the scene was saved stays hidden. Show it again with View > Grid. Updating the scene while the grid shows does not change this, since the default style is still what it saves; a scene saved with any other style (X-ray faces, say, or the grid hidden) puts its grid back as it was saved. Tracked as #6.
- Models of a few thousand faces are quick; a 13.5k-face SketchUp office opened in about 4.5 s on the development machine. docs/LIMITS.md has the measurements and the hard limits.
- openskp 1.3.0 refuses a real SketchUp 2018 save and files from SketchUp 2012 and older (what comes across from the rest).
- Parts sized from their bounds are exact for boards and generous for anything slanted or rounded: check them against what you mean to build.
- The installers are not code-signed yet (below).
Unsigned installers
The installers are built in the open by GitHub Actions but are not code-signed yet, so the system warns before the first launch. To open them:
Windows (the .exe or the .msi)
- Run the installer. Windows shows "Windows protected your PC".
- Click More info.
- Click Run anyway.
macOS (the .dmg, Apple Silicon)
- Open the disk image and drag Sawhorse to Applications.
- Open Sawhorse. macOS says it cannot verify the app; click Done (not Move to Trash).
- Open System Settings > Privacy & Security, scroll to Security: "Sawhorse was blocked to protect your Mac". Click Open Anyway.
- Confirm with your password or Touch ID, then click Open Anyway once more. Later launches open normally.
Linux: the .AppImage needs to be made executable (chmod +x Sawhorse_*.AppImage); the .deb and .rpm install as usual.
To check a download against the release, put it next to SHA256SUMS.txt and run sha256sum -c --ignore-missing SHA256SUMS.txt (Linux; on macOS shasum -a 256 -c --ignore-missing SHA256SUMS.txt; on Windows compare Get-FileHash <file> with its line).
Downloads
| System | File |
|---|---|
| Windows 64-bit | Sawhorse_0.1.0-alpha.3_x64-setup.exe, or Sawhorse_0.1.0-alpha.3_x64_en-US.msi (MSI version 0.1.0.3) |
| macOS, Apple Silicon | Sawhorse_0.1.0-alpha.3_aarch64.dmg |
| Linux x86-64 | Sawhorse_0.1.0-alpha.3_amd64.AppImage, Sawhorse_0.1.0-alpha.3_amd64.deb, Sawhorse-0.1.0-alpha.3-1.x86_64.rpm |
| Checksums | SHA256SUMS.txt: the SHA-256 of every other file on the release (the installers above and Sawhorse_aarch64.app.tar.gz, the macOS app as an archive), one <sha256> <file> line each, written by the release workflow from the files it uploaded |
Every file is on the release page, github.com/sawhorse3d/sawhorse/releases/tag/v0.1.0-alpha.3, and linked from sawhorse3d.com.
Thanks to the first outside testers: pilou on SketchUcation, and two readers on r/rust.
SketchUp is a trademark of Trimble Inc.; Sawhorse is not affiliated with Trimble. Thanks to Corynth for the CC BY 4.0 furniture models the CI opens on every change.
Sawhorse 0.1.0-alpha.2
A pre-release: free, open source (MIT OR Apache-2.0), no account. Try it in the browser at https://sawhorse3d.com/app/ or install it below.
What is new since 0.1.0-alpha.1
For the shop
- Cut list from furniture that is not a solid. Most furniture drawn in SketchUp is open faces. A group or component of them is now a part: Sawhorse tries to close it, and otherwise sizes it from the box around it and flags it "not solid (sizes from bounds)" in the pane, the CSV, the PDF, the labels and the nesting booklet. Loose faces are counted, and Make parts from loose faces turns each connected piece into a part. Untick a part to leave it out of the totals.
- Board feet on the lumber you buy. Board feet are counted on the rough (nominal) thickness: a 3/4 in shelf comes from 4/4, one inch. The stock library knows nominal and actual thickness (3/4 ply is 23/32, 4/4 S4S is 3/4, 5/4 is 1 1/16 ...), fills the actual one in from the nominal, and lets you type your supplier's.
- Fractions typed every way:
1-1/2",1 1/2,1.5",1½and1'-1-1/2"all read the same in every length field.
Modeling and looks
- Materials and textures you can paint on faces, solids, groups and components and position with handles; styles (shaded, hidden line, X-ray, shop drawing ...) and shadows from a sun by date and time. (lane 10)
- Soft and smooth edges: the Eraser softens (Ctrl), hides (Shift) and unsoftens (Ctrl+Shift); Soften edges by angle in the Styles pane. Round parts read round, and SketchUp's soft edges come in as they were.
- Section planes with exact filled cuts, and drawing sheets: scaled viewports, dimensions, labels, a cut-list table and a title block, out as PDF, SVG, DXF and PNG, or printed. (lane 12)
- Plugins: tools, panels and commands in sandboxed JavaScript with declared permissions; three samples. (lane 11)
Files
.skp: a definition someone named and placed once comes in as a component (a "Leg"), as SketchUp made it; an empty file opens as an empty model in its own units..shzthumbnails are small WebP pictures.
Fixed: many, from two independent verifications; see the changelog.
Security: the plugin sandbox's three locks (an allowlist of globals, the page's content security policy, sources parsed before they run); a plugin could reach the network through FontFace before (fixed in lane 11, never in a release).
Not yet
.skpexport (you can open SketchUp files, not save them).- Fillet and chamfer tools.
- Copy and paste in place.
- Back and Bottom views.
- Text, and radius or diameter dimensions in the model.
- Signed installers (see below).
- Render credits: not launched; the app shows nothing about them unless you set a render service of your own in Edit > Settings.
Known limits
- Models of a few thousand faces are quick; a 13.5k-face SketchUp office opened in about 4 s on the development machine. docs/LIMITS.md has the measurements and the hard limits.
- openskp 1.3.0 refuses a real SketchUp 2018 save and files from SketchUp 2012 and older (what comes across from the rest).
- Parts sized from their bounds are exact for boards and generous for anything slanted or rounded: check them against what you mean to build.
- Section planes: in about one of every 130,000 random edit sequences the fuzzer finds a case where a face nudged to within a micrometre of an active section plane, and then drawn on, leaves the cut-away half without a cap. The viewport shows the gap, nothing is corrupted, and moving the plane a hair fixes it. The tie rule gets its own fix in alpha.3.
Unsigned installers
The installers are built in the open by GitHub Actions but are not code-signed yet, so the system warns before the first launch. To open them:
Windows (the .exe or the .msi)
- Run the installer. Windows shows "Windows protected your PC".
- Click More info.
- Click Run anyway.
macOS (the .dmg, Apple Silicon)
- Open the disk image and drag Sawhorse to Applications.
- Open Sawhorse. macOS says it cannot verify the app; click Done (not Move to Trash).
- Open System Settings > Privacy & Security, scroll to Security: "Sawhorse was blocked to protect your Mac". Click Open Anyway.
- Confirm with your password or Touch ID, then click Open Anyway once more. Later launches open normally.
Linux: the .AppImage needs to be made executable (chmod +x Sawhorse_*.AppImage); the .deb and .rpm install as usual.
Downloads
| System | File |
|---|---|
| Windows 64-bit | Sawhorse_0.1.0-alpha.2_x64-setup.exe, or Sawhorse_0.1.0-alpha.2_x64_en-US.msi (MSI version 0.1.0.2) |
| macOS, Apple Silicon | Sawhorse_0.1.0-alpha.2_aarch64.dmg |
| Linux x86-64 | Sawhorse_0.1.0-alpha.2_amd64.AppImage, Sawhorse_0.1.0-alpha.2_amd64.deb, Sawhorse-0.1.0~alpha.2-1.x86_64.rpm |
(The names follow the release workflow; check them against the release page when it is published, and correct site/index.html if one differs.)
SketchUp is a trademark of Trimble Inc.; Sawhorse is not affiliated with Trimble. Thanks to Corynth for the CC BY 4.0 furniture models the CI opens on every change.