Implicit Modeling for Mechanical Design

Why Implicit Modeling

CAD and CAE software uses a variety of representations of shape to define and document real-world parts.  These representations have been developed to accommodate different ways of inputting, interacting with, and manufacturing various shapes, and most modern CAD and CAE systems must include more than one.  Design engineers must master the nuances of each representation (not to mention the UI to control them) and learn to manage the trade-offs and interoperability challenges between them.

Unbreakable modeling operations

Implicit modeling offers a new set of tools that overcome many limitations of traditional techniques such as boundary representation (B-Rep) and meshes, which are becoming increasingly problematic in advanced manufacturing and generative design.  For example, B-Rep and mesh modelers are unable to perform routine operations such as offsetting, rounding, drafting, and even simple booleans with sufficient reliability. In addition, they cannot handle the complexity of 3D printed models, manually or in automated workflows, let alone describe parts with varying material properties.  

Example of a blend operation that rounds between objects while preserving the detail of the original shapes.

Example showing our logo lofted to the same logo rotated a half turn, along with the mirror image of that result.  

An entire toy truck assembly with overlapping parts, with three offset regions produced, meshed, and simplified by nTop. Such techniques can be used to create packaging, selectively thicken near net models for manufacturing, or strengthen thin-walled models for prototyping.    

The math behind implicit modeling guarantees that operations like booleans, offsets, rounds, and drafts never fail.  With implicits, one can simultaneously boolean together and round the intersection of millions of beams in less time than it took to generate the locations of the beams.  Periodic and non-periodic lattice, foam, and texturing can be added at any required level of detail.

Automation and geometric complexity

With robust modeling operations, engineers can automate extensive workflows that previously would have required human intervention, such as the design of fixtures, packaging, and support structures.  In particular, implicit models are well-suited to generate complex geometry for additive manufacturing, along with the contours and infill or hatch patterns required for CAM output. In addition to fine detail, implicits bring new kinds of modeling features that were otherwise impossible, such as variable thickness offsetting, automatic interference removal, graduated material properties, and displacement-mapped textures. We will be describing each of these benefits of implicit modeling in more detail in future blog posts and webinars.


When two parts interfere, one might normally subtract one from the other, perhaps with some added offset.  Implicit modeling offers the full range of blended possibilities in-between.


The regions of a model that require support can be modeled by computing the gradient of the distance field and comparing it to the build direction.  

How does one control advanced features such as variable thickness offsets or graduated material density?  Implicit models can naturally be modulated or influenced by scalar and vector fields derived from simulation results, engineering design intent, and manufacturing process knowledge.  

Field-driven design

Topology optimization, which typically uses simple implicit models, serves as a basic example of field-driven implicit modeling.  Top opt is essentially a feedback loop: simulate, implicitize, impose manufacturing conditions, and repeat, limited to a specific set of boundary conditions and constraints.  In a more sophisticated environment like nTop, one can mix and match simulation and geometry to synthesize knowledge-driven, robust engineering solutions. For example, using fields to drive implicits, it is possible to:

  • Stiffen a plate in the peaks of vibrational or buckling modes

  • Direct both ribbing and toolpaths along the direction of the tensile stress field.

  • Place strengthening fibers in a tensile direction and vibration damping structures in the orthogonal compressive direction.  

  • Vary the composition of a lattice to cause it to fail in a specific way.  

  • Control the sectional area of a flow path according to specified flow conditions.


A design domain must (top left) support a vertical cantilevered load while also offering support to surrounding geometry.  Topology optimization (lower left) and a lattice (upper right) offer solutions to each problem. These fields can be combined together (bottom right) to produce a solution to both problems with one design, and this process can be made rigorous via homogenization.  


A gyroid implicit lattice transitions from solid (center region) to beam-like (left) and sheet-like (right) variants.

Although implicit models can export meshes like STLs for manufacturing, a better approach is to directly write sliced or toolpath output for the desired manufacturing format.  Using fields, one can modulate properties like beam energy or bead width to control thermal effects and the geometry of the mesoscale lattice.

Finally, the strongest advantage of implicit modeling is its ability to work with almost all other kinds of geometry.  At nTopology, we’ve produced a breakthrough implicit modeling platform that combines B-Rep, meshes, and simulation data to generate detailed manufacturing models.  In particular, we can directly model off of simulation output like top opt results, which in many cases can remove the need to remodel top opt results in CAD. Instead, we can take it right to manufacturing while also outputting a detailed simulation model for external validation and simplified B-Reps for documentation in CAD.

Just the beginning

All of these benefits are designed to remove bottlenecks in design processes and better capture data flow throughout. To learn more about what nTopology is doing as it relates to implicit modeling, we invite you to attend an informational webinar on January 29th. You’ll walk away with a better understanding of this technology and how it can be used.

nTopology @ SciTech 2019

Join us at AIAA SciTech 2019, the largest event for aerospace research, development, and technology in the world.

Stop by booth 712 to see nTop’s next generation design and optimization software in action. Learn how we're helping engineers make better parts and get the most out of advanced manufacturing.

We look forward to seeing you in San Diego from January 7th to 11th.

nTopology @ Formnext 2018


Join us at Formnext 2018, Europe’s premiere additive manufacturing exhibition.

Stop by booth 3.0 - H80 for a sneak peek of nTop’s next generation design and optimization software in action. Learn how we're helping engineers make better parts and get the most out of additive manufacturing.

We look forward to seeing you in Frankfurt from November 13 - 16.

nTopology Element & 3MF Beam Lattices

Today, we're proud and excited to announce that nTopology Element is the first piece of CAD software to offer full importing and exporting of 3MF's Beam Lattice extension, which was developed and ratified with nTopology's direct involvement.

As our customers know, STLs have significant disadvantages for representing lattice structures. Not only do they produce large file sizes, but they also result in reduced fidelity to the intended design and are difficult to edit and analyze. nTopology has a long history of offering customers a better option through our LTCX file format, and we are proud to have worked with our colleagues at the 3MF Consortium to standardize the Beam Lattice extension so that LTCX's functionality can be shared across the industry.

With 3MF Beam Lattices, users will see file that are up to 1/1000th the size of STLs, and will be able to transfer lattices with ease between nTopology Element and other enterprise-grade CAD software. 3MF Beam Lattices also allow boolean functions to be built into the file itself, making your workflow simpler and faster.

For more information on 3MF Beam Lattices, visit the 3MF website. To get in contact about how 3MF Beam Lattices can be used in nTopology Element to make your engineering workflow easier, contact us here

Thanks to our colleagues at the 3MF Consortium for working with us to improve this key part of the lattice design workflow!

nTopology on Tour


We're hitting the road this month and we'd love to connect . We'll be attending these upcoming events;

America Makes - Technical Review & Exchange

El Paso, Texas from March 14th and 15th.

Develop3D Live
Warwick, UK on March 20th

2018 AMUG Conference
St. Louis,  MO April 8-12, 2018

Rapid TCT 3D Printing Conference
Ft Worth, Texas from April 24-26

If you're in or around the area during those times, be sure to connect with us in person to learn more about the latest features of nTopology Element.

In addition to our upcoming events, we've recently been nominated for 3D Printing Software of the year by 3D Printing Industry. We would greatly appreciate a vote and spreading the word!

Element Pro Case Study: F1 Brake Pedal

Check out another Element case study written by one of our Application Engineers, Skand Mishra. Here, the goal is to significantly reduce the weight of a Formula 1 brake pedal design while still withstanding the given loading condition. SimSolid was used for the structural analysis - a simulation tool that analyzes fully featured parts and assemblies in minutes without meshing! Check it out at

Click here to download full case study.

Screen Shot 2017-11-06 at 14.09.37 PM.png

Announcing Element 1.0

We've been hard at work developing some new and very powerful lattice design tools for the official release of Element 1.0. Check out some of these new features below, then try them out yourself in Element 1.0.

Single and Dual-Surface Conformal Lattices

Single and Dual-Surface Conformal Lattices

Create & tessellate rules that have surfaces

Create & tessellate rules that have surfaces

Drive lattice variability using Surface Modifiers

Drive lattice variability using Surface Modifiers

Change the topology of a mesh with the Remesh Tool

Change the topology of a mesh with the Remesh Tool

These features are only available to our Pro users. To schedule a 30-day trial of Element Pro, send us a note here!

Measuring in Element Pro

As we've been working on nTopology Element Pro's advanced features (mainly our FEA and DFM tools), a lot of users (including our friend Kenneth Nai) asked for a very simple enhancement: The ability to measure things in the scene.

So when Chris was looking for a two-sprint project to work on in early September, Mike mocked up a quick design for a Measuring utility. We kept it simple to start: We wanted to give users the ability to see locations and diameters of lattice nodes as well as the minimum distance between any two nodes.

Because of our lightweight, beam-and-node lattice graph representation (which is the basis for our open source LTCX file format), it's easy for us to calculate the precise distance between any two nodes in a complex lattice. For ease of use, we show the minimum distance between nodes - the space between them when they're thickened. As a plus, we also allow you to measure distance between unthickened nodes and even the vertices on a mesh (STL/OBJ).

We also used the same dimension design in the updated version of our Generate tool. Previously, it was difficult to tell how the "Scale" settings would affect lattice unit size. With this update, we show the size of the lattice right in the Generate tool's mini 3D view.

We'll be expanding the Measure utility over the next few months, allowing you to know more and more about your designs. Stay tuned!

Stochastic Structures

Recently we released Element Pro's fifth big feature: our Stochastic Structures module. This allows engineers to create random and pseudorandom lattices with tuned densities and pore sizes, and is targeted at applications in medical implants, chemical processing, and filtration.

The Stochastic tool is extremely versatile, allowing for variability in both lattice topology and beam thickness. To create the lattice, we generate random points inside the input part using a Poisson Disc Distribution. These points are then used to create Voronoi cells, which are then used to create lattice beams at each cell boundary (more stochastic units are coming soon; email us if you have specific needs). To generate a uniform lattice, simply choose a volumetric part and a target cell size and click the `Generate` button. The photos below show an end part that has uniform thickness of 2mm.

The Stochastic module can also create lattices with fully variable cell sizes. To do that, you just need a modifier in the scene to drive that variability. Here, we're creating a lattice whose cells vary between 5 and 15mm, and whose beams are a uniform 2mm diameter:

Just like all lattices in Element, stochastic lattices can also have variable thickness. Here are the same parts as above, with variable thickness applied. 

Note that the modifiers that drive cell size and beam thickness do NOT have to be the same. Here, we've created a variable topology off of `Modifier 2`, and used `Modifier 1` to drive beam thickness.

A thickened stochastic lattice's properties, showing volume and pore data.

Because these structures are often chosen for the way that they perform in fluids, we added a few new object properties to help you design just the part that you want. If you right click on a thickened stochastic structure, you can see that we calculate mean, minimum, and maximum cell sizes in the structure. We also show the approximate solid volume, from which you can estimate the part's final density without having to export an STL or OBJ. Note that this information is only available on thickened stochastic lattices, as we need the beam diameter information in order to calculate pore size and volume.

Using the techniques shown above, you can create printable random structures that have just the properties you want. Whether you're engineering for osseointegration (bone ingrowth) on a medical implant, creating parts with tuned surface area to volume ratios (SA:V), or working on filtration devices that catch particles in a very specific size range, stochastic structures are a great solution. They also have isotropic mass properties and their stiffness can be fine tuned just by varying density. And since they act just like any other lattices in nTopology Element, you can use the same editing, meshing, and analysis tools on them as well.

We've already seen great results from this tool, and will be making a few upgrades to it over the next few months. To schedule a demo and trial license, email us today! You can also see more of how the tool operates on its page in the Element Manual.

Element Free 0.13.0

Last week we released Element 0.13.0, which brought with it a few big improvements to our user interface. We think they'll help users learn the lattice design process much more quickly, and I wanted to run them down here.

This version of Element brings a whole new look to the toolbar layout! Gone are text-only buttons in the top bar, and in their place come descriptive icons in a (somewhat larger) ribbon. We hope this will add a bit of context to what the tools actually do, and it will also help us conserve valuable screen space as the number of tools expands over the next few months.

We also split the `Edit` tool up into its component parts - `Move`, `Merge/Split`, `Trim` and `Clean up`. This will reduce the number of clicks it takes to perform an operation, and makes the Edit family act a lot more like the other tools in Element. We'll be doing more work to rationalize our tools in the coming months, but don't worry - nothing's going away!

We made some improvements to the `VF Lattice` tool. The big change here is in the user interface; namely, the vectors act a bit more like our Point modifiers do, and are added and edited in a similar way to the `Modifiers` tool. We still have a few changes coming to this tool's UI and functionality - stay tuned :)

Lastly, we rolled the `File` and `Help` menus into one single menu in the top left corner. If you're looking for help, go there!

We've got even more improvements coming in the next few weeks - stay tuned! And if you haven't played with Element Free recently

Pressure vessel workflow

This post will take you through the CAD design of this pressure vessel. The vessel is composed of a solid outer shell reinforced with a lattice on the underside. With two halves bolting together to create the entire vessel, each screw hole is also reinforced with a lattice of its own.


Let’s say that I need to create an underwater vessel that can withstand relatively high pressure while maintaining low weight. The key to making my design work lies in lattice structures, and luckily there is a free software package called Element that, granted I have access to a metal 3D printer, gives me all the tools I need to complete the job. The pressure vessel we are going to 3D print will contain a thin skin, reinforced with lattices, and the first step in the process is to use CAD software and construct a model. As you can see, I’ve created an assembly in SolidWorks containing various parts of the vessel. It is important to note that at this stage in the design, the parts of the vessel which will later become lattices should be modeled as solid regions.

I save all the individual parts of the vessel as STL files. I do this so that I can turn necessary parts into lattices and then reconnect the lattices to the other parts of the structure. This is where it is important to illuminate a workflow hack that will make this process go much smoother. I make two versions of the parts I want to make lattices out of in SolidWorks. One version is slightly oversized, while the other is very oversized, on the faces that will connect to other parts. The reason why I have two variations will become evident as we move further along the process.

This post will be broken into sections, each containing the steps of my procedure accompanied by a gallery with corresponding pictures to help illustrate the process. Let’s get started.

Step 1: Generate
I import the very oversized STL file for the structure that represents the lattice reinforcing the underside of the pressure vessel into element. Using the generate lattice tool, I create the initial lattice structure - choosing the shape, size, and start point of the cells in my lattice. I click ’Generate’ and hit ‘Step’ a couple times to make sure that the entire solid is filled and then hit 'Trim' the trim the lattice to the size of the original part.

Step 2: Remove Open Beams
Due to the fact that I trimmed the lattice, there are now a bunch of open beams (open beams are beams that are either floating or connected on only one side) on the lattice structure. We don’t want these, especially on the inner side face of the lattice. To get rid of them, I open the ’Clean up’ tool and click ‘Select by valence’ with ‘Valence <= 1’. As displayed in the picture, Element highlights all of the open beams and I remove them by clicking ‘Delete’ and hitting ’Save lattice and close’. Removing open beams will ultimately reduce the size of the lattice structure because all of the beams that get deleted are on the surface of the lattice. This is precisely the reason why I started with a largely oversized part to construct the lattice.

Step 3: Trim
Now it is time to trim the oversized lattice to the slightly oversized profile. I select ‘Edit Lattice’ and click the ’Trim’ tab. From the dropdown menu select the slightly oversized part file and hit ’Trim’. As you may have predicted I have created more open beams. However, I designed the slightly bigger part to have the same inner dimensions as the much larger part to prevent creating more open beams on the inner face of the lattice. Therefore, the only open beams now exist on the outside of my lattice shell.  When it comes time to put all of the parts together in mesh mixing software, my lattice will be slightly too large on the face that will connect to the rest of the vessel. Consequently, when I boolean the parts together, I am guaranteed that all of the open beams will make contact with the shell of vessel and that a solid connection will be made.

Step 4: Add Point Modifiers
Due to the nature of the problem, a cylindrical shell like vessel under uniform pressure is weakest along the cylindrical face. Given this, I want to make the lattice denser along those areas. I click the ’Modifiers’ tool and display the lattice I want to modify. I create a new class of modifiers and strategically place points around the lattice where I need it to be strengthened. Each point will apply variable thickness to the regions nearby on the lattice. I can alter the range of each point and change how the thickness gradient changes as I move away from it.

Step 5: Thicken
The only thing left to do it thicken the lattice. I do this by clicking the ‘Thicken Lattice’ tool and switching to the ’Variable’ tab. I chose the lattice I want to thicken, the modifier I would like to apply to it, and set the minimum and maximum beam diameters for the thickened lattice.

Step 6: Export
Click 'file' and export the lattice as an obj. file.

Next, I generate a lattice for the fins -- the part that reinforces the screw holes that connect the two halves of the pressure vessel. This process follows closely to that in the previous section; however, since the fin contains a mechanical feature (the screw hole), I must include a few additional steps. 

Step 1: Generate
Like in the previous, I start by generating a volume lattice from the largely oversized part. I trim the lattice, save and close.

Step 2: Generate Surface
Instead of removing open beams I import the screw face mesh and generate a surface lattice from it.

Step 3: Attract Lattice
Using the 'Move' tool, I attract nodes from the volume lattice to the screw face lattice. I can select a maximum valence (limitation of what nodes can be moved) and the snap distance (the maximum distance away from the attractor lattice the node can be). The nodes that will be moved under my specific parameters are highlighted when I press tab, and once I click ’Move selected nodes’ the volume lattice will be altered.

Step 4: Merge Lattices
Now that the nodes have been moved, I can merge the two lattices. Using the Merge/split tool, I am able to do this by selecting which two lattices to merge.

Step 5: Remove Open Beams, Trim, Add Modifiers, Thicken and Export
Now that I have merged, I can remove the open beams, trim to the slightly larger part profile, add the point modifier, variable thicken the lattice, and export it.

Now that my lattices have been created, the only thing left to do is to connect them to the other parts of the pressure vessel. There are many programs that will allow you to do this, and Netfabb happens to be a very good one. I simply import the files for the various parts into the software, trim the lattices a bit, and unite the parts into one. 

Step 1: Trim mesh to design space
As a consequence of thickening the lattice --which thickens in all directions -- it is now larger than the original design space. I use the intersect tool with the lattice and slightly oversized part to remove the extra material.

Step 2: Repeat
Perform the same intersect with the other lattice

Step 3: Apply rotation to fin
Using the rotation tool, I copy and rotate the fin to create all four fins.

Step 4: Unite outer shell
I use the unite tool to connect the inner lattice to the outer vessel shell.

Step 5: Unite connector and fins
Similarly, I unite the bottom fin connector and the fins to the now connected outer shell and inner lattice.

Thanks for your time!

Element Free 0.12.7

Last week we released a significant update to Element, our free lattice design software. In addition to a major change to our windowing system, we also changed the lattice generation workflow a bit and added the first Element Pro module.

One window

This is something we've been wanting to do for a long time: Element is now one window. For now, open tools appear as a sidebar on the right side of the 3D viewport, but in the near future we'll be resizing them individually to free up even more screen space.

Thickening vs. Meshing

In the back end, nTopology Element represents lattice structures as a list of nodes and a list of beams connecting them. When we create a thick lattice, we apply a diameter to every node, and then thicken the beams such that they have linear interpolation between the thicknesses of the nodes they're connected to. 

Until Element 0.12.7, though, our `Thicken Lattice` tool created mesh (similar to STL/OBJ) objects. Meshes describe lattices as many, many, small triangles, often resulting in file sizes in the hundreds of megabytes. This is okay for printing (most 3D printing build processors take in STL and OBJ files easily) but not very useful while you're designing the part. So with 0.12.7, we've split these two functions up - allowing you to thicken a lattice without bogging down your RAM and video card. You can experiment all you want with these thickened lattices to see what your part will look like, but only need to convert it to a mesh when you're ready to print.


I'm going to start with this: Element Free is still free, and it always will be. For advanced users, however, we're rolling out a series of Pro modules that add more functionality and flexibility. For these, we've implemented a new licensing system that allows us to enable Pro features for our paid customers.

If Element Free does everything that you need it to, this doesn't affect you at all! But if you're looking for more powerful design and analysis tools - and tighter interoperability with other CAD software - then you can browse our Pro modules here. When you're ready to take a trial, just click `Help > Licensing` and follow the instructions there.

NTLatticeGraph export

Our first Pro module offers the ability to import & export lattices in our open source, XML based file format (LTCX). This allows intrepid users to edit lattices outside of Element, and also lets you use beam analysis to analyze your lattice in your preferred FEA package. We're working hard to integrate LTCX into the leading AM build processor software, so you can skip the meshing step altogether and print right from a lightweight, stable file format. You can see the full LTCX file specification here.

Data collection

Starting in 0.12.7, we're collecting anonymized usage data about what tools are being used in Element. You can read our full EULA here, and can opt out of data collection by going to `Help > About`.

Coming in the next month

We're on a roll right now, and will be launching a handful of new Pro modules - and a bunch of improvements to Element Free - over the next month. To start, look out for a new and much more flexible way to generate surface lattices. We're also working on both offset thickening and conformal structures, and will be rolling out FEA, CAD interchange, our Rule builder, and more big features over the summer. We're *really* excited to see what you do with them - get in touch if you've got questions or want to schedule a trial of Element Pro!