* update all kcl-samples * 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> * updates Signed-off-by: Jess Frazelle <github@jessfraz.com> * Update kcl-samples simulation test output --------- 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>
		
			
				
	
	
		
			247 lines
		
	
	
		
			7.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			247 lines
		
	
	
		
			7.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
// 80/20 Rail
 | 
						|
// An 80/20 extruded aluminum linear rail. T-slot profile adjustable by profile height, rail length, and origin position
 | 
						|
 | 
						|
// Set units
 | 
						|
@settings(defaultLengthUnit = in)
 | 
						|
 | 
						|
// Create a function to make the 80-20 rail
 | 
						|
fn rail8020(originStart, railHeight, railLength) {
 | 
						|
  // Sketch side 1 of profile
 | 
						|
  sketch001 = startSketchOn(-XZ)
 | 
						|
    |> startProfileAt([
 | 
						|
         originStart[0],
 | 
						|
         0.1 * railHeight + originStart[1]
 | 
						|
       ], %)
 | 
						|
    |> arc({
 | 
						|
         angleStart = 180,
 | 
						|
         angleEnd = 270,
 | 
						|
         radius = 0.1 * railHeight
 | 
						|
       }, %)
 | 
						|
    |> arc({
 | 
						|
         angleStart = 180,
 | 
						|
         angleEnd = 0,
 | 
						|
         radius = 0.072 / 4 * railHeight
 | 
						|
       }, %)
 | 
						|
    |> xLine(length = 0.1 * railHeight)
 | 
						|
    |> arc({
 | 
						|
         angleStart = 180,
 | 
						|
         angleEnd = 0,
 | 
						|
         radius = 0.072 / 4 * railHeight
 | 
						|
       }, %)
 | 
						|
    |> xLine(length = 0.06 * railHeight, tag = $edge1)
 | 
						|
    |> yLine(length = 0.087 * railHeight, tag = $edge2)
 | 
						|
    |> xLine(length = -0.183 * railHeight, tag = $edge3)
 | 
						|
    |> angledLineToY({
 | 
						|
         angle = 45,
 | 
						|
         to = (1 - 0.356) / 2 * railHeight + originStart[1]
 | 
						|
       }, %, $edge4)
 | 
						|
    |> xLine(length = 0.232 * railHeight, tag = $edge5)
 | 
						|
    |> angledLineToY({
 | 
						|
         angle = -45,
 | 
						|
         to = 0.087 * railHeight + originStart[1]
 | 
						|
       }, %, $edge6)
 | 
						|
    |> xLine(length = -0.183 * railHeight, tag = $edge7)
 | 
						|
    |> yLine(length = -0.087 * railHeight, tag = $edge8)
 | 
						|
    |> xLine(length = 0.06 * railHeight)
 | 
						|
    |> arc({
 | 
						|
         angleStart = 180,
 | 
						|
         angleEnd = 0,
 | 
						|
         radius = 0.072 / 4 * railHeight
 | 
						|
       }, %)
 | 
						|
    |> xLine(length = 0.1 * railHeight)
 | 
						|
    |> arc({
 | 
						|
         angleStart = 180,
 | 
						|
         angleEnd = 0,
 | 
						|
         radius = 0.072 / 4 * railHeight
 | 
						|
       }, %)
 | 
						|
    |> arc({
 | 
						|
         angleStart = -90,
 | 
						|
         angleEnd = 0,
 | 
						|
         radius = 0.1 * railHeight
 | 
						|
       }, %)
 | 
						|
 | 
						|
    // Sketch side 2 of profile
 | 
						|
    |> arc({
 | 
						|
         angleStart = 270,
 | 
						|
         angleEnd = 90,
 | 
						|
         radius = 0.072 / 4 * railHeight
 | 
						|
       }, %)
 | 
						|
    |> yLine(length = 0.1 * railHeight)
 | 
						|
    |> arc({
 | 
						|
         angleStart = 270,
 | 
						|
         angleEnd = 90,
 | 
						|
         radius = 0.072 / 4 * railHeight
 | 
						|
       }, %)
 | 
						|
    |> yLine(length = 0.06 * railHeight, tag = $edge9)
 | 
						|
    |> xLine(length = -0.087 * railHeight, tag = $edge10)
 | 
						|
    |> yLine(length = -0.183 * railHeight, tag = $edge11) // edge11
 | 
						|
    |> angledLineToX({
 | 
						|
         angle = 135,
 | 
						|
         to = ((1 - 0.356) / 2 + 0.356) * railHeight + originStart[0]
 | 
						|
       }, %, $edge12) // edge12
 | 
						|
    |> yLine(length = 0.232 * railHeight, tag = $edge13) // 13
 | 
						|
    |> angledLineToX({
 | 
						|
         angle = 45,
 | 
						|
         to = (1 - 0.087) * railHeight + originStart[0]
 | 
						|
       }, %, $edge14) // 14
 | 
						|
    |> yLine(length = -0.183 * railHeight, tag = $edge15) // 15
 | 
						|
    |> xLine(length = 0.087 * railHeight, tag = $edge16)
 | 
						|
    |> yLine(length = 0.06 * railHeight)
 | 
						|
    |> arc({
 | 
						|
         angleStart = 270,
 | 
						|
         angleEnd = 90,
 | 
						|
         radius = 0.072 / 4 * railHeight
 | 
						|
       }, %)
 | 
						|
    |> yLine(length = 0.1 * railHeight)
 | 
						|
    |> arc({
 | 
						|
         angleStart = 270,
 | 
						|
         angleEnd = 90,
 | 
						|
         radius = 0.072 / 4 * railHeight
 | 
						|
       }, %)
 | 
						|
 | 
						|
    // Sketch side 3 of profile
 | 
						|
    |> arc({
 | 
						|
         angleStart = 0,
 | 
						|
         angleEnd = 90,
 | 
						|
         radius = 0.1 * railHeight
 | 
						|
       }, %)
 | 
						|
    |> arc({
 | 
						|
         angleStart = 0,
 | 
						|
         angleEnd = -180,
 | 
						|
         radius = 0.072 / 4 * railHeight
 | 
						|
       }, %)
 | 
						|
    |> xLine(length = -0.1 * railHeight)
 | 
						|
    |> arc({
 | 
						|
         angleStart = 0,
 | 
						|
         angleEnd = -180,
 | 
						|
         radius = 0.072 / 4 * railHeight
 | 
						|
       }, %)
 | 
						|
    |> xLine(length = -0.06 * railHeight, tag = $edge17)
 | 
						|
    |> yLine(length = -0.087 * railHeight, tag = $edge18)
 | 
						|
    |> xLine(length = 0.183 * railHeight, tag = $edge19)
 | 
						|
    |> angledLineToY({
 | 
						|
         angle = 45,
 | 
						|
         to = ((1 - 0.356) / 2 + 0.356) * railHeight + originStart[1]
 | 
						|
       }, %, $edge20)
 | 
						|
    |> xLine(length = -0.232 * railHeight, tag = $edge21)
 | 
						|
    |> angledLineToY({
 | 
						|
         angle = 135,
 | 
						|
         to = (1 - 0.087) * railHeight + originStart[1]
 | 
						|
       }, %, $edge22)
 | 
						|
    |> xLine(length = 0.183 * railHeight, tag = $edge23)
 | 
						|
    |> yLine(length = 0.087 * railHeight, tag = $edge24)
 | 
						|
    |> xLine(length = -0.06 * railHeight)
 | 
						|
    |> arc({
 | 
						|
         angleStart = 0,
 | 
						|
         angleEnd = -180,
 | 
						|
         radius = 0.072 / 4 * railHeight
 | 
						|
       }, %)
 | 
						|
    |> xLine(length = -0.1 * railHeight)
 | 
						|
    |> arc({
 | 
						|
         angleStart = 0,
 | 
						|
         angleEnd = -180,
 | 
						|
         radius = 0.072 / 4 * railHeight
 | 
						|
       }, %)
 | 
						|
    |> arc({
 | 
						|
         angleStart = 90,
 | 
						|
         angleEnd = 180,
 | 
						|
         radius = 0.1 * railHeight
 | 
						|
       }, %)
 | 
						|
 | 
						|
    // Sketch side 4 of profile
 | 
						|
    |> arc({
 | 
						|
         angleStart = 90,
 | 
						|
         angleEnd = -90,
 | 
						|
         radius = 0.072 / 4 * railHeight
 | 
						|
       }, %)
 | 
						|
    |> yLine(length = -0.1 * railHeight)
 | 
						|
    |> arc({
 | 
						|
         angleStart = 90,
 | 
						|
         angleEnd = -90,
 | 
						|
         radius = 0.072 / 4 * railHeight
 | 
						|
       }, %)
 | 
						|
    |> yLine(length = -0.06 * railHeight, tag = $edge25)
 | 
						|
    |> xLine(length = 0.087 * railHeight, tag = $edge26)
 | 
						|
    |> yLine(length = 0.183 * railHeight, tag = $edge27)
 | 
						|
    |> angledLineToX({
 | 
						|
         angle = 135,
 | 
						|
         to = (1 - 0.356) / 2 * railHeight + originStart[0]
 | 
						|
       }, %, $edge28)
 | 
						|
    |> yLine(length = -0.232 * railHeight, tag = $edge29)
 | 
						|
    |> angledLineToX({
 | 
						|
         angle = 45,
 | 
						|
         to = 0.087 * railHeight + originStart[0]
 | 
						|
       }, %, $edge30)
 | 
						|
    |> yLine(length = 0.183 * railHeight, tag = $edge31)
 | 
						|
    |> xLine(length = -0.087 * railHeight, tag = $edge32)
 | 
						|
    |> yLine(length = -0.06 * railHeight)
 | 
						|
    |> arc({
 | 
						|
         angleStart = 90,
 | 
						|
         angleEnd = -90,
 | 
						|
         radius = 0.072 / 4 * railHeight
 | 
						|
       }, %)
 | 
						|
    |> yLine(length = -0.1 * railHeight)
 | 
						|
    |> arc({
 | 
						|
         angleStart = 90,
 | 
						|
         angleEnd = -90,
 | 
						|
         radius = 0.072 / 4 * railHeight
 | 
						|
       }, %)
 | 
						|
    |> close()
 | 
						|
 | 
						|
    // Sketch center hole of profile
 | 
						|
    |> hole(circle(
 | 
						|
         center = [
 | 
						|
           .5 * railHeight + originStart[0],
 | 
						|
           .5 * railHeight + originStart[1]
 | 
						|
         ],
 | 
						|
         radius = .205 * railHeight / 2,
 | 
						|
       ), %)
 | 
						|
    |> extrude(length = railLength)
 | 
						|
    |> fillet(
 | 
						|
         radius = 0.06,
 | 
						|
         tags = [
 | 
						|
           getNextAdjacentEdge(edge3),
 | 
						|
           getNextAdjacentEdge(edge4),
 | 
						|
           getNextAdjacentEdge(edge5),
 | 
						|
           getNextAdjacentEdge(edge6),
 | 
						|
           getNextAdjacentEdge(edge11),
 | 
						|
           getNextAdjacentEdge(edge12),
 | 
						|
           getNextAdjacentEdge(edge13),
 | 
						|
           getNextAdjacentEdge(edge14),
 | 
						|
           getNextAdjacentEdge(edge19),
 | 
						|
           getNextAdjacentEdge(edge20),
 | 
						|
           getNextAdjacentEdge(edge21),
 | 
						|
           getNextAdjacentEdge(edge22),
 | 
						|
           getNextAdjacentEdge(edge27),
 | 
						|
           getNextAdjacentEdge(edge28),
 | 
						|
           getNextAdjacentEdge(edge29),
 | 
						|
           getNextAdjacentEdge(edge30)
 | 
						|
         ],
 | 
						|
       )
 | 
						|
    |> fillet(
 | 
						|
         radius = 0.03,
 | 
						|
         tags = [
 | 
						|
           getNextAdjacentEdge(edge1),
 | 
						|
           getNextAdjacentEdge(edge2),
 | 
						|
           getNextAdjacentEdge(edge7),
 | 
						|
           getNextAdjacentEdge(edge8),
 | 
						|
           getNextAdjacentEdge(edge9),
 | 
						|
           getNextAdjacentEdge(edge10),
 | 
						|
           getNextAdjacentEdge(edge15),
 | 
						|
           getNextAdjacentEdge(edge16),
 | 
						|
           getNextAdjacentEdge(edge17),
 | 
						|
           getNextAdjacentEdge(edge18),
 | 
						|
           getNextAdjacentEdge(edge23),
 | 
						|
           getNextAdjacentEdge(edge24),
 | 
						|
           getNextAdjacentEdge(edge25),
 | 
						|
           getNextAdjacentEdge(edge26),
 | 
						|
           getNextAdjacentEdge(edge31),
 | 
						|
           getNextAdjacentEdge(edge32)
 | 
						|
         ],
 | 
						|
       )
 | 
						|
  return sketch001
 | 
						|
}
 | 
						|
 | 
						|
// Generate one adjustable rail of 80/20
 | 
						|
rail8020([0, 0], 1.5, 48)
 |