Loading

MakerBot Print is our newest print-prepration software, which supports native CAD files and STL assemblies,
allows you to interact with all your printers via the Cloud, and many other exciting new features.

Download Now

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

Cut your own gears with profile shift - OpenSCAD library

by Parkinbot Jan 14, 2015
Download All Files

Thing Apps Enabled

Please Login to Comment

Hello, I am confused as to what changes to make to create a herringbone bevel gear, could you please elaborate a little further? thankyou.

You can't construct it directly by gear_bevel, but you can easily compose it. A fast way is:

w=30; 
scale([1,1,-1])
gear_bevel(w_bevel=-45, w_helix=w, center=false);
gear_bevel(w_bevel=45, w_helix=w, center=false);

with w setting the helix angle.

I try with this code (file "animation"), but It's very long to see the movement.
How can I improve this code to save time?

// render(convexity = 4)

also corrected the loop to keep the step angle constant

DR=15.48;
angle_cone=6.277;

pas = 10;
anglefinal= 360;
//animation : Temps à 1 ; FPS=1 ; Etapes = anglefinal/pas

//$t=1; 
// render(convexity = 4) 
difference()
{
sphere(20,$fa=1);

  for(i=[0:pas:$t *anglefinal])
    {
        rotate([0,0,i]){
            translate([DR,0,0]) {
            rotate([0,angle_cone,0]) {
                rotate([0,0,10]) cube(12,true);
            }}}

     }
}
rotate([0,0,$t*anglefinal]){
            translate([DR,0,0]) {
            rotate([0,angle_cone,0]) {
                rotate([0,0,10]) cube(12,true);
            }}}

With your code, I don't see the hole !!!!!!

which version and OS are you using? I'm using 2018.04.06 and would advise you to switch to a newer development scnapshot, see section "Development Snapshots"

Thank you, this was the problem. The program run perfectly now. I had the 2015 program.

Thank you,, I can animate now. But I can't see the Tools whick cut the gear. How can I see the tool ?

you must design your animation in such a way that OpenSCAD draws each frame as function of $t. So you will have draw the tool and the gear both parametrized so that the code calculates the state from 0 to angle for each frame. That means, when angle==90 for example, allow the tool to cut only until until 90 degrees and so on - and not always 360 as is in the production code of the lib function doing this job. So you must parametrize this call ...

Hi, I try to animate to make the same video, but il don't know insert the gear ath the right time with the cvariable $t ?
How you keep the difference in each time ?

a simple animation would be:

angle = $t*90; 
rotate([0,0,angle]) gear(); 

then activate View/Animation, set FPS to something like 10 or 20, and Steps to 100 or more. To save the frames to the project directory check Dump Pictures and let the system calculate, until the check mark vanishes.

does this library allow for sections? I'm seeking to build a curve gear rack set for 94cm radius, but due to its size need to print in sections. With inner and outter rack teeth.
(I don't know SCAD, and before spending time downloading and learning, I wanted to seek opinions from a few experts!)

well the library isn`t specifically designed for this, since you can use OpenSCAD to do all the special stuff by means of intersections, unions and differences. To get a ring segment with inner and outer spline, you'd best start by differencing two gear2D objects and subtract also a pie to get a section (or intersect one). Look at this code:

use <gears.scad>
use <shortcuts.scad> // download at https://www.thingiverse.com/thing:644830
z = 80; 
linear_extrude(height = 5)
difference()
{
  gear2D(z = z, m=1);  // outer spline
  gear2D(z = z, m=0.9); // inner spline
  CiS(z, w1=360/8, w2 = 360);  // divide circumference by 8 to get 8 equal sections
}

Of course, you must design your gears well, with respect to the modulus and to a segment that divides the circle well and so on. Also note that the code can get slow, when it is used for gears with a large number of theeth. If you need further help with OpenSCAD please refer to the OpenSCAD newsgroup http://forum.openscad.org/

OpenSCAD - faster coding with shortcuts library and new primitives

Awesome work! I wish I had stumbled upon this library earlier.

Hi, very very new to OpenSCAD. I really want to be able to use your library to create some gears, but I honestly don't know where to begin. So far I've downloaded the gears.scad library and put it in my libraries folder. Do you mind explaining to me how can I start making gears, or point me in the right direction?
Thanks a lot.
Looking forward to using this.

Please read the "Usage" section in my description.

I'm getting the hang of it. Thank you!! how do you do your animations?

OpenSCAD has some animation support and allows for some scripting with it. The output is a series of PNGs which you can use as frames for a video.

Thank you very much. This is my new favorite gear library.

It's a very interesting idea, have made a thing with (see: remix). I have found a problem of bevel gears while making a gearcube:
The shape is made in flat layer (2d-subsystem) and then extruded to 3d. If a gear has a big diameter and a small heigth, the teeth are not deep and will not match to an other gear. Example 100 teeth and 10 teeth will not match. The 2d should be folded up to 90degree to the hull cone of the gear and then 3d-ified. I have worked on this problem for a time and have not found a solution in openscad. It would need a scale function in polar coordinates (scale r while constant angle; pointwise). Because this function doesn't exist, I have no idea.

Thank you, I will continue using this Idea of gearcutting.

I have uploaded a much faster version using the features of OpenSCAD 2015.03. Spur gears render now almost instantly.

I love your remix. Colorful and nicely designed. I wished I could watch a video and see it running ;-) I'd be happy to put it on my YouTube channel if you have none.

You are right: My approach does not cover bevel types very well. This is what I wrote about them in my description:
"bevel types I did more for fun using the mighty 'scale', 'twist' and 'slices' features of OpenSCADs 'linear_extrude(). But please don't expect too much. To do bevel gears properly there is a lot more Math to do, which does not fit into this neat approach any more"

I'm planning to rewrite the lib sooner or later and introduce OpenSCAD 2015 features (list comprehension). This will improve and speed up the approach. Stay tuned.

(have sent a message to you)

Hallo faggahz

ich antworte mal public, weil meine Antwort auf Dein Feedback sicher auch für Andere interessant ist. Freut mich, dass Du Dich mit dem Ansatz auseinandersetzt und ihn für Deine Designs nutzen kannst.
Das mit der einfachen Zahnhälfte einer Zahnstange als Tool war der erste Ansatz, der damals, noch mit OpenSCAD 2014, so besser umzusetzen war. Inzwischen hat sich bei OpenSCAD was getan (list comprehensions). Man kann Zahnstangen auch parametrisiert generieren, und die 2D-Berechnung kommt ohne das langsame CGAL aus. Diesen Ansatz bin ich bei meinen Nautilus-Projekten gegangen und will ihn auch schon länger in diese Bibliothek integrieren, nur die Zeit ist mein Feind.
Für die Herringbone-Lösung habe ich sogar ein 3D-Werkzeug zum Schneiden benutzt, was natürlich Zeit beim Rendern kostet.

Warum ein Zinken aus einer Zahnstange bzw. eine Zahnstange als Werkzeug?
Wenn Du ein Evolventenzahnrad (EZ) mit unendlichem Radius nimmst, erhältst Du eine Zahnstange. Da ein EZ (im Gegensatz zu anderen Zahnradarten) mit allen anderen gleichen Moduls gepaart werden kann, bietet es sich an, als Werkzeug die triviale Lösung 'Zahnstange' zu verwenden. Man könnte auch andere Schnittwerkzeuge basteln, kommt dann aber wieder auf Evolventen und schließlich auf den Gedanken, die Zahnräder gleich über die Evolventengleichung zu berechnen. Das ist aber der gewöhnliche Ansatz, den alle gehen. Mir ist bisher allerdings noch nicht bekannt (und ich denke mit Mitteln von OpenSCAD ist das auch nicht einfach), wie man das Problem der Profilverschiebung (PV) einfach (!) löst. Du wirst dafür auch kein Zahnrad mit PV in Thingiverse finden. Mein Ansatz ist der einzige, der das einfach und anschaulich löst. Beim Schneiden stellt man das Werkzeug einfach um die Profilverschiebung weiter zu (=radiales Verschieben bei gleichem Wälzkreis). Dadurch ergeben sich andere 'Taschen' am Zahnfuß und andere Zahnhöhen, die man sonst berechnen müsste. Also alles einfach und anschaulich. Man muss nur die Zahnstange richtig wälzen. Diese Formel ist denkbar einfach.

Du schreibst von 'Stufen' im Zahnfuss, also in der Tasche. Die kannst Du durch Hochsetzen des 'Iterations' Parameters reduzieren bzw. loswerden. Da diese Teile des Zahns aber nie Kontakt mit dem Gegenzahnrad haben, ist ihre Form im Prinzip unkritisch. Beim EZ hat nur der Evolvententeil Kontakt. Die Tasche muss lediglich so groß sein, dass sie nicht stört und dafür ist die Zahnstange als Schnittwerkzeug der beste Ansatz.

Zum Emmett Würfel: Kegelräder musst Du nicht aus dem Ursprung heraus berechnen. Du kannst am Außenradius beginnen und nach innen hin verjüngen. Der Öffnungswinkel des Kegels definiert die Steigung. Hier schaust Du am besten in meinen Code, wie ich die Winkelung umgesetzt habe.

Nautilus gears with involute herringbone gearing - customizable

Hallo, Parkinbot,
Deine anderen Objekte (Nautilus etc.) habe ich zwar runtergeladen, aber noch nicht analysiert. Deshalb bin ich z.Zt noch auf altem Stand gewesen. Ich habe gedacht (ohne zu prüfen), daß das nur das "alte" auf zusätzliche Formen aufgebracht sei. Fachlich komme ich aus der Elektro,- und Steuerungstechnik, also bin ich in diesen Zahnrad-Themen auch sehr "unbedarft". Aber ich werde dranbleiben an diesem Thema, soweit es meine Zeit erlaubt.
Ob die Kegelräder bis in den Ursprung hinein berechnet werden, ist vielleicht nebensächlich, aber wenn man Punkt und Richtung des einen hat, kann man durch einfaches rotate() die Richtung des anderen bestimmen. Damit meine ich nicht, wie es innerhalb einer Bibliothek berechnet wird, sondern wie es der Anwender aufruft.
Mein Ziel, was nur vielleicht und in ein paar Jahren zu erreichen ist, wäre die Definition eines Hypoid Kegelrades mit Ursprungspunkt, Winkel und Versatz zwischen beiden. Da müßte als Sonderfall auch das Schneckengetriebe mit entstehen können. Dann würde ich vielleicht auch mein gear_tetrahedron zur Bewegung bringen können: mit intersection zweier Hypoid Kegelräder und außermittig gelagert. Ist mir klar, daß die Funktion dann ein abslouter Kompromiß sein würde, falls das überhaupt machbar sei.

Ich habe Dir mal eine Emmett.scad mit dem regulären Ansatz für den Würfel dazugelegt. CGAL ist langsam (zum Rendern ist besser, man macht ein Zahnrad, exportiert das als STL und importiert es dann wieder). Für die unregelmäßigen Lösungen (Zahnräder unterschiedlich übersetzt) muss man die Winkel und Zähne anpassen. Das geht aber! Natürlich will die Symmetrie gewahrt sein.

Der Hypoid-Ansatz ist natürlich souverän, nur wird man das in OpenSCAD (und mit linear_extrude) nicht hinbekommen, da man dazu eine ordentliche Programmiersprache braucht.

Oops, das war ja schnell im rendern.

Bei original emmett störte mich etwas, daß für den Konuswinkel ein seperates Programm notwendig ist. Und daß nur 1 Paar erzeugt werden. Das ist bei unregelmäßigen shapes viel Tipparbeit was wohin rotiert werden soll. Vielleicht sind deshalb keine heart gears in scad veröffentlicht (meines wissens nach). Das Problem habe ich im Dezember gelöst, hat aber keiner gemerkt. Aktuell ist meine Arbeit mit beliebigen Zähnezahlen fertig, es laufen aber noch test prints. Scad kann alles benötigte berechnen; aber das habe ich nur bei GregFrost abgeschaut. In Summe wird das nichts neues sein, kommt im April.
Aktuell habe ich ein Derivat der Planetary Gears, aber -oh Schreck- passen die Pins nicht. Muß noch nachschauen, um nicht zuviel Mist zu veröffentlichen. Ist in wenigen Tagen fertig.

Ich denke, der Hypoid-Ansatz könnte funktionieren, wenn scad das mit rendern hinbekommt. Aber in diesem Projekt kommt mir meine Ahnungslosigkeit zugute, ich weiß nicht im voraus, daß es nicht geht. Aber ich kann ja noch lernen.

Vorsicht, Emmett.scad ist eine Art Spaß-Antwort auf Dein gear_tetrahedron. Sie passt geometrisch, ist aber nicht drehbar!

Du musst die Lösung umbauen in einen regulären Würfel (Hexaeder), aber das hat Emmett ja schon gemacht. Die endgültige Form ist ja nur eine intersection z.B. mit einem Herzen oder gar einem Kopf. Hab mir inzwischen auch die Zahnung von Emmett angesehen. Die müsste m.E. hakelig sein, weil die Zahnhöhe nicht begrenzt (oben spitz) ist.

This is excellent. I've spent way too much time and money trying to get the right sized small plastic gears for a couple of projects. This library has put an end to that. Thanks!

This is a brilliant piece of work. To arrange this amount of complexity into 4k of code is amazing. Then on top, provide elegant API/documentation to render the library easily usable. Well done sir, well done.