The gears were designed using involute spur gear equations from https://www.engineersedge.com/gear_formula.htm.  Inspiration for a method to create the reciprocating motion was taken from https://www.thingiverse.com/thing:1318702.  With about 30mm of horizontal travel as the gear with the crank rotated, the front and back end of the rams were measured  to protrude out of the ends of the casing throughout the entire revolution of the gear.

The casing and components were designed to make for quick and easy assembly.  This model was intended as a quick print that is accessible to anybody.  The only extra components that are not 3D printed are the 2 M3x20 screws.  While parts of the wheels need to be glued (in order for a better looking 3D print to come out), the rest of the parts can be fitted together without glue.  The slots in the two ram ends allow them to be fitted and secured after the main casing has been placed on top.