AC3D 3D Printing Tips


in AC3D

3D printed


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.


File types. 1

Orientation. 1

Dimensions and scale. 1

Using AC3D’s grid. 1

Triangulation and subdivisions. 2

Booleans. 2

Holes. 3

Normals. 3

Adjusting existing objects. 4





File types

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 File->Settings->Files->Change-orientation).


Dimensions and scale

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.



Using AC3D’s grid

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.





Triangulation and subdivisions

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 e.g.:



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 Surface->Unify-Normals.




Adjusting existing objects        

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 geometry.




For more help on AC3D’s functions, see the AC3D manual which is available from the Help menu inside the AC3D software.