Fornjot 0.6
Fornjot is an early-stage project to create a next-generation Code-CAD application. This is the announcement for Fornjot's new release, version 0.6.0.
Fornjot is still at an early stage and far from being useful as a general-purpose CAD application. This release should be seen as a preview for anyone who's interested in following Fornjot's development.
The project is steadily inching forward, however, and this new version comes with some new and refined modeling features, lots of small improvements, lots of bug fixes, and a huge amount of internal cleanup.
This release announcement provides a high-level summary of those changes. For more details, please refer to the changelog. For pre-compiled binaries, check out the release on GitHub. Please report bugs in any of the usual community channels.
Sponsors
Fornjot is supported by @webtrax-oz, @lthiery, @Yatekii, @martindederer, @hobofan, @ahdinosaur, @thawkins, and my other awesome sponsors. Thank you!
If you're interested in helping to make the project sustainable long-term, please consider supporting me too.
Modeling Improvements
The ways that models can be defined have been improved in various ways. For example, it's now possible to sweep 2D shapes in arbitrary directions, not just along the z-axis.
This was already possible:
And now we can also do this:
And if you don't like the classic "Fornjot red", you have options now:
There's more: fj::Union
has been renamed to fj::Group
(with support for actual unions still being a work-in-progress), new convenient syntax for fj::Difference2d
was added, documentation of the fj
crate has been improved, and other small tweaks have been made.
Bug Fixes
You can define abstract geometry all day, but at some point (namely to render it, or to export it for 3D printing), you need to approximate it using a triangle mesh. This process is non-trivial and provides lots of opportunity for exciting bugs.
Here's what happened, if you tried to sweep a non-symmetric sketch:
It's much better now, although this model still does not work perfectly (missing triangles in the long, narrow part of the upper face):
Here's another model with triangles in the wrong places:
And here's how that looks in the new version:
These are just some examples. Many more bugs have been fixed. And of course, more bugs are still lurking. But Fornjot has become much more robust in this release, and will continue to do so.
Small Improvements
There have been lots of smaller feature additions and bug fixes!
If you display a model, or export it for 3D printing, the model needs to be approximated. You can now specify the tolerance value, i.e. the maximum allowed deviation of the approximation from the actual model, as a command-line argument.
For example, running this from the Fornjot repository:
cargo run -- --model=spacer --tolerance=0.1
Results in this:
While this:
cargo run -- --model=spacer --tolerance=0.001
Results in this:
This is just one example of many small features that were added.
The Fornjot Ecosystem
Some people I've talked to have expressed interest in building their own applications on top of Fornjot, once it's ready. It might still take a while before Fornjot has matured enough for that to make sense, but in principle this is possible starting with this version.
While the previous version of Fornjot consisted mostly of one monolithic application, parts of that application have been extracted into libraries that can be used on their own.
Check out my blog post on the Fornjot ecosystem, if you're interested in this.
Cleanup
Maybe the most important aspect of this release is the huge amount of cleanup work that has gone into it. Fornjot's code base is now much more capable, and much more ready to support the features we'll want to add.
While this has enabled some improvements in this release, this is mostly invisible. But it will pay dividends as more features are being added over the next releases.
Contributors
Fornjot is an ambitious project, and it wouldn't be possible without contributors! Thanks you @gzsombor, @mxdamien, @hendrikmaus, @ObiWanRohan, @therealprof, @danieleades, @anwentec, @ozghimire, @homersimpsons, @liubog2008, @freylint, and @connor-lennox for your help with this release!