How to create a TPMS from an equation


Learn how to create a TPMS by using math equations. This example creates a Schwarz TPMS

Applies to:

  • TPMS
  • Math


1. Build the equation using math blocks

The equation for the Schwarz TPMS is cos(x)+cos(y)+cos(z). Equations in nTopology are built out by individual blocks. Some equations can quickly become complicated. Due to this, we recommend turning these workflows into Custom Blocks, so you only have to build it once. It is also useful to name each block as the function it is representing.

    • Add 3 Cos blocks 
    • In the first Cos block, write in 'X/1 mm'. This gets rid of the units associated with X and allows it to work with Cos.


    • Repeat this for the remaining Cos blocks using Y and Z instead of X.
    • Add an Add block
      • Insert Cos(X) and Cos(Y) into the Add block


    • Add another Add block
      • Insert the Add block with Cos(X) + Cos(Y)
      • Insert Cos(Z)


View the results of your equation. If you just see black, zoom out or use 'Z' to zoom to the object. The TPMS should be quite large.


2. Give your TPMS units

In order to use the TPMS in other operations, it needs units. Add units by multiplying the field by 1 mm.

    • Add a Multiply block
      • Insert the equation from Step 1 into Operand A
      • In Operand B, write 1 mm


3. Trim your TPMS down to size

Use the Boolean Intersect block to edit the size of the TPMS

    • Add a Boolean Intersect block
      • Insert the Multiply block from Step 2.
      • Insert a body that you want to intersect the TPMS with. In this example, we use a small Cube.


And that’s it! You’ve successfully created a TPMS using math blocks

Are you still having issues? Contact the support team, and we’ll be happy to help!

Download the Example file:

More on this topic:


 TPMS variable math build cos how-to x equation schwarz 
Was this article helpful?


  • Is there a way to use this custom-created tpms like a tpms made by nTopology (i.e. to use "walled tpms" ...)?

  • Are you asking to create a walled version of your custom TPMS? Or do you want to use your unit cell in those blocks? The best method would be to use the beta lattice blocks with a custom unit cell.

  • A general Gyroid is represented by, F (x,y,z) =cos(x)∙sin(y) + cos(y)∙sin(z) + cos(z)∙sin(x) + c, and c is function which controls percentage of porosity in a TPMS model.
    Is there a method to implement gyroid architecture on a imported solid model, and control its level of porosity using C function.

  • Is it possible to obtain with this methodology the unit cell of a TPMS? I see that with this method a whole lattice is formed and trimmed down to the desired size, but how can I decide the size of the unit cell itself and obtain just the unit cell? Thank you!


Please sign in to leave a comment.