Files
modeling-app/rust/kcl-lib/tests/import_async/unparsed.snap
Jess Frazelle 78b6854c6b bump modeling-cmds, nuke slow world (#6753)
* bump modeling-cmds, nuke slow world

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* more stuffs

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* i mechanical engineered today

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* reverse uno your revolves

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* retry logic

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* fixes

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

---------

Signed-off-by: Jess Frazelle <github@jessfraz.com>
2025-05-14 04:07:24 +00:00

108 lines
3.4 KiB
Plaintext

---
source: kcl-lib/src/simulation_tests.rs
description: Result of unparsing import_async.kcl
---
@settings(defaultLengthUnit = mm)
@(lengthUnit = m)
import "../../e2e/executor/inputs/2-5-long-m8-chc-screw.stl" as screw
myScrew = screw
// Define a function to create a helical gear
fn helicalGear(nTeeth, module, pressureAngle, helixAngle, gearHeight) {
// Calculate 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 = 7
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()
// Define a function to create a rotated gear sketch on an offset plane
fn helicalGearSketch(offsetHeight) {
// Calculate the amount to rotate each planar sketch of the gear given the gear helix angle and total gear height
helixCalc = acos(offsetHeight * tan(helixAngle) / (tipDiameter / 2))
// Using the gear parameters, sketch an involute tooth spanning from the base diameter to the tip diameter
helicalGearSketch = startSketchOn(offsetPlane(XY, offset = offsetHeight))
|> startProfile(at = polar(angle = helixCalc, length = baseDiameter / 2))
|> involuteCircular(
startRadius = baseDiameter / 2,
endRadius = tipDiameter / 2,
angle = helixCalc,
tag = $seg01,
)
|> line(endAbsolute = polar(angle = 160 / nTeeth + helixCalc, length = tipDiameter / 2))
|> involuteCircular(
startRadius = baseDiameter / 2,
endRadius = tipDiameter / 2,
angle = -(4 * atan(segEndY(seg01) / segEndX(seg01)) - (3 * helixCalc)),
reverse = true,
)
// Position the end line of the sketch at the start of the next tooth
|> line(endAbsolute = polar(angle = 360 / nTeeth + helixCalc, 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()
|> subtract2d(tool = holeWithKeyway)
return helicalGearSketch
}
// Draw a gear sketch on the base plane
gearSketch001 = helicalGearSketch(offsetHeight = 0)
// Draw a rotated gear sketch on a middle interstitial plane
gearSketch002 = helicalGearSketch(offsetHeight = gearHeight / 2)
// Draw a rotated gear sketch at the gear height offset plane
gearSketch003 = helicalGearSketch(offsetHeight = gearHeight)
// Loft each rotated gear sketch together to form a helical gear
helicalGear = loft([
gearSketch001,
gearSketch002,
gearSketch003
])
return helicalGear
}
helicalGear(
nTeeth = 21,
module = 2,
pressureAngle = 20,
helixAngle = 35,
gearHeight = 7,
)
myScrew
|> translate(y = 10)