kcl-std → functions → involuteCircular

involuteCircularFunction in std::sketch

Extend the current sketch with a new involute circular curve.

involuteCircular(
  @sketch: Sketch,
  angle: number(Angle),
  startRadius?: number(Length),
  endRadius?: number(Length),
  startDiameter?: number(Length),
  endDiameter?: number(Length),
  reverse?: bool,
  tag?: TagDecl,
): Sketch

Arguments

NameTypeDescriptionRequired
sketchSketchWhich sketch should this path be added to?Yes
anglenumber(Angle)The angle to rotate the involute by. A value of zero will produce a curve with a tangent along the x-axis at the start point of the curve.Yes
startRadiusnumber(Length)The involute is described between two circles, startRadius is the radius of the inner circle. Either startRadius or startDiameter must be given (but not both).No
endRadiusnumber(Length)The involute is described between two circles, endRadius is the radius of the outer circle. Either endRadius or endDiameter must be given (but not both).No
startDiameternumber(Length)The involute is described between two circles, startDiameter describes the inner circle. Either startRadius or startDiameter must be given (but not both).No
endDiameternumber(Length)The involute is described between two circles, endDiameter describes the outer circle. Either endRadius or endDiameter must be given (but not both).No
reverseboolIf reverse is true, the segment will start from the end of the involute, otherwise it will start from that start.No
tagTagDeclCreate a new tag which refers to this line.No

Returns

Sketch - A sketch is a collection of paths.

Examples

a = 10
b = 14
startSketchOn(XZ)
  |> startProfile(at = [0, 0])
  |> involuteCircular(startRadius = a, endRadius = b, angle = 60deg)
  |> involuteCircular(
       startRadius = a,
       endRadius = b,
       angle = 60deg,
       reverse = true,
     )

// Example: a gear that uses an involute circular profile for the teeth.
@settings(defaultLengthUnit = mm)

/// // Define gear parameters
nTeeth = 21
module = 1.5
pressureAngle = 14deg
gearHeight = 6
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(
       startDiameter = baseDiameter,
       endDiameter = tipDiameter,
       angle = 0,
       tag = $seg01,
     )
  |> line(endAbsolute = polar(angle = 160deg / nTeeth, length = tipDiameter / 2))
  |> involuteCircular(
       startDiameter = baseDiameter,
       endDiameter = tipDiameter,
       angle = -atan(segEndY(seg01) / segEndX(seg01)) - (180deg / nTeeth),
       reverse = true,
     )
  // Position the end line of the sketch at the start of the next tooth
  |> line(endAbsolute = polar(angle = 360deg / 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 = 360deg,
       rotateDuplicates = true,
     )
  |> close()
  // Extrude the gear to the specified height
  |> extrude(length = gearHeight)

Found a typo?