SolidCraft 0.40.0 runs its modeling on a new geometry kernel, solidcore. Designs from every earlier version open in it and rebuild their timeline on the new kernel. Designs saved in 0.40.0 use format 53, which 0.30.1 and older can't open, so keep a copy of anything you care about before you save it here.
SolidCraft is open-source parametric 3D CAD in Rust: sketch, constrain, extrude, and change a parameter to watch the timeline rebuild. Website · documentation · try it in the browser · Discord · issues · roadmap.
This is the first stable release since 0.30.1. It went through four release candidates, and these notes cover everything since 0.30.1. If you tried the candidates, the changes since rc.4 are at the end.
A new geometry kernel
Booleans, fillets, chamfers, shells, threads, sweeps and lofts now all run on solidcore, a B-rep kernel in safe Rust based on NVIDIA's SMLib (from USD BRep). It's the only kernel in this build; there's no setting to go back. solidcore now lives in SolidCraft's own repository, so a kernel fix and the app change that needs it land together.
- Earlier designs rebuild on solidcore when they open. A design can come out a little differently, with different face or edge counts. A feature that no longer builds reports an error and doesn't take the rest of the design down with it.
- More fillets and rounds build: variable rounds along an edge, three rounds meeting at a corner, a round at the foot of a boss a few degrees off square, rounds over a smooth far edge, and Mitre or Swept corners where two rounds turn round a sharp edge.
- Cancel stops the kernel. Cancel or Esc on a feature that's computing stops its kernel work and applies nothing. An operations panel in the corner of the view shows long operations with their progress, each with its own Cancel. Closing a design stops its work, and a long operation in one design no longer holds up the others.
A new mesher
The code that turns a design into triangles, for the 3D view and for STL, OBJ, 3MF and GLB export, is now one mesher in the kernel. It replaces two.
- Flat faces are exact and light: a box exports as 12 triangles, not 124.
- Much faster: across the 1,265 test bodies we compare meshers on, meshing for the view takes 16 s in total, against 253 s with the old mesher. A plate with 50,000 holes meshes in under 9 seconds instead of 103.
- Better-shaped triangles, with about a third fewer needle-thin ones.
- A face the mesher can't read is left out of the picture instead of the whole body disappearing.
One STEP reader
SolidCraft's STEP reader and solidcore's are now one reader with the best of both.
- More files open. Of the 220 files in our test collection that any reader opens, this one opens 215 (0.30.1's reader opened 195), and more of them come in with every body closed. Rings and tori, periodic splines, faceted solids, splines closed in one direction and files written with short entity names now read properly.
- A bad face no longer costs a part. It's left out, the rest of the solid comes in as surfaces, and the import's warnings name each missing face. A solid with voids is handled the same way.
- A real engine assembly loads complete. An engine assembly a user sent lost its engine block and cylinder head on import. It now reads all 198 solids closed, and a sliver face on its crankshaft is drawn.
- Colours keep the names the file gives them, and a curve's style no longer colours the solid.
Faster
- Extrusions, revolutions and sweeps name their new faces from exact geometry instead of meshing the body, so rebuilds are faster.
- A feature's bodies are checked on another core while the next features evaluate.
- Large flat extrusions, such as a plate full of holes, are about 10× faster, and joins of prisms about 1.5× faster.
- Dense SVG and DXF drawings insert many times faster.
New
- Assemblies: place a part by a rule such as Mate, Flush or Distance, and edit the rule later. Reference a placed component's origin planes, axes and point, and use them as joint sides. Capture Position also saves joint values. Find Limits fills a joint's range from where the parts first touch. Align follows frames on the moving body and the target.
- Notes: text pinned to a point on the model, always facing you.
- Sketch: planar loops of 3D sketch curves become profiles, sketch text can be placed by its top, middle, baseline or bottom, a line started on an arc snaps tangent, and the cursor's coordinates show over the view.
- Sweep: a body's edge can be the sweep's path.
- Sheet metal: one edge flange can bend stretches of an edge to their own angle and height.
- Weldments: End Cap closes the ends of frame members with a plate.
- Hole: a counterbore sized to the screw's head, and a 12 mm hole takes an M12 thread.
- Viewport: double-click a face to edit the feature that made it, keyboard orbit, pan and zoom, and the graphics API can be chosen in Preferences.
- Rendering: PBR materials in the palette, less speckle on polished metal, quality controls and progressive previews.
- Import and export: GLB export, a thumbnail in 3MF files, drop a PNG or JPEG on the window to place it as a canvas, and an export file name template.
- Preferences: new page layouts, with a theme carousel and live previews under Appearance.
- Languages: Latvian is new, and many others are more complete.
Known problems
18 tests in the test suite are on a known-failing list, each with its reason. What that means in use:
- Variable-radius fillets: a radius law with a corner in it is refused.
- Other fillet cases: a taper that closes to a point, and a round ending in an earlier round, fail. A vertical edge after separate bottom rounds can be refused as smooth. The round at the foot of a boss isn't an exact torus, so Measure finds no radius on it. A G2 corner patch can bulge slightly past the box it rounds.
- Shells: two shells in our sample of actions fail, one on a lid with ribs and one on a filleted, shelled box.
- Thicken: one reference design with a boundary loop thicken doesn't load (it fails at that step).
- Holes: a 40 mm hole that touches a plate's edge at one point splits the plate into 2 bodies.
- Not in this release yet, because the 0.30.1 versions relied on the display mesh and their exact replacements aren't written: Extrude Cut To the far side of a curved wall (#8634), and selecting a joining extrude in the timeline can still light round walls an earlier feature made (#11286).
- Fillets may be slower than in 0.30.1.
Since rc.4
- STEP: the engine assembly fixes above (#14829, #14836, #14842, #14859), colours keep their names (#14857), and characters beyond the basic set, such as emoji, are written correctly on export (#14747).
- Assemblies: edit a constraint's rule, gap or angle in place (#14563). A closed loop through a ball joint at rest can be driven (#14929), dragging a part on a ball joint turns it smoothly (#14441), and dragging a jointed part stops where a contact set says two parts touch (#14885).
- New: a body's edge can be a sweep's path (#12263), GLB export (#12311), rename several selected bodies at once (#12526), and Insert Part seats a part on a flat face (#13949).
- Configurations: each row keeps a fixed id, so what points at a row survives renaming it (#14751).
- Timeline: an edit in one component keeps the other components' results (#6295).
- Fixes: a fillet on the inside edge of a boss wider than the flat face beside it builds (#14895), a hole sketched on an offset plane inside the part starts at the plane (#12919), Edit Feature opens every construction plane's dialog again (#12024), thin extrudes as thick as an arc's radius cover its sector (#13475), faces draw when zoomed into a design far from the origin (#14880), and open Features and History folders no longer slow every frame (#14851).
- Section Analysis: the Distance slider added in rc.4 is taken out again for now (#15001).
Report problems
Open an issue with the design if you can. Report an Issue in the app fills in the details for you. Geometry that builds wrong, a STEP file that opens worse than before, or a design that rebuilds differently than it did in 0.30.1, is what we most want to hear about.
Compatibility
0.40.0 writes design file format 53 (rc.4 wrote 52, and 0.30.1 writes 48). Format 53 adds fixed ids for configuration rows, a hole's start on its sketch plane, and sweep paths on body edges. It reads every earlier format. 0.40.0-rc.3 and rc.4 open a design saved by it with a notice and leave out what they don't know; rc.2, rc.1, 0.30.1 and earlier refuse it.
If you script SolidCraft and are coming from 0.30.0 or older: in parameters.list, parameters.add and parameters.change, value is millimeters or degrees in every reply, the number in the parameter's own unit is in display_value, and reported numbers are rounded (#10812).
Downloads
.exe, .msi and portable .zip for Windows; .dmg for macOS; .AppImage, .deb, .rpm, .flatpak, .tar.gz and Arch packages for Linux (the .snap packages are coming); a .tar.gz for FreeBSD; and solidcraft-web-0.40.0.zip, a static site to host yourself. Check them with sha256sum -c SHA256SUMS.txt --ignore-missing.
The macOS app is signed with a Developer ID and notarized. The Windows files are signed with a self-signed test certificate that Windows doesn't trust, so Windows may warn you. The other packages are unsigned.
Thanks
Thanks to the more than 150 people who contributed since 0.30.1.