Understanding Sverchok’s Waffle node to create waffle structures in Blender for digital fabrication
After looking at How to slice a 3D model for laser cutting and CNC milling we will see today how we can use Sverchok’s Waffle node to create waffle structures. Waffle structures are 3D structures made up of individual 2D slices (struts) intersected on the XY axes with notches wide as much as the material used. The Waffle node is not the easiest one and it requires some preparation and understanding so let’s dig into it.
Waffle node: the basics
What the Wafle node does it to take the section of an object and create a notch on the top or on the bottom of a defined section line. Here is a minimal example of the node in action:
First we create a cross section of the sphere that we have generated. Then we create a second cross section on the previous one: this will produce a line that we pass to the Waffle node in the vecLine socket. The node will generate a notch in the sphere cross section (vecPlane and edgePlane sockets) on the top or on the bottom of the provided line, wide as much as the thick parameter.
- The cross sections must be vertical because the Waffle node can create the notches only on the top or on the bottom of them;
- We must use the Cross section node and not the Bisect node;
- The matrices of the cross sections should not be orthogonal, instead using something like (1.0, 0.001, 0) will give better results (see also “Tweaking the parameters” paragraph later on this);
- You have to pass to the Waffle node only Edge data and not Face data: to prevent this, filter the result of the first cross section with the Polygon to edges node (if you use Fill section);
Waffle node: working on the waffle structure template
Of course this first example has not many practical applications: we want to create waffle structures that we can fabricate and assemble, hence we want to have always a pair of Waffle nodes crossing each other and generating multiple struts per object. This requires some more work, however an excellent starting point is the template provided in the examples’ section of Sverchok.
It might seem intimidating but it’s just an expansion of the the first example that we have seen. On the top left we have the input object; below there are the lists of cutting matrices, on the X and on the Y axis; inside the block in the middle we generate the cross sections of the object and the vertical lines where the notches will be putted; at the end we have the Waffle nodes and the visualization.
Let’s work on this template. For example, I would like to create the base object in Blender’s viewport or in another Sverchok tree and then create the waffle structure out of it.
1. Import an object from the scene
In the viewport I have created this simple object from which I want to create the waffle structure.
All I have to do is to use an ObjectIn node, however remember to add also a Matrix apply(verts) or you will get weird or no result. An alternative would be to do CTRL+A -> Rotation and scale on the object in the viewport before importing it to the node tree but I prefer to use the Matrix apply(verts) node and automate the process. The idea is to provide the “final” coordinates of the vertices to the nodes and not the ones before the transformation matrices.
2. Setting the cutting matrices
As you can see we are already getting some results, what we need to do is to set the cutting matrices by changing the start and stop socket of the Range Float node. Change the count to have more of less slices.
IMPORTANT: the start and stop points of the matrices should not go beyond the bounding box of the object. If this happens the Cross section nodes will fail and so will the rest. In this example my object is a square on the XY so I can use the same values on both axes but if you use a more irregular shape you will have to create two separates Range Float nodes for X and Y.
3. Setting the notches’ thickness
Good, the last thing to do is to set the thick parameter for the Waffle node. You can do it in the Float node named thickness in the template. For some reasons its maximum has been limited, so you will probably have to increase it in its extended properties (N panel).
Remember that our final goal is digital fabrication so we have to be precise with the units, like I’ve showed here. In my case my units are millimeters so a value of 3.0 in the thick socket will mean 3.0 mm.
4. Tweaking the parameters
Most likely now your result will suck, like you can see in the previous image, with few or zero notches generated. This is probably a combined effect of limits/bugs in the Waffle and Cross section nodes and with the Blender’s functions underneath them. However you don’t have to loose your faith. Here’s what you can do:
- Change the threshold parameter in the Waffle node: honestly I did not understand what this parameter does but it seams to me that setting it to 0 gives the best results. Click Update NodeTree in the N panel to see the effect;
- Tweak the angle of the cutting matrices. The values in the screenshot below lead to a correct waffle structure for me;
- Tweak the start and stop point of the cutting matrices, even a small change might lead to the desired result;
- If none the above worked you might try to slightly modify your mesh, for example increasing the number of subdivisions. Update the Objects in node after that.
5. Exporting the result
When you finally get a correct waffle structure, you can bake it and export it to DXF with the method shown in our How to slice a 3D model for laser cutting and CNC milling with Blender and Sverchok.