* Teaching t2c how to counterbore, countersink, and counterdrill * Delete public/kcl-samples/parametric-bearing-pillow-block directory * Update mounting-wire.kcl * new artifiacts Signed-off-by: Jess Frazelle <github@jessfraz.com> * Update kcl-samples simulation test output * Update kcl-samples simulation test output * 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> --------- 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> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
		
			
				
	
	
		
			121 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			121 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
// Counterdrilled Weldment
 | 
						|
// A metal weldment consisting of a counterdrilled plate, a centrally mounted housing tube, and four structural support fins.
 | 
						|
 | 
						|
// Set units
 | 
						|
@settings(defaultLengthUnit = in)
 | 
						|
 | 
						|
// Define parameters
 | 
						|
boltSpacingX = 5
 | 
						|
boltSpacingY = 3
 | 
						|
boltDiameter = 1 / 4
 | 
						|
counterdrillDiameter = 7 / 16
 | 
						|
counterdrillDepth = 3 / 16
 | 
						|
tubeInnerDiameter = 1 + 1 / 4
 | 
						|
tubeThickness = 0.115
 | 
						|
tubeHeight = 2
 | 
						|
stockThickness = .5
 | 
						|
 | 
						|
// Calculate the dimensions of the block using the specified bolt spacing. The size of the block can be defined by adding a multiple of the counterdrill diameter to the bolt spacing
 | 
						|
blockLength = boltSpacingX + boltDiameter * 6
 | 
						|
blockWidth = boltSpacingY + boltDiameter * 6
 | 
						|
 | 
						|
// Draw the base plate
 | 
						|
plateSketch = startSketchOn(XY)
 | 
						|
  |> startProfile(at = [-blockLength / 2, -blockWidth / 2])
 | 
						|
  |> angledLine(angle = 0, length = blockLength, tag = $rectangleSegmentA001)
 | 
						|
  |> angledLine(angle = segAng(rectangleSegmentA001) + 90, length = blockWidth, tag = $rectangleSegmentB001)
 | 
						|
  |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $rectangleSegmentC001)
 | 
						|
  |> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $rectangleSegmentD001)
 | 
						|
  |> close()
 | 
						|
  |> subtract2d(tool = circle(center = [0, 0], radius = tubeInnerDiameter / 2))
 | 
						|
plateBody = extrude(plateSketch, length = stockThickness)
 | 
						|
  |> chamfer(
 | 
						|
       length = boltDiameter * 2,
 | 
						|
       tags = [
 | 
						|
         getNextAdjacentEdge(rectangleSegmentB001),
 | 
						|
         getNextAdjacentEdge(rectangleSegmentA001),
 | 
						|
         getNextAdjacentEdge(rectangleSegmentC001),
 | 
						|
         getNextAdjacentEdge(rectangleSegmentD001)
 | 
						|
       ],
 | 
						|
     )
 | 
						|
 | 
						|
// Define hole positions
 | 
						|
holePositions = [
 | 
						|
  [-boltSpacingX / 2, -boltSpacingY / 2],
 | 
						|
  [-boltSpacingX / 2, boltSpacingY / 2],
 | 
						|
  [boltSpacingX / 2, -boltSpacingY / 2],
 | 
						|
  [boltSpacingX / 2, boltSpacingY / 2]
 | 
						|
]
 | 
						|
 | 
						|
// Function to create a counterdrilled hole
 | 
						|
fn counterdrill(@holePosition) {
 | 
						|
  cbdrill = startSketchOn(plateBody, face = END)
 | 
						|
    |> circle(center = holePosition, radius = counterdrillDiameter / 2)
 | 
						|
    |> extrude(length = -counterdrillDepth)
 | 
						|
  cbBolt = startSketchOn(cbdrill, face = START)
 | 
						|
    |> circle(center = holePosition, radius = boltDiameter / 2, tag = $hole01)
 | 
						|
    |> extrude(length = -stockThickness + counterdrillDepth)
 | 
						|
    // Use a chamfer to create a 90-degree counterdrill edge
 | 
						|
    |> chamfer(length = (counterdrillDiameter - boltDiameter) / 2 * sqrt(2), tags = [hole01])
 | 
						|
  return {  }
 | 
						|
}
 | 
						|
 | 
						|
// Place a counterdrilled hole at each bolt hole position
 | 
						|
map(holePositions, f = counterdrill)
 | 
						|
 | 
						|
// Drill a small pin hole in the side of the tube
 | 
						|
pinhole = startSketchOn(YZ)
 | 
						|
  |> circle(center = [0, 2.2], radius = 0.125)
 | 
						|
  |> extrude(length = -10)
 | 
						|
 | 
						|
// Model the central tube and subtract the pin hole
 | 
						|
centralTube = startSketchOn(offsetPlane(XY, offset = stockThickness))
 | 
						|
  |> circle(center = [0, 0], radius = tubeInnerDiameter / 2 + tubeThickness)
 | 
						|
  |> subtract2d(tool = circle(center = [0, 0], radius = tubeInnerDiameter / 2))
 | 
						|
  |> extrude(length = tubeHeight)
 | 
						|
  |> subtract(tools = [pinhole])
 | 
						|
 | 
						|
// Create a function to create a fin which spans from the central tube to the bolt hole
 | 
						|
fn fin(@i) {
 | 
						|
  diagPlane = {
 | 
						|
    origin = [0.0, 0.0, 0.0],
 | 
						|
    xAxis = [
 | 
						|
      boltSpacingX / 2 * i,
 | 
						|
      boltSpacingY / 2,
 | 
						|
      0.0
 | 
						|
    ],
 | 
						|
    yAxis = [0.0, 0.0, 1.0]
 | 
						|
  }
 | 
						|
 | 
						|
  finSketch = startSketchOn(diagPlane)
 | 
						|
    |> startProfile(at = [
 | 
						|
         tubeInnerDiameter / 2 + tubeThickness,
 | 
						|
         stockThickness
 | 
						|
       ])
 | 
						|
    |> xLine(endAbsolute = sqrt((boltSpacingX / 2) ^ 2 + (boltSpacingY / 2) ^ 2) - counterdrillDiameter)
 | 
						|
    |> yLine(length = 0.15)
 | 
						|
    |> line(endAbsolute = [
 | 
						|
         profileStartX(%) + 0.15,
 | 
						|
         stockThickness + tubeHeight * .8
 | 
						|
       ])
 | 
						|
    |> xLine(length = -0.15)
 | 
						|
    |> line(endAbsolute = [profileStartX(%), profileStartY(%)])
 | 
						|
    |> close()
 | 
						|
    |> extrude(length = tubeThickness, symmetric = true)
 | 
						|
 | 
						|
  // Use a circular pattern to create an identical fin on the opposite side
 | 
						|
  otherFin = patternCircular3d(
 | 
						|
    finSketch,
 | 
						|
    instances = 2,
 | 
						|
    axis = [0, 0, 1],
 | 
						|
    center = [0, 0, 0],
 | 
						|
    arcDegrees = 360,
 | 
						|
    rotateDuplicates = true,
 | 
						|
  )
 | 
						|
  return {  }
 | 
						|
}
 | 
						|
 | 
						|
// Place a pair of support fins along each diagonal axis of the bolt pattern
 | 
						|
fin(1)
 | 
						|
fin(-1)
 |