DEV Community

Matthew Armstrong
Matthew Armstrong

Posted on Edited on

Twoo STEP CAD Toolbox

(The name is a play on **to, **two* and too; it stands for the all-in-one approach.)*

Possibly the most advanced and functional free (for non-commercial use) solid conversion software in the world: STL meshes, hardpoint STL files, OpenSCAD models and photos of flat parts to real, editable STEP solids, offline, on Linux, macOS and Windows.

Source-available · Non-commercial — licensed under the PolyForm Noncommercial License 1.0.0.
Provided as is, with no warranty and no liability. Check converted files before relying on them.

This is the long-term-support successor of STL2STEP / EVERYTHING to solid.
That app (last version 0.10.3, which is 0.10.2 plus the graphics-card fix) is frozen as a finished, dead-end project and stays online for anyone who wants to read it:
https://github.com/The-Dorkknight/stl2step. This repository carries all of its history (the full changelog,
research notes and logs are in docs/history and docs/research) and what comes next.
The story of the split is in LEGACY.md; what "long-term support" does and does not promise is in
LTS_POLICY.md.

Preview of a converted part

One portable folder that turns things into real STEP solids (true planes, cylinders, spheres and fitted
NURBS, not thousands of triangles). Every tool in it is a plug-in with a small manifest; the web page, the
command line, a FreeCAD workbench and a Fusion add-in are all built on the same five.

Plug-in What it does Status
Mesh → STEP (mesh2step) STL / OBJ / PLY / 3MF mesh → STEP solid, with four presets (Draft, Quick, Standard, Fine) and Advanced… for every setting. Also Extrude outline and Loft for flat-profile and tapered parts. stable core, experimental engines
Hardpoint STL (hardpoint) Reads an STL that also remembers which CAD face each triangle came from and rebuilds the solid from those faces instead of guessing; or turns a plain STL into one. stable
OpenSCAD → STEP (scad2step) Rebuilds an OpenSCAD model as real CAD geometry (true cylinders, spheres, swept surfaces, exact booleans). Customizer fields, preview, live link. stable
Jetwash (jetwash) Cleans slivers, 0.0001 mm steps, thin fins, specks and tiny holes out of an existing STEP file; every removal is checked and rolled back if it would damage the part. stable
Image → STEP (image2step) Traces a photo, scan or drawing of a flat part into CAD curves and saves a STEP: a solid of the thickness you type, or the flat shape. experimental

It runs in your web browser from one portable folder; nothing is installed on your system. Mac, Windows and Linux.

What the different ways of converting look like

Pick a quality preset (or Advanced… for every setting). Each button shows how hard it works your computer (red)
and how good the result is (green):

The four quality presets as shown in the app: Draft, Quick, Standard, Fine, and Advanced

The same three meshes converted the normal way (Classic, the original converter) and with roughing first
(the Staged way, which the Quick and Standard presets now use for turned and flat-sided parts): far fewer, cleaner
faces, and faster.

Three parts as input mesh, Classic result and Staged result: vase 8,665 faces against 14, torus 605 against 9, tray 1,927 against 131

An organic test model with Guesstimate on: flat faces and holes stay exact, freeform areas are allowed to sit a
little further from the mesh, so it finishes in minutes instead of grinding for hours.

The ghost test model: input mesh, Classic with Guesstimate, Staged with Guesstimate

More pictures, and every measurement behind them, are in the research paper
SOLID evidence (PDF).

Reporting a problem? The 3D preview carries a Diagnostic panel: the job's settings and result as a QR code and
in plain words. One screenshot of it says it all (how it works).

Command line (optional)

Pass arguments to the start file, or run python run_tostep.py … with the private Python:

./twoo-step-cad-toolbox-linux.sh part.stl                         # → part.step
./twoo-step-cad-toolbox-linux.sh convert part.stl out.step --preset quick
./twoo-step-cad-toolbox-linux.sh wash old.step --threshold 0.05
./twoo-step-cad-toolbox-linux.sh scad model.scad -D width=40
./twoo-step-cad-toolbox-linux.sh image photo.jpg --part-above-token 10 --thickness 10
./twoo-step-cad-toolbox-linux.sh hardpoints part.stl
./twoo-step-cad-toolbox-linux.sh diag screenshot.png
./twoo-step-cad-toolbox-linux.sh plugins                          # what is installed, and anything broken
Enter fullscreen mode Exit fullscreen mode

Which commands exist comes from the plug-ins. The classic converter stays the default on the command line and in the CAD plug-ins; new engines are opt-in.
More: docs/guide/using.md.

FreeCAD and Fusion

Open the Install tab and click Install FreeCAD plug-in or Install Fusion add-in (or run install freecad / install fusion). Both are thin front ends:
they send the mesh to this folder, it converts in the background and the solid comes back into your model. Start the toolbox once first so its setup is done.
Details and manual install: docs/guide/cad-plugins.md. Neither has been run in a real FreeCAD or Fusion yet (see below).

What to read next

docs/guide One page per feature: hardpoints, OpenSCAD, images, engines, performance, troubleshooting
HOW_IT_WORKS.md The pipeline, step by step
ARCHITECTURE.md · docs/PLUGIN_CONTRACT.md · docs/ADDING_A_PLUGIN.md How it is put together, and how to add a tool
MAINTAINING.md · docs/DECISIONS.md · LTS_POLICY.md For whoever looks after it next
docs/KNOWN_LIMITATIONS.md What has and has not been tested, honestly
docs/research · SOLID_EVIDENCE The research notes and the defensive publication of every method
CHANGELOG.md · docs/history What changed, including the whole STL2STEP history
docs/MIGRATING_FROM_STL2STEP.md New names for old commands, settings and environment variables

Honest status

  • Work in progress. Expect rough edges. Version 0.11.0-wip moved the whole 0.10.2 app into a plug-in structure without changing what the converters do: on the test knob the new layout writes a STEP file of the same size and face count as 0.10.2, and the old test-suite ports pass. The release gate (tools/golden.py) is described in benchmarks/README.md.
  • Linux is the only tested platform. The Windows and macOS start files and the FreeCAD and Fusion plug-ins have not been run on real Windows, macOS, FreeCAD or Fusion. Version 1.0 is gated on that: LTS_POLICY.md.
  • A plain 96-sided cylinder converted with the default Classic engine stays 98 flat strips; Standard and Quick make it 3 true faces. Known, measured and locked in the release gate so it can only get better.
  • The result is a solid of surfaces, not an editable feature history (no sketches / extrudes).

Source code: The-Dorkknight/Twoo-STEP-CAD-Toolbox-0.11.1-wip-everything on GitHub

Top comments (0)