# Antimony - CAD from a parallel world

Among three-dimensional CAD systems, programs that implement two basic design approaches are most known: direct modeling and parametric.

In addition, there are procedural CAD systems that allow modeling through programming. This approach has gained recognition among fans of programming and device design with open source code and design. For example, well-known OpenSCAD, which is mentioned here more than once.

I propose to look at another unusual CAD system called Antimony.

Fig. 1. Antimony - CAD from a parallel world

Antimony is an open source CAD system that provides an approach to solid modeling using directed acyclic graphs.

This approach is used in various packages for 3D visualization, texturing and creating game graphics, and for solid-state modeling, this approach is probably used for the first time.

The author himself, Matt Keater, describes his brainchild as “a CAD from a parallel universe.”
Antimony is built from three main components:

• The framework for the movement of data on a directed acyclic graph.
• A geometric core for CSG (Constructive Solid Geometry) operations using a functional representation (F-Rep) of solids.
• Library of primitives and transformations "fab". The library contains both customary operations like displacement, scaling, rotation, Boolean operations, and more unusual for solid-state CAD systems, such as deformation of attraction, repulsion, bending.

Fig. 2. Repulsion deformation

Solid modeling in Antimony is performed by connecting graph nodes.
A node is a primitive or transformation.

Each node has fields, values ​​in which can be entered manually, set as a function of the parameters of another node, referring to them using the name of the node and the field, and connecting the node with the previous one.

Fig. 3. Passing values ​​through communication and through the node name and parameter

Inside each node is a Python script that can be edited, and you can also create new nodes with your own scripts.

Links within the graph provide automatic propagation of changes.

Fig. 4. Script node "circle"

The principle of building a model is in general the same as in more familiar CAD systems: we take a flat figure, apply the three-dimensional body construction operation to it (or immediately take a three-dimensional primitive), then combine this body with others using Boolean operations or apply displacement and deformation operations .

Models can be either single-body or multi-body; Antimony does not impose a hard parametric connection unless the user specifies a connection. The choice of flat figures is small, but they are all closed areas, so the same logical operations apply to them as for solids.

The user interface is represented by two main windows: a graph
window and a viewport (viewport) window. You can open an additional viewport window with a complex of four projections.

Fig. 5. Minimalism in the whole

Operation menu can be invoked by right-clicking from anywhere in the graphs window and the viewport window.

In addition to the above-mentioned methods of changing the parameters of nodes, it is possible to interact with primitives and operations, dragging them with the mouse over the active points.

Since the author of the program works in Formlabs, he took care of the possibility of materializing the models obtained. Therefore, Antimony supports exporting models in the form of a 2.5D raster (elevation maps in PNG format) and in the form of models in STL format for 3D printing. The export command is also a graph node.

Fig. 6. The result of export to STL

And a little bit about the shortcomings:

• There is no import of models from other CAD systems.
• The inability to set an arbitrary flat contour as a sketch for a three-dimensional body significantly limits the possibilities of modeling.
• The question of how to rationally make chamfers and rounding remains open.
• The level of stability of the project is estimated as a beta version, perhaps it is not worth trying to do something serious in Antimony, but it will be interesting to play.

Expecting the indignation of design engineers, I should note that such a CAD system was created primarily not for practical purposes, but from the personal sports or scientific interest of the author. It is clear that we are not talking about any drawings here, since Antimony is designed exclusively for modeling three-dimensional bodies.

I’ll give the personal impression that playing with modeling in Antimony is quite unusual and interesting, and the almost complete absence of user interface elements helps to immerse yourself in the modeling process and have a good time.

The author chose the name for its unusual CAD system not by chance. Antimony is translated as antimony - a substance that combines the properties of metals and non-metals, and expanding as the melt solidifies.

It is interesting to see the program in the work on the screening of Matt Keater:

GitHub

Antimony is written in C ++ and Python. In the repository there are instructions for building from source for Linux and macOS, and ready DMG images.