| 
									
										
										
										
											2025-03-19 12:28:56 -07:00
										 |  |  | export boltDiameter = 0.625 | 
					
						
							|  |  |  | export boltLength = 2.500 | 
					
						
							|  |  |  | export boltHeadLength = boltDiameter | 
					
						
							|  |  |  | export boltHeadDiameter = 0.938 | 
					
						
							|  |  |  | export boltHexDrive = 1 / 2 | 
					
						
							| 
									
										
										
										
											2025-04-30 11:07:05 -04:00
										 |  |  | export boltHexFlatLength = boltHexDrive / (2 * cos(30deg)) | 
					
						
							| 
									
										
										
										
											2025-03-19 12:28:56 -07:00
										 |  |  | export boltThreadLength = 1.75 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export fn bolt() { | 
					
						
							|  |  |  |   // Create the head of the cap screw | 
					
						
							| 
									
										
										
										
											2025-04-14 05:58:19 -04:00
										 |  |  |   boltHead = startSketchOn(XZ) | 
					
						
							| 
									
										
										
										
											2025-03-19 12:28:56 -07:00
										 |  |  |     |> circle(center = [0, 0], radius = boltHeadDiameter / 2, tag = $topEdge) | 
					
						
							|  |  |  |     |> extrude(length = -boltHeadLength) | 
					
						
							|  |  |  |     |> fillet(radius = 0.020, tags = [topEdge, getOppositeEdge(topEdge)]) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   // Define the sketch of the hex pattern on the screw head | 
					
						
							| 
									
										
										
										
											2025-04-14 05:58:19 -04:00
										 |  |  |   hexPatternSketch = startSketchOn(boltHead, face = 'start') | 
					
						
							| 
									
										
										
										
											2025-04-25 16:01:35 -05:00
										 |  |  |     |> startProfile(at = [boltHexDrive / 2, boltHexFlatLength / 2]) | 
					
						
							| 
									
										
										
											
												KCL: Angled line should use keyword args (#5803)
We continue migrating KCL stdlib functions to use keyword arguments. Next up is the `angledLine` family of functions (except `angledLineThatIntersects, which will be a quick follow-up).
Before vs. after:
`angledLine({angle = 90, length = 3}, %, $edge)`
  => `angledLine(angle = 90, length = 3, tag = $edge)`
`angledLineOfXLength({angle = 90, length = 3}, %, $edge)`
  => `angledLine(angle = 90, lengthX = 3, tag = $edge)`
`angledLineOfYLength({angle = 90, length = 3}, %, $edge)`
  => `angledLine(angle = 90, lengthY = 3, tag = $edge)`
`angledLineToX({angle = 90, length = 3}, %, $edge)`
  => `angledLine(angle = 90, endAbsoluteX = 3, tag = $edge)`
`angledLineToY({angle = 90, length = 3}, %, $edge)`
  => `angledLine(angle = 90, endAbsoluteY = 3, tag = $edge)`
											
										 
											2025-04-09 14:55:15 -05:00
										 |  |  |     |> angledLine( | 
					
						
							| 
									
										
										
										
											2025-03-19 12:28:56 -07:00
										 |  |  |          angle = 270, | 
					
						
							| 
									
										
										
											
												KCL: Angled line should use keyword args (#5803)
We continue migrating KCL stdlib functions to use keyword arguments. Next up is the `angledLine` family of functions (except `angledLineThatIntersects, which will be a quick follow-up).
Before vs. after:
`angledLine({angle = 90, length = 3}, %, $edge)`
  => `angledLine(angle = 90, length = 3, tag = $edge)`
`angledLineOfXLength({angle = 90, length = 3}, %, $edge)`
  => `angledLine(angle = 90, lengthX = 3, tag = $edge)`
`angledLineOfYLength({angle = 90, length = 3}, %, $edge)`
  => `angledLine(angle = 90, lengthY = 3, tag = $edge)`
`angledLineToX({angle = 90, length = 3}, %, $edge)`
  => `angledLine(angle = 90, endAbsoluteX = 3, tag = $edge)`
`angledLineToY({angle = 90, length = 3}, %, $edge)`
  => `angledLine(angle = 90, endAbsoluteY = 3, tag = $edge)`
											
										 
											2025-04-09 14:55:15 -05:00
										 |  |  |          length = boltHexFlatLength, | 
					
						
							|  |  |  |        ) | 
					
						
							|  |  |  |     |> angledLine( | 
					
						
							| 
									
										
										
										
											2025-03-19 12:28:56 -07:00
										 |  |  |          angle = 210, | 
					
						
							| 
									
										
										
											
												KCL: Angled line should use keyword args (#5803)
We continue migrating KCL stdlib functions to use keyword arguments. Next up is the `angledLine` family of functions (except `angledLineThatIntersects, which will be a quick follow-up).
Before vs. after:
`angledLine({angle = 90, length = 3}, %, $edge)`
  => `angledLine(angle = 90, length = 3, tag = $edge)`
`angledLineOfXLength({angle = 90, length = 3}, %, $edge)`
  => `angledLine(angle = 90, lengthX = 3, tag = $edge)`
`angledLineOfYLength({angle = 90, length = 3}, %, $edge)`
  => `angledLine(angle = 90, lengthY = 3, tag = $edge)`
`angledLineToX({angle = 90, length = 3}, %, $edge)`
  => `angledLine(angle = 90, endAbsoluteX = 3, tag = $edge)`
`angledLineToY({angle = 90, length = 3}, %, $edge)`
  => `angledLine(angle = 90, endAbsoluteY = 3, tag = $edge)`
											
										 
											2025-04-09 14:55:15 -05:00
										 |  |  |          length = boltHexFlatLength, | 
					
						
							|  |  |  |        ) | 
					
						
							|  |  |  |     |> angledLine( | 
					
						
							| 
									
										
										
										
											2025-03-19 12:28:56 -07:00
										 |  |  |          angle = 150, | 
					
						
							| 
									
										
										
											
												KCL: Angled line should use keyword args (#5803)
We continue migrating KCL stdlib functions to use keyword arguments. Next up is the `angledLine` family of functions (except `angledLineThatIntersects, which will be a quick follow-up).
Before vs. after:
`angledLine({angle = 90, length = 3}, %, $edge)`
  => `angledLine(angle = 90, length = 3, tag = $edge)`
`angledLineOfXLength({angle = 90, length = 3}, %, $edge)`
  => `angledLine(angle = 90, lengthX = 3, tag = $edge)`
`angledLineOfYLength({angle = 90, length = 3}, %, $edge)`
  => `angledLine(angle = 90, lengthY = 3, tag = $edge)`
`angledLineToX({angle = 90, length = 3}, %, $edge)`
  => `angledLine(angle = 90, endAbsoluteX = 3, tag = $edge)`
`angledLineToY({angle = 90, length = 3}, %, $edge)`
  => `angledLine(angle = 90, endAbsoluteY = 3, tag = $edge)`
											
										 
											2025-04-09 14:55:15 -05:00
										 |  |  |          length = boltHexFlatLength, | 
					
						
							|  |  |  |        ) | 
					
						
							|  |  |  |     |> angledLine( | 
					
						
							| 
									
										
										
										
											2025-03-19 12:28:56 -07:00
										 |  |  |          angle = 90, | 
					
						
							| 
									
										
										
											
												KCL: Angled line should use keyword args (#5803)
We continue migrating KCL stdlib functions to use keyword arguments. Next up is the `angledLine` family of functions (except `angledLineThatIntersects, which will be a quick follow-up).
Before vs. after:
`angledLine({angle = 90, length = 3}, %, $edge)`
  => `angledLine(angle = 90, length = 3, tag = $edge)`
`angledLineOfXLength({angle = 90, length = 3}, %, $edge)`
  => `angledLine(angle = 90, lengthX = 3, tag = $edge)`
`angledLineOfYLength({angle = 90, length = 3}, %, $edge)`
  => `angledLine(angle = 90, lengthY = 3, tag = $edge)`
`angledLineToX({angle = 90, length = 3}, %, $edge)`
  => `angledLine(angle = 90, endAbsoluteX = 3, tag = $edge)`
`angledLineToY({angle = 90, length = 3}, %, $edge)`
  => `angledLine(angle = 90, endAbsoluteY = 3, tag = $edge)`
											
										 
											2025-04-09 14:55:15 -05:00
										 |  |  |          length = boltHexFlatLength, | 
					
						
							|  |  |  |        ) | 
					
						
							|  |  |  |     |> angledLine( | 
					
						
							| 
									
										
										
										
											2025-03-19 12:28:56 -07:00
										 |  |  |          angle = 30, | 
					
						
							| 
									
										
										
											
												KCL: Angled line should use keyword args (#5803)
We continue migrating KCL stdlib functions to use keyword arguments. Next up is the `angledLine` family of functions (except `angledLineThatIntersects, which will be a quick follow-up).
Before vs. after:
`angledLine({angle = 90, length = 3}, %, $edge)`
  => `angledLine(angle = 90, length = 3, tag = $edge)`
`angledLineOfXLength({angle = 90, length = 3}, %, $edge)`
  => `angledLine(angle = 90, lengthX = 3, tag = $edge)`
`angledLineOfYLength({angle = 90, length = 3}, %, $edge)`
  => `angledLine(angle = 90, lengthY = 3, tag = $edge)`
`angledLineToX({angle = 90, length = 3}, %, $edge)`
  => `angledLine(angle = 90, endAbsoluteX = 3, tag = $edge)`
`angledLineToY({angle = 90, length = 3}, %, $edge)`
  => `angledLine(angle = 90, endAbsoluteY = 3, tag = $edge)`
											
										 
											2025-04-09 14:55:15 -05:00
										 |  |  |          length = boltHexFlatLength, | 
					
						
							|  |  |  |        ) | 
					
						
							| 
									
										
										
										
											2025-03-19 12:28:56 -07:00
										 |  |  |     |> close() | 
					
						
							|  |  |  |     |> extrude(length = -boltHeadLength * 0.75) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-04-14 05:58:19 -04:00
										 |  |  |   boltBody = startSketchOn(boltHead, face = 'end') | 
					
						
							| 
									
										
										
										
											2025-03-19 12:28:56 -07:00
										 |  |  |     |> circle(center = [0, 0], radius = boltDiameter / 2, tag = $filletEdge) | 
					
						
							|  |  |  |     |> extrude(length = boltLength) | 
					
						
							|  |  |  |     |> fillet(radius = .020, tags = [getOppositeEdge(filletEdge)]) | 
					
						
							|  |  |  |     |> appearance(color = "#4dd043", metalness = 90, roughness = 90) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   return boltBody | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | bolt() | 
					
						
							| 
									
										
										
										
											2025-03-28 14:14:29 -07:00
										 |  |  |   |> scale(x = 3.14, y = 3.14, z = 3.14) | 
					
						
							| 
									
										
										
										
											2025-03-19 12:28:56 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | // https://www.mcmaster.com/91251a404/ |