Follow Along: Field Driven Bracket

Transcript

In this lesson, we will go through the fundamental tools and methods of implementing field-driven design on a periodic lattice structure. We will use the completed file from a follow-along lesson in the Intro to Lats course as our starter file, which you can also download below. We will work to create several design variations for this bracket part.

In the final section of this notebook, which has been renamed to Original Periodic Lattice Body and Final Part, we have this lattice body and the final body variable that takes in this lattice, trims it, then merges it back with the outer bracket part. This input here is the lattice thickness parameter, which is currently constant at 5 mm. But, it does have the scalar field symbol next to it, so we will be using a field here to vary the lattice beam thickness across our geometry. We need these two blocks. So, let’s make a new section called Field Driven Lattice Designs and copy these over by holding Control while selecting both, then pressing Ctrl+C, placing the white line under this new section, and then Ctrl+V.

Let’s now grab from the search bar the first tool we can use called the Ramp block. It needs a scalar field input as a reference for the in min and in max, which define the locations on that reference field that we want to start and end our change, and out min and out max, which are in this case going to be the thickness value at those start and end locations. To start, we’ll use a simple field of a Plane by typing into the input and selecting Plane from Normal block. It’s at the global origin right now, but we will click into this and move it to right at the bottom of the lattice structure because this is going to be where we want our zero reference point. We want to create a variation in this Y direction, so we’ll also change the normal to point to that direction.

To make sure the midpoint of this plane is precise, we can also use the bounding box property of this inner body. Let’s type in “inner body bounding box midpoint” and press enter. If we now select this Plane block and press F to see its field, then let’s move this to the bracket and increase its size. Add a contour into interval of five and then probe values. We can see that where we placed our plane the value is zero, and in that normal direction we have increasingly positive values. The lattice structure ends at around 95 mm, so we will use this in zero as our in min and in max. Out min will be the thickness we want at the in min location of zero, and out max the thickness at that 95 mm location. In between will be a gradual change. We’ll put in 3 mm and 8 mm as well as geometric continuity. Let’s make this ramp a variable called Ramp Thickness and bring this into the lattice body block’s thickness input. If we isolate the final body, we can see that the lattice thickness is gradually increasing from bottom to top, and how this change can look will depend on the type of scalar field you use as input for the ramp.

Let’s try something different this time using a new Ramp block. We will create a new field by adding together two planes. For this, we can grab the Boolean Union block from the search bar, and we’re reusing this Plane from Normal, so we’ll make it a variable called Ramp Plane. Bring this into the Boolean Union block, and then adding another Plane from Normal block. Turn off that visibility, we’re only interested in its field here. Let’s place this one at the top this time, and we can similarly use the property of the inner body implicit bounding box, then use max point instead. Press enter.

Let’s take a look at both planes, highlighting them while holding Control. We will change the normal to be in the same but negative direction. And if we take a look at both of them again, we now have what we want to use to drive our ramp with. If we take a look at the resulting field of this Boolean Union, making it a little bit bigger again with contour intervals and probing values, we have created an effect where starting from both the bottom and top at zero, the values increase until the midpoint between the two planes, which is at around 45 mm. Let’s call this Joined Planes and put this in our new ramp. The in min is zero and in max we will choose that 45 midpoint, and we want the top and bottom to be thicker at 12 mm and to have 3 mm in the middle, then geometric continuity. Since this can be considered another design variation, I’ll make it a variable called Ramp Thickness 2 and then go back to the first ramp and add one. Then, with this new ramp thickness instead, we can see on the final part that the variation follows that new field, and we can really get creative with fields and manipulate them depending on how we want them to influence the spatial variation in our design.

If we now want to change the lattice structure to have a cylindrical cell map instead of the rectangular one that we’ve been using so far, and instead of having this straight line linear change from bottom to top, we want a radial change that matches the lattice better. All we have to do is think about what kind of field we would need to use instead to achieve that.

We will again add another Ramp block and let’s go up to the geometry section and take a look at our original CAD part. We have this whole surface if we select it and make it a variable then look into its properties. We can for example take out this bounding box centroid point and use its field, which is radial with zero value at that point and increasingly positive the farther away from that point. Alternatively, we can also convert this face into an implicit.

Let’s rename this large hole. And because it is now an implicit body, there is now a field associated with it, which is also radial. But what we have here is just a surface boundary. So we will remove this variable content, add a Thicken Body block, bring this back in, and then add a thickness of 1 mm. This is so that we are able to have a cleaner field that we can have a bit more control over. Now, the field has a contained finite negative domain within the implicit body.

So let’s drag this large hole implicit body into our new Ramp block. We will go back up and turn on the large hole’s field, make it a bit bigger, turn on the final body’s visibility as well for reference. Then we’ll probe to define our in-min and in-max locations on this field. Here we will choose the in-min to be 5 mm on this field, and the in-max to be 50 mm. The thickness we want to range from 2 to 15 mm with geometric continuity.

And we’ll do the same steps of making this a design variation variable, then bringing it into the thickness parameter of the lattice body block. And we can see here that we have created a radial variation in beam thickness based on that circular shape of the hole. Let’s rename these two blocks to ramp lattice body and ramped final body.

Then we’ll collapse all these blocks and then move on to the next tool we can use, which will add to the nTop Notebook, called the Transfer Function. For this, we will again create a copy of the lattice body and final body by doing Ctrl+C and Ctrl+V. And I will rename these TF lattice body and TF final body to stand for transfer function.

The Transfer Function block works very similarly to the Ramp block, and we also need to input a scalar field here. But the input and output needs to be lists of values instead. And these will create something like multiple mini ramps put together. So for our field, we will use a Plane from Normal block again. And we will reuse that same origin that we used for the first ramp plane, but we will change the direction of the normal to be along this x-axis.

Let’s look at its field, and we now have here an increasing value from the plane in the direction of the x-axis. And we will start to probe these values to fill out our scalar list input by adding those items, as well as for the scalar field output list. And the size of these two lists have too much. So the start of our change can be at zero. So the first item we will leave at 0 mm. Then we will have the end of the first change and the start of the second change at 28 mm. Then again, the next one at 87 mm, 190 mm, and then we’ll have the last one right at the end at around 225 mm.

Now the output will be our designated thickness at each of these points. So we’ll go ahead and fill out this list with the different thickness values that we want. For extrapolation, we will choose clamped and then follow the same process as before and make this a variable, which we’ll call TF, and then bringing this into the thickness parameter of the lattice. And to be able to better see the changes here, we’ll change the cell map type to rectangular.

Then if we turn off that field and isolate that final body, we can really see that the Transfer Function is like those mini ramps put together, where it will allow us to have more control over the different changes that we can apply across our geometry. The next and last tool we will use is called Mix, and this block will allow us to blend together two different fields. We can also use implicit bodies as inputs for these.

For scalar field A, we will use the lattice body that we created with the Transfer Function. And we can go into the properties to grab the implicit chip, which contains its implicit form. Then for field B, we will use the inner body implicit body and we will try to blend the two together starting with the factor of 0.5, which is an equal mix of the two. This factor can range between 0 and 1. And here we can see that both of them are blended together. If we put in a factor of 0.9 instead, we will have more of the inner body, and 0.1 will have more of the lattice body.

So this mix applies the blending across the entire structure of both of the input fields. But we can also ramp this factor to create again that variation across the geometry. To drive this ramp, we could of course use any of the fields that we have previously created for the Ramp and Transfer Function blocks. But this time we’re going to use the implicit body of the outer body part of the bracket. And if we look at the field of this part and turn off the visibility of the object, put on a contour interval as well as probe the values, we have at the boundary of the body a value of zero, and a field that is following the shape of this object.

So we will use this as our reference for ramp. And starting with 0 mm and then we want the areas closest to the outer body to be solid like the inner body. So we will choose the in-min of one. And closer to the center, where on our field is around 35 mm, we will want the lattice body, so a factor of zero. And we will choose geometric continuity in this case. And if we isolate the Mix block, we can see the result without the cleanup.

So the last step we need for this is that final body block, which contains the last steps. So we will copy and paste this over and rename this mixed final body. Then we’ll make this mix a variable called mix, bring it in instead of the lattice body to have our final mixed part. Using the arrow to the left of the input field, you can also play around with the different values for your in and in-max before deciding on a final value.

In this video, we walk through the different ways to use fields to drive the design of a latticed bracket. The lesson will demonstrate how to use the Ramp block, the Transfer Function block, and the Mix block.

Please download the nTop file below to follow along with the tutorial. This file is the completed file without descriptions from the “Follow Along: Periodic Lattice” lesson in the 210: Intro to Lattices course. Check out our lessons on Periodic Lattices to learn how this latticing workflow was created.

If you would prefer to walk through this lesson in PDF format, you can download our PDF guide below.

For a faster or slower speed for the video, click on the settings in the bottom right of the video.  

Example File:

This file was last updated in nTop 5.15.2

220_11_1 Follow Along — Field Driven Bracket.pdf