Hey! This thing is still a Work in Progress. Files, instructions, and other stuff might change!

Fan duct for active cooling, supportless, parametized OpenSCAD

by spinorkit, published

Fan duct for active cooling, supportless, parametized OpenSCAD by spinorkit Jan 1, 2014
14 Share
Download All Files

Thing Apps Enabled

Order This Printed View All Apps



Liked By

View All

Give a Shout Out

If you print this Thing and display it in public proudly give attribution by printing and displaying this tag.

Print Thing Tag

Thing Statistics

36469Views 6434Downloads Found in 3D Printer Accessories


OpenSCAD source code for a supportless, parameterized fan duct that is currently configured to fit an E3D v5 hot end and a Prusa i3 reworked Wades extruder from http://www.thingiverse.com/thing:119616.
Please bear in mind this is my first OpenSCAD program, and the first 3D object I have designed using any sort of CAD software, so there will be scope for improvement!
Source also available at https://github.com/spinorkit/FanDuctOpenSCAD
Inspired by http://www.thingiverse.com/thing:63123
http://www.thingiverse.com/thing:18273, thanks doommeister, and
http://svn.clifford.at/openscad/trunk/libraries/shapes.scad, thanks Catarina Mota.
Print without support in ABS.
Before printing, set, at least, the parameter to the value you use for printing.

Update: added the file FanductOvalJHead45.stl, which is configured for a J-Head with a vertical distance of 45mm from the bed to the center of the mounting bolt.

Update: added the files FanductOvalE3dv6PrusaReworkv4.stl and FanductOvalE3dv6.scad for the E3D v6 . This stl should be printed with 0.2 mm layer height.


Measure the mountToHotEndBottomZ parameter (in mm) by homing the z axis and measuring the vertical distance from the bed to the center of the mounting hinge, as shown in the photo.
Also measure the mountToFilamentHoriz parameter as shown in the photo to ensure the vents will be positioned symmetrically around the nozzle.
Print in ABS without support.
I used Cura with 0.4 nozzle, 0.25 layer height, 0.8 shell thickness,0.75 bottom/top thickness, 20% fill, bed temp 110, and brim platform adhesion.
For the E3D v6 version, use 0.2 layer height.

More from 3D Printer Accessories

view more

All Apps

3D Print your file with 3D Hubs, the world’s largest online marketplace for 3D printing services.

App Info Launch App

Auto-magically prepare your 3D models for 3D printing. A cloud based 3D models Preparing and Healing solution for 3D Printing, MakePrintable provides features for model repairing, wall thickness...

App Info Launch App

Kiri:Moto is an integrated cloud-based slicer and tool-path generator for 3D Printing, CAM / CNC and Laser cutting. *** 3D printing mode provides model slicing and GCode output using built-in...

App Info Launch App
KiriMoto Thing App

With 3D Slash, you can edit 3d models like a stonecutter. A unique interface: as fun as a building game! The perfect tool for non-designers and children to create in 3D.

App Info Launch App

Print through a distributed network of 3D printing enthusiasts from across the US, at a fraction of the cost of the competitors. We want to change the world for the better through technology, an...

App Info Launch App

Quickly Scale, Mirror or Cut your 3D Models

App Info Launch App

3D Print a wide range of designs with Treatstock. Easy to use tools to get the perfect result. The global 3D printing network that connects you with high-quality and fast working print services nea...

App Info Launch App

I'm trying to make my own ducts in OpenSCAD to link up to my 5015 fans, and I was trying to extrapolate from your ducts, but your code skills are beyond my level. Is there any certain flag(s) I can use to extrude a 2D object and bend it? If You can give me some leads, I will study only those and make my design much quicker. I just need a little bit of direction.

The sweep module from here https://www.thingiverse.com/thing:900137 lets you generate a polyhedron from an array of polygons. In this example the polygons are generated by a function giving the shape of the NACA family of airfoils, but this set of modules and functions will work with any 2D shape specified as a list of points. You could experiment with this example to get a feel for how to do what you want in OpenSCAD.
Alternatively, you might like to try https://www.onshape.com/. I don't use it myself yet, but it looks powerful.

NACA airfoil sweep - OpenSCAD library

HELP AND PURCHASE A J-head Hotend E3d V5 3d Printer Head With Fan And I DO NOT FIND THE EXACT FILES FOR MY DA VINCI 1.0 THANKS TO WHO CAN HELP ME [email protected]

What gear-assembly did you use to drive the filament?

The extruder in the photos here was this http://www.thingiverse.com/thing:119616.
However, I now use my Prusa rework extruder (for 3 mm filament) here: https://www.youmagine.com/designs/prusa-compact-extruder-rework

Prusa i3 Rework

well, thanks for your answer
So, is it possible for you to modify your source file to put a 60mm fan instead 40mm please ?
best regards

Jun 30, 2015 - Modified Jun 30, 2015

Ok, could you convert and post file's source please in :

  • .STEP
  • .SAT.

If possible, i will prefer PARASOLID format
Thanks for your answer

Again, I am sorry but I do not think any such conversions are possible. OpenSCAD is the only CAD system I have used so far, and all the source files for this design are published here.

Comments deleted.

thanks for this fan, but i would like to modify it
so i would like to know if it's possible to have the source file of your last version in file .SLDPRT please ?
best regards

I'm sorry, but the source for this design is written in the OpenSCAD programming language and provided as .scad files in the Thing Files section.
I don't have Solidworks and I don't know of a way to convert an OpenSCAD source file to a SolidWorks source file.

Hello, I'm looking for the fan support which is on the pictures printed in black. Can you provide this file or link ?

Thanks :)

I guess you mean the stock E3D v5 printed fan duct? That can be found here http://www.thingiverse.com/thing:114036. I have never printed one, only used the ones printed by E3D that came with their hotends.

E3D V5 Fan Shroud
by Sanjay

thanks it's the good one :)

Thanks for your design.
How have you mounted the e3d v5 on i3 rework? I have an e3d v5 clone and the screws don't hold it in place. I have used adhesive tape on top of the cold end to increase its thickness. Is there any better way?

Yes, there is a better way. Use a version of the rework that clamps the hotend rather then pins in in a slot.

Yes, I had that problem also. I found a metal washer (M10 I think) the right thickness and reduced its diameter so it would fit in the hole by mounting it on a bolt and spinning it in an electric drill while holding a file against it (wearing safety goggles of course).
Later on, I switched to this design for overall improved rigidity: https://www.youmagine.com/designs/prusa-compact-extruder-rework

I was thinking of a design a bit like this, but having the secondary print head duct loop back and connect with the hot end fan mount. The airflow gets directed down to the print after going through the hot end heat sink. This way only 1 30mm fan is needed, and it has a smaller footprint so can be used on small delta printers without eating into build area. Might have a go adapting your scad code..

Hi spinorkit,
First, a big thanks for publishing the source code for this amazing fan duct. I am working on adapting it to my fan mount system (thing # 540716) and I noticed a small typo in the source code, around line 270, you use a value 3.1459 instead of 3.14159 (or the constant pi which you have previously defined).

Also (note this is not a criticism of your amazing work, just a technical remark), the output of the 40mm fan is a disk shape whereas your duct shape begins with the square corners of the fan mount; this creates a discontinuity in the airflow and consequently, turbulence - which does significantly hurt the performance of the fanduct as a whole.

Hi Andre,
Thank you for your comments. I am glad someone is using the source code.
You make a good point about the turbulence generated by the discontinuity at the fan outlet. I hadn't considered that. When I have time I will see if I can fix it.

Hi, great design, I've been using it with great success for about 3 months, but recently ive switched to e3d v6, which is shorter. That would be ok, since you've provided scad file, but for some reason that file isnt generating printable part. To be precise the two cones on the end of the duct aren't connected to the rest of the model. Like this: http://imgur.com/aAdTDjohttp://imgur.com/aAdTDjo do you have any idea why? Or could you please try to generate one for v6? Thanks.

Sorry, I only just realized you posted a screen shot of openscad with the fan duct file open.
So, to answer your question, the gap between the cones and the rest of the model is mainly a result of the layerHeight parameter being set to 1 mm in the scad source. I set it to that to speed up the F5 rendering while tweaking the design parameters. Before hitting F6 in preparation for generating the STL you should set the layerHeight parameter to the value you use for printing (I now use 0.2 mm for these fan ducts). The F6 rendering at 0.2mm takes about 42 minutes on my Core I7.

I have been working on a new version for the E3D v6. I may get time to test print it tonight.

That would be great, ill check back later than.

I have added the FanductOvalE3dv6PrusaReworkv4.stl. I have not printed exactly this one because I am using a different extruder with my E3Dv6, so I have printed a similar one but with a larger mountToFilamentHoriz value and more extreme toe-in to suit my new extruder. So no guarantees. I have also added the new FanductOvalE3dv6.scad source file with the parameters exactly matching the new stl.

Thanks, i appreciate this, i will try to print it tonight and let you know how it went.

Looks like the E3D v6 has a very similar length to the J-Head MKV, try that existing file instead.

Well sadly it does't work, I've printed it yesterday night. There isn't enough space for e3d fan :/

I haven't used OpenScad before, any chance anyone would do a remix for a J-Head MK-V? Nozzle has a shorter length then the E3D.

Sure. Could you measure the mountToHotEndBottomZ parameter (in mm) for your J-Head by homing the z axis and measuring the vertical distance from the bed to the center of the mounting hinge, as shown in the 2nd last photo?

Are you measureing to the center of the mounting bolts or the bottom of the plastic (looks like the former)? I measure 42mm for the later so it would be about 45mm if we go from glass be to nozzle mounting bolts.

I made the E3D version and tried to make a modifying bracket. Problem is that it shifts the air flow center backwards off the nozzle, will post picks shortly.

I uploaded an stl for a version configured for 45mm. This changed the shape quite considerably and I have not printed it, so no guarantees! I tweaked a few other parameters to try and improve the airflow, but these are also untested.
To measure where the airflow is centered, swing the duct back away from the nozzle and use your finger to sense where it is strongest. Mark that position on the duct and with the duct back in position, measure the horizontal distance from the mark to the center of the mounting bolt. This parameter can then be set in the SCAD file to center the airflow on the nozzle.

Much appreciated! I have a 50-60 hour print on the go but will try it as soon as it is finished. Will post pics after installed. Thanks again.

Uploaded a new version with a new "toe-in" angle parameter, which helps center the airflow around the nozzle by compensating for the forward momentum of the flow.

Uploaded a new version with improved support for large camber angles (now defaults to 70 degrees). The idea is to allow the E3D fan to blow across the top of the vented ducts, at 90 degrees to them.

very very nice design :)

I have uploaded a new version with improved airflow. This is achieved by increasing the area of the vented duct by increasing the height and canting the top outwards, using the new camberAngle parameter. I also increased the width of the slots.