Fornjot is a next-generation Code-CAD application, and this is the announcement of its new release, version 0.5.0.
Fornjot is still at an early stage and far from being useful as a general CAD application. The project is steadily inching forward, however, and this new version comes with support for more platforms, more flexible tools for defining CAD models, various fixes to make doing so more robust, and lots of internal clean-ups to enable future improvements.
Fornjot is supported by @lthiery, @Yatekii, and my other awesome sponsors.
If you're interested in making the project sustainable long-term, please consider supporting me.
Support for Windows and macOS
I develop Fornjot on Linux, but broad platform support was always part of the plan. With this release, we're getting closer to that goal. Support for Windows and macOS was added by @Bandsberg, Fornjot's very first contributor.
The concept of a sketch (represented by
fj::Sketch) was introduced. Right now, it is a more flexible replacement for (the now removed)
fj::Rectangle, and only allows for making sketches with straight edges.
fj::Sketch can be extruded into a 3D model, and limited support for combining sketches exists.
While this is very limited, don't forget that Fornjot is a Code-CAD application, and you can generate these sketches programmatically, from the Rust code that defines your model. This should allow for approximations of more complex shapes.
In the future,
fj::Sketch will subsume
fj::Circle to allow for sketches with arcs. Long-term, support for more powerful concepts like Bézier curves/B-spline/NURBS is a goal.
Unions and Transformations
Once you have created some 3D models by extruding sketches, you can combine them using
fj::Union and transform them using
Both of these operations are still subject to limitations and will be improved in future versions.
Some extension traits have been added to the
fj library, to provide more convenient syntax for the various operations the library supports.
let side = [ [ 0., 0.], [inner_height, 0.], [inner_height, outer_depth], [ 0., outer_depth], ]; let side = side .sketch() .sweep(material_strength) .rotate([0., 1., 0.], -FRAC_PI_2) .translate([0., 0., material_strength]);
Fixes and Clean-ups
Some small issues have been fixes, around the camera behavior, triangle mesh generation, and reloading models (special thanks for that last one to first-time contributor @mxdamien).
In addition, there has been a huge amount of clean-up, focused on the CAD kernel, to make the software architecture more robust and pave the way for adding more features in the future.
To learn more, check out the release on GitHub.