Canon EF extension tube set

by SkyRzn Oct 4, 2014
Download All Files

Thing Apps Enabled

Please Login to Comment

Perfect fit, secures way better than the other model i tried and also has the dots in the right place.

Works perfect printed on a ender 3 with similar setting to the recommended on cura also a note for peope thay dont know as me before some research this will work with ef-s lenses and cameras thanks to the creator :)

This made an awesome new addition to my photography gear! Nice work!

Is there any chance you could post the source files? I'm trying to make a fiddly lens adapter and can't for the life of me get the proper measurements.

There is a python script - https://www.thingiverse.com/download:808968
This script generates tube.scad file which you can open in OpenSCAD.
Also you need to download opyscad.py (or opyscad3.py if you have Python 3) from there - https://github.com/SkyRzn/opyscad

I am having trouble getting your script to run using Python 3.6.0. Please bear with me as I am not a programmer but the error I keep getting is

Traceback (most recent call last):
File "C:\Users\kd5jb\Downloads\opyscad-master\uploads-40-ea-52-c9-d1-canon_ef_extension_tube.py", line 164, in
res = tube(tube_in_radius, tube_out_radius, tube_height, tube_notch_size)
File "C:\Users\kd5jb\Downloads\opyscad-master\uploads-40-ea-52-c9-d1-canon_ef_extension_tube.py", line 63, in tube
notch /= [0, 0, angle]
TypeError: unsupported operand type(s) for /=: 'AbstractIns' and 'list'

Am I doing something wrong? I would love to be able to make some different tubes as they fit my 350D and lenses perfectly. Please advise.

It's because opyscad.py was written for Python 2. Just replace div operator name to truediv and it will be working. Also I have added Python 3 script version to opyscad repo: https://github.com/SkyRzn/opyscad/blob/master/opyscad3.py.

The inner ledges are not getting rendered with the supplied python code. Do you know if that still works in the latest OpenSCAD, or should some variables be changed?

It renders properly in OpenSCAD 2015.08.01.
Can you show tube.scad which was generated?

I had the same issue - seems to be caused by the rotate([90,0,0]) actions on the polygons prior to the rotate_extrude calls. If you remove them (by commenting out the line p /= [90,0,0] in the python script) it seems to work a lot better

Just perfect! Thanks

Thanks! I printed the 20mm version for a 50mm Canon fixed lens. It fits perfectly!

I'm glad to hear it.

Je suis décut.
J'ai imprimé les 3 d'un coup et malheureusement les cotes ne sont pas bonne pour mon appareil.
J'ai un Canon 650d avec 50mm, 18-135mm et 70-300mm.
Les bagues ne s'adapte pas (trop petite) et les il est impossible de les verouiller a l'appareil ou à l'objectif.

I'm disappointed.
I printed all 3 at once and unfortunately the odds are not good for my camera.
I have a Canon 650d with 50mm and 18-135mm 70-300mm.
The rings will not fit (too small) and it is impossible to have Origin Lock the device or purpose.

J'ai imprimé les 3 d'un coup aussi et ça rentre parfaitement sur mon 550D qui a les mêmes côtes pourtant...

I printed all 3 at once too and it matches perfectly on my 550D which have same cotations like yours...

I'm so sorry.
I tested this rings with my EOS 500D with 18-55mm and 70-300mm lens. Rings fit properly.
Can you precisely measure internal ring diameter? The internal diameter shall be equal to 54,6 mm.

Not being a pro, I prefer to give you the link below


This is going very well on my device and my goals.

I found a gap of almost 1mm diameter.

Canon EF Extension tubes

I added a python script that generates a file with the openscad tube model. You can try to adjust the sizes.

It's strange. 1mm gap too big.
I printed rings from http://www.thingiverse.com/thing:334254 but they were not tight to body and lens.

Canon EF Extension tubes

I do not know.
I realize that's all.

I can not seem to put either a 20 and a 60 together when we should do it easily.

It seems like your printer not quite fine-tuned. I printed a new ring (previous I gave away) and measured it. It has inner diameter 54,10 - 54,40 mm, while the corresponding diameter of the lens 53,90 mm. Despite some ring ovality and a slightly smaller size than specified from design (54,6 mm), it is well fit to the lens.
If you can't insert one ring to another, this may indicate a certain ovality of the ring.

good evening,
already thank you for our discussions.
I have successfully put them into one another, but not against it is not smooth (it takes a little force)
Otherwise I have made ??a photo and comparison and even a video.

thank you

Thank you too!
I designed it so that the connection was tight and rings don't untwist independently. It should takes a little force.
If you still want to use this rings, you can to try increase tube_in_radius from 54/2 + 0.3 to 54/2 + 0.5 in canon_ef_extension_tube.py and generate own ring model.
Unfortunately, it seems, that everybody needs some adjusting model settings depending on his printer to fit the rings properly.
Good luck!

Thank you for this info,
I would see it

the video no upload, sorry