CAD from a parallel universe
This release has relatively few user-facing features, but should make the lives of our Linux packaging volunteers easier.
There are also a host of bugfixes in sb.ui
(which contains a set of immediate-mode UI calls that can be placed in Node
scripts).
cmake
instead of qmake
, which is much simplersb.ui
functions now take an optional key
argument to disambiguatesb.ui
shapes was not undoable; now, it is.This release adds support for nested graphs!
The UI is also rewritten, pretty much from scratch. It implements the same functionality in fewer lines of code and should be more robust in keeping the graph and UI synched.
You can now add a subgraph by selecting Graph
from the Add
menu.
In its parent graph, a subgraph looks just like a script node:
The three icons open up
Within the subgraph, you can add Inputs and Outputs from the Add
menu.
These inputs and outputs are strongly typed and show up as floating Datums:
self
(thanks, @awgrover)QGestureManager
crash (thanks, Qt 5.5)This release has a new f-rep parser and a new graph engine!
Not much has changed on the user-facing side of things, but the internals are much spiffier (and will be easier to build on in the future).
The f-rep parser has been rewritten by @fros1y to use lemon and flex instead of a homebrew solution.
In this rewrite, a second way of expression math was added: infix notation (a.k.a. the way that most people write math). For example, instead of writing
-+qXqYf1
you can write
=pow(X, 2) + pow(Y, 2) - 1;
The leading =
and trailing ;
indicate to the parser that this is an infix string.
For examples of this new syntax, check out the [cylinder wrap (https://github.com/mkeeter/antimony/blob/develop/py/fab/shapes.py#L804-L824) function.
The graph engine has been rewritten from the ground up as a stand-alone library (though its design is optimized for Antimony's use-case). It no longer uses Qt signals and slots (or at all!), preferring the STL and C++11.
There's a slick re-evaluation optimization: when an upstream object changes, the engine properly sequences downstream update calls to minimize the number of times scripts and datums get re-evaluated. In practice, I've seen a 5x speedup on very large graphs.
Some of the changes made here are potentially breaking. There's a transparent migration path from older files; feel free to report bugs if it fails for you.
These changes will be find-and-replaced when older files are loaded, so things should Just Work in most cases.
fab.ui
namespace has been renamed sb.ui
meta
object (which contains export functions) has been renamed sb.export
fab.color
object has been renamed sb.color
It's no longer legal to connect an output datum to an input in the same script. Previously, this was legal (but a bad idea).
Datums of type str
must have their expressions quoted. Previously, there was a magic check to auto-quote them if evaluation failed.
Return
key acts like tab when editing datums in an inspector.right_triangle
now supports negative widths and heightsarctan2
operator is now available in f-reps.sb
extension is now added on Linux.Thanks to the following Github users for their contributions, large and small:
Antimony got unintentionally announced to the internet by a post on Hackaday; it then spent a few hours at the top of Hacker News. There's been a corresponding surge of interest (and Github issues), and we've already seen a few contributions from the community -- props to Michael for tracking down a mysterious GPU issue and Joshua for making right-click open the "Add node" menu.
I've created a Google group for people interested in contributing.
shapes.py
to make them accessible--heightmap
option to start up with heightmap rendering.fab.types.Shape
constructor accept a single string argumentFeatures:
Export
node categoryBugfixes:
QGraphicsScene
crashesFeatures:
Set colour HSB
node (thanks, RobotGrrl)restrict
keyword.Bugfixes:
Transform
objects.QGraphicsItem
and OpenGL
.OpenGL
textures.Features:
fab.types.Shape
input text box to be edited.
fab.ui.wireframe
objects.Set Color
node allows shapes to be rendered in custom colors._
).Alt
as the Hide UI shortcut and added View menu option.Bugfixes:
Control
construction.This is a major release in terms of architecture:
All nodes are now defined as scripts, and scripts now have the power to
define UI primitives (points and wireframes) that show up in 3D views.
Files saved with 0.7.5
and earlier will be automatically upgraded to
using script nodes (instead of hard-coded nodes). This backwards
compatibility will be removed in later releases.
If you have a file for which automatic upgrading fails, send it in as a bug report for further investigation.
Features:
fab.ui
namespace, with hooks to create 3D view objects from scripts.
fab.ui.point
allows points with user-defined drag functionsfab.ui.wireframe
creates user-defined wireframesfab.color
namespace with a set of standard colors.Bugfixes:
sb
directory is now created before subfolders are copied.This is a pretty minor release feature-wise, but it's got a few simple fixes that will speed up performance when designing large models.
Features:
str
input type for scriptingBugfixes: