3d part design with Inkscape and Openscad #43: Revisiting the perforate module

A revisit to the tube perforate module to modify it so I can use an stl file in addition to a dxf file.

3 min read
By Bob
3d part design with Inkscape and Openscad #43: Revisiting the perforate module

I was watching some youtube videos and one popped up that was made by Robert Murray Smith and he was making a Darwin wind tube which takes air in from the sides and directs it out the end to make a wind turbine, this looked like a good job for Inkscape and Openscad so I started to make the design.

Here's  the video:

I made a circle and subtracted another circle from it that was 5 mm smaller creating a round ring the size I wanted the louvers, then I cut the ring into a quarter by using path>difference with a square. I wanted to make them rounded to see if it would help to take advantage of the coanda effect and they will probably need to be tilted a bit . Then I made the fins by creating rectangles and rotating them into the correct position, then subtracted a circle that was the correct size for the center from them:

I put the quarter circle on layer 1 so I could use rotate extrude to make a ring, and the fins on layer 2 so I could extrude them to the same height as the ring:

Once I had one ring made I wanted to use the perforate module to make several of them and adjust their height but noticed I didn't have any way to use an stl file with the perforate module, so I modified my existing code to use an stl file:

Just copy and paste the code into the Openscad editor.

/* [STL Perforate] */
Show_Perforate = false;
Path_to_STL_File ="/home/none3/Desktop/filename.stl";
Columns = 1; //[1:100]
Rows = 1; //[1:100]
diameter = 1; //[1:.1:200]
Verticle_spacing = 1; //[1:.1:200]
Horizontal_spacing  = 1; //[1:.1:200]
Verticle_rotate = 90; //[0:.1:360]
Rotate_X = 0; //[0:.1:360]
Rotate_Y = 0; //[0:.1:360]
Rotate_Z = 90; //[0:.1:360]
Rotate_All_X = 0; //[0:.1:360]
Rotate_All_Y = 0; //[0:.1:360]
Rotate_All_Z = 0; //[0:.1:360]
Move_X = 0; //[-200:.1:200]
Move_Y = 0; //[-200:.1:200]
Move_Z = 0; //[-200:.1:200]

module STL_Perforate(){
   rotate([Rotate_X ,Rotate_Y,Rotate_Z])
if (Show_Perforate)


Now I can import an stl file and use it with the tube perforate module or make multiple stacked copies of an stl file and adjust them how I want.

You can make some interesting designs just for fun by rotating the object and changing the spacing, which might be handy with different types of stl files.

And a couple made with a beveled nut from the beveled nut module: