* Gears DLC (free) Using the involuteCircular fn to create a variety of cylindrical gearsets * Delete public/kcl-samples/gear directory * Update main.kcl fixing gear meshing * new samples Signed-off-by: Jess Frazelle <github@jessfraz.com> * add link Signed-off-by: Jess Frazelle <github@jessfraz.com> --------- Signed-off-by: Jess Frazelle <github@jessfraz.com> Co-authored-by: Jess Frazelle <jessfraz@users.noreply.github.com> Co-authored-by: Jess Frazelle <github@jessfraz.com>
71 lines
2.2 KiB
Plaintext
71 lines
2.2 KiB
Plaintext
// Spur Reduction Gearset
|
|
// A pair of spur gears meshed together, with an equal module and different number of teeth
|
|
|
|
// Set units
|
|
@settings(defaultLengthUnit = mm)
|
|
|
|
// Define a function to create a spur gear
|
|
fn spurGear(nTeeth, module, pressureAngle, gearHeight) {
|
|
// Calculate gear parameters
|
|
pitchDiameter = module * nTeeth
|
|
addendum = module
|
|
deddendum = 1.25 * module
|
|
baseDiameter = pitchDiameter * cos(pressureAngle)
|
|
tipDiameter = pitchDiameter + 2 * module
|
|
|
|
// Using the gear parameters, sketch an involute tooth spanning from the base diameter to the tip diameter
|
|
gearSketch = startSketchOn(XY)
|
|
|> startProfile(at = polar(angle = 0, length = baseDiameter / 2))
|
|
|> involuteCircular(
|
|
startRadius = baseDiameter / 2,
|
|
endRadius = tipDiameter / 2,
|
|
angle = 0,
|
|
tag = $seg01,
|
|
)
|
|
|> line(endAbsolute = polar(angle = 160 / nTeeth, length = tipDiameter / 2))
|
|
|> involuteCircular(
|
|
startRadius = baseDiameter / 2,
|
|
endRadius = tipDiameter / 2,
|
|
angle = -atan(segEndY(seg01) / segEndX(seg01)) - (180 / nTeeth),
|
|
reverse = true,
|
|
)
|
|
// Position the end line of the sketch at the start of the next tooth
|
|
|> line(endAbsolute = polar(angle = 360 / nTeeth, length = baseDiameter / 2))
|
|
// Pattern the sketch about the center by the specified number of teeth, then close the sketch
|
|
|> patternCircular2d(
|
|
%,
|
|
instances = nTeeth,
|
|
center = [0, 0],
|
|
arcDegrees = 360,
|
|
rotateDuplicates = true,
|
|
)
|
|
|> close()
|
|
// Subtract a 10mm diameter center hole from the gear
|
|
|> subtract2d(tool = circle(center = [0, 0], radius = 5))
|
|
// Extrude the gear to the specified height
|
|
|> extrude(length = gearHeight)
|
|
|
|
return gearSketch
|
|
}
|
|
|
|
// Model a small gear
|
|
spurGear(
|
|
nTeeth = 17,
|
|
module = 1.5,
|
|
pressureAngle = 14,
|
|
gearHeight = 9,
|
|
)
|
|
|
|
// Model a larger gear with the same module
|
|
spurGear(
|
|
nTeeth = 51,
|
|
module = 1.5,
|
|
pressureAngle = 14,
|
|
gearHeight = 7,
|
|
)
|
|
// Translate the larger gear by the combined pitch radius of both gears, plus a small gap
|
|
|> translate(x = (51 + 17) / 2 * 1.5 + 1.3)
|
|
|
|
// Rotate the gear so that the teeth mesh but do not intersect
|
|
|> rotate(yaw = 3)
|