3D Profiled Pinion Gears from Arbitrary Periodic Surfaces


A tool was made to generate gears from aribtrary 3d periodic surfaces. It has so far been tuned for a specific column geometry, but could be made to work with arbitrary surfaces or even STL files. The idea is that a periodic structure could act as a rack and a custom pinion gear could be generated to roll along the surface.

There are two versions of the tool to play with. Neither of which are fully user-friendly at the moment. Do note, that there are substantial load times to generate the structures. I have not yet made use of webworkers, although I did spend some time looking into reducing the geometry passing during the constructive solid geometry boolean operations.

I was actually able to import the geometry into Solidworks (see below). I manually had to import each y-layer of data. There is a slightly more automated process to do this through macros that I just found an answer to, but have not yet implemented yet. This does mean, that I was able to develop a workpath that goes from custom geometry not possible in SolidWorks, generated with my own code in Javascript making use of three.js, and exported/imported to SolidWorks to be integrated back into my normal workpath for robotics and product design. Seems pretty cool.



Cell is used to carve away material.


Gear demonstrates rolling along surface.


Gear, column, slicing triangle, segment that is patterned.


Full view of geometry generated in three.js application.


Screen gui allows varying resolution of slices, ie number of steps to take with cutting geometry.


Note, the current involute profile the cutter follows is not quite accurate. This needs and can be tuned for more accurate representation.


A ray is cast up and down the y and z axes to generate points on the x-z plane. Face intersection is used to identify location of points. Some measures are used to reject the unwanted faces, this includes counting intersections and rejecting certain normals. Splines are then fit to the new points, and then uniform points are taken from the spline equations.


Higher resolution of steps gets more face intersections.


Larger step sizes acts as a crude low-pass filter. Also importing curves into SW was a manual process, so fewer Y-layers were easier to manage.


Points imported into SW as curves, and lofted.


Surface is then cleaned up by slicing, mirroring, circular patterning, lofting connecting sections, circular patterning again, trimming, and finally making into a solid. The surface generated in the Javascript application is now a native solidworks solid body that can be operated on as any other part of the bill of materials.




CBA 2015