AC3D’s ease of use and maximum control down to vertex level
makes it great for creating many models for 3D printing. Here are some
tips on how to get the best from AC3D with 3D printing. Some of the text below
refers to AC3D 7.5 but most of it also applies to earlier versions of AC3D.
Dimensions and scale
Using AC3D’s grid
Triangulation and subdivisions
Adjusting existing objects
The most common file type supported by 3D printer software
is STL. AC3D supports import and export of both STL types, ASCII and
Binary. ASCII STL files can be viewed with a simple text editor,
revealing that the format is simply a list of triangles. The ASCII
version of STL can be useful but generally, it’s probably best to export models
as binary STL files since the file size is more compact.
AC3D’s X,Y,Z axis have a different orientation to 3D
printers. One way to describe it is that AC3D uses X and Y on the screen
and Z goes in and out of the screen. 3D printers use X and Y like on a
piece of paper and then Z increases out of the paper to make ‘height’.
AC3D automatically transforms STL files when they are loaded and exported so if
you are working with STL files, you don’t need to worry about the orientation
(This can be switched off in
AC3D doesn’t impose any unit type e.g. meters, inches etc.
AC3D’s units are simply numbers. STL files specify no units and contain
no scale or sizing information. For STL files and for most 3D printing
software, AC3D units represent millimeters (mm). Some STL specifications
require all numbers in the STL file to be positive floating point numbers but
most software we’ve seen allow negative numbers, like in AC3D. 3D printer
slicing software usually allows the repositioning of an object on the print bed
so this is rarely a problem.
Whilst working in AC3D, the current size of a selection is
shown at the top right of the main window. If only two vertices are selected
then this will display the distance between them.
The Move-to and Size-to gadgets
on the AC3D control panel are handy for setting specific positions and sizes
of what’s selected. For example, to position a single vertex, select it,
specify its new position and press the Move-To button.
The ‘>’ button to the left
reads the current position or size into the value fields. This is handy if
you only need to change a single coordinate value i.e. press this button,
adjust one value, submit the change.
If you’re working on objects for 3D printing, the visual
grid can be a useful indication of size. The display grid has two
settings – one for the thick lines, (Draw Grid Major) and one for the thin
lines (Draw Grid Minor). Unless you have a huge 3D printer, values of 10 and 1
are probably a good start (thick lines every cm, thin lines every mm).
The Draw grid dimension is also used if you switch on Gridsnap (bottom left of
the main AC3D window). This ‘snaps’ new vertices to the nearest minor
grid point and can help with keeping things lined up when moving and sizing.
AC3D allows polygons with an arbitrary number of
points. These polygons are automatically broken down into triangles when
they are exported to STL files, so there’s no need to use
Surface->Triangulate to do this prior to export.
Subdivisions are not exported to STL files so prior to
export, it’s recommended that if you have an object that is subdivided, the
subdivisions are committed first. Object->Commit-subdivision does
this. However, after export, you may wish to Edit->Undo this so that
you can continue to work on a subdivided model. Saving the AC3D (.ac format)
file is recommended too, since storing the model solely as STL will lose a lot
of model information including subdivision, materials etc.)
Many people coming from a CAD background automatically go to
AC3D’s Boolean functions as a way of constructing 3D objects but this is not
always the neatest way to create objects. The result of Boolean
operations can be relatively messy, with lots of triangles being created.
If you load an existing STL file (e.g. from Thingiverse) into AC3D, you will
very likely see a huge number of triangles breaking up flat surfaces
(particularly if the original model was designed in CAD software using Boolean
operations). It’s sometimes advantageous to rethink the design of an object to
keep things clean. If you are using subdivision then modelling using quads
(four vertex polygons) is a real advantage.
For example, if you need a washer shaped object, the immediate
thought might be to make a large cylinder and then cut a small one away from it
Consider a more efficient way of creating the same object in
AC3D. Using the Object->Revolve function (Object menu). Here, a
rectangle is created, the surface-type is set to Polyline (changed from a
polygon to a polygon outline) and then it is revolved. The distance from the
axis specifies the radius of the ‘hole’.
From this object you could adjust the vertices to make a
round hole in a rectangular shape.
And dragging the outer vertices (or the vertices around the
‘hole’), you can adjust the position of the hole:
The result is a lot ‘cleaner’ compared to the same object
made using Boolean/CSG functions.
Here’s another example of using Object->Revolve to
quickly make two objects together:
Of course, there are times when Booleans make creating some
objects a whole lot easier but if you can reduce the number of boolean
operations used, you’ll get a cleaner object that’s easier to manage.
It’s best that anything that’s going to be printed in 3D has
no holes in it. Since the STL files simply contain triangles and not
vertex or edge information it’s OK to have open seams (where two surfaces are
adjacent but the vertices are not shared) but if there are any surfaces missing
and there is a visible hole on the outside of an object, there may be problems
when the 3D printer software comes to slicing up the model for printing.
To see if there are any holes in an object, select all the
vertices and then Edit->Select-Vertices->Boundary. This will select
all vertices that are on an open edge. If you find any holes, select the
vertices and create one or more surfaces to fill the hole using
Vertex->Create-ordered-surface. Alternatively, using
Tools->Select-leaky-surfaces can be a good way of easily identifying where
there are holes.
AC3D has a useful function that will automatically fill in
any holes. This is accessed via the Object menu Object->Fill-Holes.
This is a powerful function but there are a couple of
potential problems to look out for.
Fill-holes works best on 3D objects. This is a flat
‘2d’ object. At first glance, it looks like there’s only one ‘hole’. However,
there are actually three. There is the outer edge, and then two edge rings in
the middle. If you use the ‘Fill Hole’ function on this object, you’ll
get three new surfaces created.
In this case, the best way to fill the holes in this object
is probably to use Vertex->create-ordered-surface a number of times so that
you fill in the area with new surfaces (right hand picture).
Watch out for non-planar holes:
This hole will be filled by a single surface and it looks
fine, until you realize that the surface ‘bends’ around the sphere
In this case, it may be best to create individual quads to
fill the gap. An alternative would be to triangulate the new surface but
the new triangles will not necessarily match the ‘curve’ of the sphere.
An STL file is a simple list of triangles but the
orientation of the triangles is important. This is used by the 3D printing
software to determine which parts are inside and outside the object. The
direction a surface is facing is determined by its ‘Normal’ and this is
determined by the visible clockwise or counter-clockwise order of the
vertices. Before exporting an object for 3D printing, it’s worth checking
that all the surfaces in AC3D face outwards.
Normals can be visualised in AC3D by pressing the ‘n’ key in
an Orth or 3D window. They can be seen as pink lines coming from the
center of a surface. On large objects, they may only be visible as a small pink
dot or not at all. In this case, you can change the display length of the
normal in the settings (File->Settings->Appearance->Size of display
normals). For most 3D printing work a value of 2.0 is a good start.
If an object is constructed using two-sided surfaces it will
not be obvious if some surfaces are facing inwards. You can set them to be
single sided by pressing the ‘1S’ button on the AC3D control panel. If
any surfaces disappear from view, then they may be facing the wrong way and
need flipping. Individual surfaces can be selected and flipped using menu
Surface->Flip-Normals but if you have a lot of flipped surfaces, you should
select one surface, that you know is facing in the desired direction, and use
Surface->Unify-Normals. This will orient other surfaces in the object.
This extreme example shows a model with surfaces oriented
randomly and then, after selecting a single surface, the result of
AC3D can import and export STL files so it’s easy to make
custom changes to an existing object.
Sometimes you might find an object on a 3D printing website
like Thingiverse and need to adjust it in some way. In this case the main
‘cylinder’ part of the object was too short by 1.5mm. The STL file was
loaded into AC3D and the vertices shown selected and moved (using the Move
control on the AC3D control panel) by 1.5. After exporting the STL file,
the object was printed.
Very large STL files (containing a large number of
triangles) can take some time to load because AC3D calculates which vertices
should be shared and optimizes these to reduce the vertex count. If
you find that large files are loading very slowly, you can switch off this
optimization from File->Settings->File->STL-Import-Optimize. If
the vertices are not optimized on import it means that each surface will have
its own vertices and none will be shared with its neighbors.
If you load an STL file into AC3D, you may see a huge number
of triangles where a single surface would be fine. This is because STL
files contain triangles only, not polygons. It can be awkward to work
with a huge number of triangles if you are modifying the object so you may want
to combine them to make a single surface.
After selecting some adjacent surfaces, use Surface->combine
(or press ‘c’) to make all these surfaces into a single surface. Note that in
the above example, this is done in two sections because a single surface can’t
have a hole in it. Selecting a large number of surfaces can take a while using
shift+click but you can speed things up with drag-select – simply hold down
control+shift and drag the left mouse button over the surfaces to select (right
mouse button deselects).
AC3D triangulates models for STL files so if you want to
continue working on a model, save the .ac file to preserve the cleaner/simpler
For more help on AC3D’s functions, see the AC3D manual which
is available from the Help menu inside the AC3D software.