77 lines
2.8 KiB
Plaintext
77 lines
2.8 KiB
Plaintext
![]() |
// Spur Gear
|
||
|
// A rotating machine part having cut teeth or, in the case of a cogwheel, inserted teeth (called cogs), which mesh with another toothed part to transmit torque. Geared devices can change the speed, torque, and direction of a power source. The two elements that define a gear are its circular shape and the teeth that are integrated into its outer edge, which are designed to fit into the teeth of another gear.
|
||
|
|
||
|
// Set units
|
||
|
@settings(defaultLengthUnit = mm)
|
||
|
|
||
|
// Define a function to create a spur gear
|
||
|
fn spurGear(nTeeth, module, pressureAngle, gearHeight) {
|
||
|
// Define gear parameters
|
||
|
pitchDiameter = module * nTeeth
|
||
|
addendum = module
|
||
|
deddendum = 1.25 * module
|
||
|
baseDiameter = pitchDiameter * cos(pressureAngle)
|
||
|
tipDiameter = pitchDiameter + 2 * module
|
||
|
|
||
|
// Define the constants of the keyway and the bore hole
|
||
|
keywayWidth = 2
|
||
|
keywayDepth = keywayWidth / 2
|
||
|
holeDiam = 5
|
||
|
holeRadius = holeDiam / 2
|
||
|
startAngle = asin(keywayWidth / 2 / holeRadius)
|
||
|
|
||
|
// Sketch the keyway and center hole
|
||
|
holeWithKeyway = startSketchOn(XY)
|
||
|
|> startProfile(at = [
|
||
|
holeRadius * cos(startAngle),
|
||
|
holeRadius * sin(startAngle)
|
||
|
])
|
||
|
|> xLine(length = keywayDepth)
|
||
|
|> yLine(length = -keywayWidth)
|
||
|
|> xLine(length = -keywayDepth)
|
||
|
|> arc(angleStart = -1 * startAngle + 360, angleEnd = 180, radius = holeRadius)
|
||
|
|> arc(angleStart = 180, angleEnd = startAngle, radius = holeRadius)
|
||
|
|> close()
|
||
|
|
||
|
// 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 the keyway sketch from the gear sketch
|
||
|
|> subtract2d(tool = holeWithKeyway)
|
||
|
// Extrude the gear to the specified height
|
||
|
|> extrude(length = gearHeight)
|
||
|
|
||
|
return gearSketch
|
||
|
}
|
||
|
|
||
|
spurGear(
|
||
|
nTeeth = 21,
|
||
|
module = 1.5,
|
||
|
pressureAngle = 14,
|
||
|
gearHeight = 6,
|
||
|
)
|