github tangency-labs/solidcraft v0.17.0
SolidCraft v0.17.0

latest release: v0.18.0
5 hours ago

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.

Why 0.17: a minor release built around speed on big designs: STEP assemblies import in about a minute, and a saved design reopens from the model it was saved with instead of rebuilding its whole timeline. It also brings loft guide rails, two-sided extrudes through all, mouse gestures, joint sweeps, Danish, Vietnamese and Malay, many modelling fixes, and a new design file format (28).

New

Big designs open in seconds. All numbers measured on the Prusa Core One assembly:

  • STEP import takes about 1 minute instead of 22.5: distinct parts are read and oriented in parallel, and each instanced part is oriented and meshed once (#2875, #3046, #3047).

  • Reopening a saved design is instant: it opens from the model it was saved with, so getting the geometry back takes 0.15 s instead of 46.6 s. The first parts are on screen in about 1 s and everything in about 15 s (#3093, #3102, #3123, #3140, #3178).

  • No more "Not responding" while a design opens: the longest frame went from 3 s to 0.13 s.

  • Save, Save As and autosave write in the background, so the window stays responsive (#3139, #3146).

  • Moving a part takes 0.4 s instead of 12.7 s (#3104).

  • Placed copies of a part share one display plan instead of each being meshed again (#3127).

  • Modelling: Loft follows guide rails (#3371); a two-sided extrude can go through all (or to an object) on either side with a distance on the other (#2728); tapered extrudes at line and arc corners (#2788); Chamfer takes two distances or a distance and an angle on curved edges, with a drag arrow for the second distance (#2893, #2856); Surface Trim with projected curves, several kept regions and mutual trims (#1466); Surface Blend aligns seams and has its own dialog (#2488); a flange on a flange in sheet metal (#3274); sheet metal faces get readable names (#2275); Thread says when a hole is too narrow or a shaft too thick, and what to drill (#2853); modelled threads preview in the background (#2264); Convert Mesh asks for the mesh body and its tolerance (#3012).

  • Sketch: Points placed by expressions (#2864); a dimension from a line to a circle or arc edge (#1863); slot outlines preview before you place them (#2537); Offset can constrain to the ends of an offset spline (#2615); dragging part of a selection moves the whole selection (#2720); Trim highlights the piece that will go (#3113); the open sketch's plane always shows a grid (#2303); projecting a solid's edges brings in their exact curves (#1508); Trim by dragging a path across curves cuts every piece it crosses (#3182); constrained edges follow the cursor (#3362).

  • Assemblies: Joint Sweep drives a joint until parts touch and reports where (#1981); relations that tie part of a placement (#2497); joint origins on the edge of a face, at its middle or a corner (#2404); joint offsets and angles typed as expressions follow their parameters (#2386); place an occurrence or an inserted STEP file by a matrix (#1901); part properties in the bill of materials (#1899); show and edit standard part configurations (#2681); relink a linked assembly source from the Browser (#2773); paste saved linked designs at the pointer (#2433); rigid joint motion reuses the parts' meshes (#2924); interference checks run in parallel within a time budget (#2895); a body dropped on a component's Bodies folder moves into it (#3347).

  • Interface: Mouse gestures: a ring of tools on the right button, per studio and customizable (#2936); drag the Browser sidebar's width or float it over the workspace (#2741); the Browser highlights what is selected or hovered in the 3D view (#3009); feature actions on a picked face, and reveal its creator in the Browser (#2431); the Messages window keeps status messages to read and copy again (#2764); a Plugins page in Preferences (#2718); 3D mouse calibration in Preferences (#2326); optional ambient occlusion and graphics quality presets (#1135); the mouse wheel scrolls the horizontal timeline (#3409); command search matches in the current language (#2555); construct tools ask for their picks instead of failing (#2563); sample thumbnails show at once (#2944); the Parameters window no longer re-evaluates every frame on big designs (#2723); Delete checks what it would break off the window thread (#2679); Delete Face asks for its faces instead of failing (#3296); Canvas and Decal file pickers open on PNG and JPEG images (#3266).

  • Agent chat: Ctrl/Cmd+V attaches copied files and pictures (#2854); PDFs go in as documents, other files by reference (#2858); drops on the popped-out window attach (#2861).

  • Import and scripting: 3MF import reads objects in other model parts (#2127); typed parameter contracts and JSON Schemas for solid.box and solid.extrude (#2611); timeline suppress lists, dotted edit keys and expressions in set_parameter (#2899); parameters.change takes several names, and import evaluates once (#2777); batched sketch text edits (#2793); timeline.roll_to accepts "end" (#2902); joint.inspect shows what each joint is attached to (#3453).

  • Languages: Danish, Vietnamese and Malay (#2671, #3028, #2915, #2188); Ukrainian, French and Italian updates (#2569, #3136, #2389); CJK text sits on the same baseline on every platform, a Chinese fallback font is found on Linux and Windows, and symbols fall back to a built-in font (#2123, #3466, #2956).

Fixed

  • Booleans and cuts: A cut into a body with a sealed void no longer comes out empty (#3175); a cut ending in a face of its target no longer leaves the hole closed by a skin (#2827); unions trim the slab past pushed-apart coplanar faces (#2801); exact local cuts are tried after an invalid empty result (#1858); lens-profile cuts into revolved quarter spheres (#2791); drilled holes through tapered walls (#2401); a hole is sized by the body it drills (#2975); a pin in a bore of its size is clear at every placement (#2715); boolean retries discard far-off candidates early (#3185); an intersection that can't be verified fails instead of keeping what it should trim (#3344).
  • Fillets, chamfers and shells: Fillets around tiny rounded-rectangle end edges (#2506); equal-radius fillet mitres stay tangent (#2485); an outside round concentric with a wall's inside round is no longer refused (#2852); chamfered straight lips at tangent wall junctions (#2490); one chamfer pick follows a straight edge's tangent chain at any part size (#3295); shelling revolved barrels (#2486); lip and groove on round objects (#2790); large modelled threads (#2209); curved face picks on modelled threads survive reopening (#2265); fillet tangent chains skip smooth seams, and unticking restores the picked edges (#3437).
  • Extrudes, lofts and patterns: A tapered side drawn in collinear pieces is one face (#2583); tapered arcs meet at corners (#2813); Loft keeps holes through matching sections (#2447); Loft refuses consecutive sections in one plane (#3412); Pattern and Mirror copies of a primitive change only the seed's targets (#2756); profiles and caps fall back to the best match when a sketch outline changes (#2897); construction geometry on model vertices follows them (#2409); Delete Face and Replace Face keep surfaces and faces attachable (#1927, #1925); faces thinner than the tolerance, or whose boundary touches itself, are meshed (#2712, #1850); a flipped plane's parameters lead to its base's expressions (#3481); the preview clears once the inputs fail (#3256); Convert Mesh uses the selected mesh body (#2482).
  • Sheet metal: Convert to Sheet Metal keeps a plate where it is (#3316); a flat pattern that no longer matches the body is refused (#3325); corner reliefs no longer depend on cut order, and overlapping ones are left out (#3280, #3421); an edge flange on a bend line is refused (#3273).
  • Sketch: A click that moves on the way still places its point (#2449); Trim keeps the rest of a dimensioned line in place (#2910); a new empty sketch is not "Fully constrained" (#3011); dragging a constrained point stays smooth (#1977); a letter crossed by an edge is picked whole with its text (#2619); a finished sketch shows its standalone points (#3304); Look At frames the sketch's geometry (#3199); sketch fillet fields use the display units (#2487); fewer repeated sketch diagnostics (#2359); sketch.create refuses a non-numeric plane origin (#3252).
  • Assemblies: A replaced motion link keeps the driven joint in place (#2898); an as-built joint at an origin on one of its parts follows it (#2600); a joint between faces that already meet leaves the part where it is (#2710); a point origin keeps its x (#2598); a round origin keeps its end (#2760); the Move/Copy gizmo on occurrences (#3015); interference of near-coaxial pins after a STEP round trip (#1984); clearance checks on trimmed faces, against unions, and on pins in holes, meshing each body once (#2337, #2090, #3027, #2867).
  • STEP: STEP export no longer hangs on a box with a screw hole (#2243); a STEP file that imported wrongly (#3208); CJK names read back whole (#2347).
  • Viewport and app: The app starts on the OpenGL backend again, which crashed in recent nightlies (#2933); the ground grid stays when zoomed in close (#3124); lines thinner than a pixel no longer vanish without multisampling (#2871); orbit drags no longer drift (#2842); a 3D mouse moves only the focused window (#2212); the macOS launch hang with the 3Dconnexion driver installed (#2841); snapshots draw see-through appearances (#2330); release-note links in the update window open in the browser (#3004); the Parameters window's add row lines up (#2932); script replay keeps a feature name another feature has (#1997); the agent chat's design bridge can't be shadowed by a user's own entry (#2596); the Interference dialog is translatable (#2443); the bracket example cuts both mounting holes (#1515); the agent cursor's show is bounded per request (#2900); the browser app keeps the CJK font as a fallback for other languages (#3535).

Compatibility

Designs saved by 0.17.0 use file format 28 and don't open in 0.16.x or earlier. Older designs open and rebuild as before.

Saved designs now carry a compressed copy of the evaluated model, so files are larger: the Core One assembly goes from 61 to 73 MB, and a small design from 55 KB to 1.4 MB. The cache is only used by the same SolidCraft build that wrote it; any other version ignores it and rebuilds the timeline as before. To rebuild a design from its timeline anyway, set SOLIDCRAFT_NO_MODEL_CACHE=1 before starting SolidCraft, or use Compute All.

Thanks

Thank you to everyone who contributed to this release: @a-hakim, @abteenz, @acbrazzl, @afaber999, @amolinari-autotex, @bluecmd, @BrunIF, @CamWight, @cfaulkingham, @crono2250, @CypherNaught-0x, @DuBearte, @DundreDE, @ealitt, @erkexzcx, @erlis, @fkirill, @flyboy-byte, @fugazister, @H1D, @HiroKenEz, @Jacquesvdberg92, @jb69, @jeremymiribung-blip, @jijinbei, @jyviko, @Karl-VonRichter, @kezmdor, @leValdemar19, @Loohi, @lucasmontec, @MattRuhland, @mknutso-2, @Moi455, @morelandjo, @N3MI-DG, @nathan-charles, @Nathan-Dane, @nomadsgalaxy, @NOWN-DEV, @oursland, @peppelorum, @phanoob, @plexi32, @Priyanshu-choudhary, @raykholo, @rifqifatih, @rlartot, @shop-3d, @sinu0, @SiroArt, @SS-EN, @SychPL, @takuto-NA, @tdslot, @thodoristsagko, @Tyler-Chiriboga, @vandang890615, @Vittuu, @wdunn001 and @weynechen.

Install

Upgrading from 0.7 or earlier. 0.8 changed the Linux app ID to ai.storyteller.solidcraft:
flatpak update offers to replace the old app, and the .deb, .rpm and AppImage remove the old
menu entry.

Upgrading from 0.5 or earlier. 0.6 renamed SolveCraft to SolidCraft and made the zip
container the default save format. .solvecraft designs, old settings folders and
SOLVECRAFT_* variables are still picked up, and solvecraft-cli still forwards to
solidcraft-cli. Want plain JSON? Use File ▸ Save As JSON… or --save design.json. On
macOS, replace SolveCraft.app with SolidCraft.app. Details:
compatibility notes.

Documentation, the browser app and the Flatpak feed use the SolidCraft project Pages URLs.

Which file?

  • Windows: SolidCraft-0.17.0-windows-x64.exe runs as is. Or install the .msi, or unzip the
    -portable.zip (x64, x86 and arm64).
  • macOS 11+ (Apple silicon and Intel): open the .dmg and drag SolidCraft.app onto Applications.
    The CLI is in solidcraft-cli-0.17.0-macos-universal.zip.
  • Linux (x86_64 and aarch64, glibc 2.35+): the .AppImage (chmod +x, then run it), the
    .deb or .rpm, the .flatpak (flatpak install --user <file>), the .snap
    (sudo snap install --dangerous <file>, or sudo snap install solidcraft from the Snap Store), or the .tar.gz.
  • FreeBSD: tar -xzf solidcraft-0.17.0-freebsd-x86_64.tar.gz --strip-components 1 -C /usr/local.
  • Web: solidcraft-web-0.17.0.zip is a static site to host yourself.
  • SHA256SUMS.txt: sha256sum -c SHA256SUMS.txt --ignore-missing.
  • Files without a version in the name (solidcraft-windows-x64.msi, solidcraft-linux-x86_64.AppImage, …)
    are the same packages under fixed names, for download links that always fetch the latest release.

For Flatpak feed installation and updates, add Flathub for the required runtime before
installing SolidCraft; keep both remotes in the same user installation:

flatpak remote-add --user --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
flatpak remote-add --user --if-not-exists solidcraft https://docs.solidcraft.io/flatpak/solidcraft.flatpakrepo
flatpak install --user solidcraft ai.storyteller.solidcraft
flatpak run ai.storyteller.solidcraft

A remote added from the old bherbruck.github.io address no longer finds updates: run
flatpak remote-modify --user --url=https://docs.solidcraft.io/flatpak/repo/ solidcraft, then
flatpak update --user.

Flatpak installs from 0.7 or earlier use the old ID ai.storyteller.solvecraft: flatpak update --user
offers to replace it with ai.storyteller.solidcraft, and settings move along.

Single-file .flatpak bundles include the runtime repository address; missing runtimes
still need an internet connection. Linux installation details.

The builds aren't signed yet. On macOS, right-click SolidCraft.app in Applications and choose
Open the first time (or run xattr -dr com.apple.quarantine /Applications/SolidCraft.app).
On Windows, SmartScreen may say "Windows protected your PC": More info, then Run anyway.
Licences are built in (Help ▸ About ▸ Licences, solidcraft-cli licences); the packages also
install THIRD-PARTY-LICENSES.txt.

Don't miss a new solidcraft release

NewReleases is sending notifications on new releases.