2025-03-06 18:01:24 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								// Gridfinity Baseplate With Magnets
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// Gridfinity is a system to help you work more efficiently. This is a system invented by Zack Freedman. There are two main components the baseplate and the bins. The components are comprised of a matrix of squares. Allowing easy stacking and expansion. This baseplate version includes holes for magnet placement
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// Set units in millimeters (mm)
							 
						 
					
						
							
								
									
										
										
										
											2025-05-06 08:44:03 +12:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								@settings(defaultLengthUnit = mm, kclVersion = 1.0)
							 
						 
					
						
							
								
									
										
										
										
											2025-03-06 18:01:24 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-04-04 11:03:13 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// Define parameters
							 
						 
					
						
							
								
									
										
										
										
											2025-03-06 18:01:24 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								binLength = 42.0
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								cornerRadius = 4.0
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								firstStep = 0.7
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								secondStep = 1.8
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								thirdStep = 2.15
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								magOuterDiam = 6.5
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								magOffset = 4.8
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								magDepth = 2.4
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// Number of bins in each direction
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								countBinWidth = 2
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								countBinLength = 3
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// The total height of the baseplate is a summation of the vertical heights of the baseplate steps
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								height = firstStep + secondStep + thirdStep
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-04-04 11:03:13 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// Define a function which builds the profile of the baseplate bin
							 
						 
					
						
							
								
									
										
										
										
											2025-05-01 11:36:51 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								fn face(@plane) {
							 
						 
					
						
							
								
									
										
										
										
											2025-03-06 18:01:24 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								  faceSketch = startSketchOn(plane)
							 
						 
					
						
							
								
									
										
										
										
											2025-04-25 16:01:35 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    |> startProfile(at = [0, 0])
							 
						 
					
						
							
								
									
										
										
										
											2025-03-07 22:07:16 -06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    |> yLine(length = height)
							 
						 
					
						
							
								
									
										
										
											
												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(angle = -45, lengthY = thirdStep)
							 
						 
					
						
							
								
									
										
										
										
											2025-03-07 22:07:16 -06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    |> yLine(length = -secondStep)
							 
						 
					
						
							
								
									
										
										
											
												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(angle = -45, lengthY = firstStep)
							 
						 
					
						
							
								
									
										
										
										
											2025-03-06 18:01:24 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    |> close()
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  return faceSketch
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-04-04 11:03:13 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// Extrude a single side of the bin
							 
						 
					
						
							
								
									
										
										
										
											2025-03-26 08:53:34 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								singleSide = extrude(face(offsetPlane(YZ, offset = cornerRadius)), length = binLength - (cornerRadius * 2))
							 
						 
					
						
							
								
									
										
										
										
											2025-03-06 18:01:24 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-04-04 11:03:13 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// Create the other sides of the bin by using a circular pattern
							 
						 
					
						
							
								
									
										
										
										
											2025-03-06 18:01:24 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								sides = patternCircular3d(
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  singleSide,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  arcDegrees = 360,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  axis = [0, 0, 1],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  center = [binLength / 2, binLength / 2, 0],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  instances = 4,
							 
						 
					
						
							
								
									
										
										
										
											2025-03-26 08:53:34 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  rotateDuplicates = true,
							 
						 
					
						
							
								
									
										
										
										
											2025-03-06 18:01:24 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-04-04 11:03:13 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// Define an axis axis000
							 
						 
					
						
							
								
									
										
										
										
											2025-03-06 18:01:24 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								axis000 = {
							 
						 
					
						
							
								
									
										
										
										
											2025-04-03 22:44:52 +13:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  direction = [0.0, 1.0],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  origin = [cornerRadius, cornerRadius]
							 
						 
					
						
							
								
									
										
										
										
											2025-03-06 18:01:24 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-04-04 11:03:13 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// Create a single corner of the bin
							 
						 
					
						
							
								
									
										
										
										
											2025-03-26 08:53:34 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								singleCorner = revolve(face(offsetPlane(YZ, offset = cornerRadius)), angle = -90, axis = axis000)
							 
						 
					
						
							
								
									
										
										
										
											2025-03-06 18:01:24 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-04-04 11:03:13 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// Create the corners of the bin
							 
						 
					
						
							
								
									
										
										
										
											2025-03-06 18:01:24 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								corners = patternCircular3d(
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  singleCorner,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  arcDegrees = 360,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  axis = [0, 0, 1],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  center = [binLength / 2, binLength / 2, 0],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  instances = 4,
							 
						 
					
						
							
								
									
										
										
										
											2025-03-26 08:53:34 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  rotateDuplicates = true,
							 
						 
					
						
							
								
									
										
										
										
											2025-03-06 18:01:24 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-04-04 11:03:13 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// Create the baseplate by patterning sides
							 
						 
					
						
							
								
									
										
										
										
											2025-03-06 18:01:24 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								basePlateSides = patternLinear3d(
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								       sides,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								       axis = [1.0, 0.0, 0.0],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								       instances = countBinWidth,
							 
						 
					
						
							
								
									
										
										
										
											2025-03-26 08:53:34 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								       distance = binLength,
							 
						 
					
						
							
								
									
										
										
										
											2025-03-06 18:01:24 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								     )
							 
						 
					
						
							
								
									
										
										
										
											2025-03-26 08:53:34 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  |> patternLinear3d(axis = [0.0, 1.0, 0.0], instances = countBinLength, distance = binLength)
							 
						 
					
						
							
								
									
										
										
										
											2025-03-06 18:01:24 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-04-04 11:03:13 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// Create the corners of the baseplate by patterning the corners
							 
						 
					
						
							
								
									
										
										
										
											2025-03-06 18:01:24 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								basePlateCorners = patternLinear3d(
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								       corners,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								       axis = [1.0, 0.0, 0.0],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								       instances = countBinWidth,
							 
						 
					
						
							
								
									
										
										
										
											2025-03-26 08:53:34 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								       distance = binLength,
							 
						 
					
						
							
								
									
										
										
										
											2025-03-06 18:01:24 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								     )
							 
						 
					
						
							
								
									
										
										
										
											2025-03-26 08:53:34 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  |> patternLinear3d(axis = [0.0, 1.0, 0.0], instances = countBinLength, distance = binLength)
							 
						 
					
						
							
								
									
										
										
										
											2025-03-06 18:01:24 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-04-04 11:03:13 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// Create the center cutout for the magnet profile
							 
						 
					
						
							
								
									
										
										
										
											2025-05-01 11:36:51 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								fn magnetCenterCutout(@plane) {
							 
						 
					
						
							
								
									
										
										
										
											2025-03-06 18:01:24 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								  magnetSketch = startSketchOn(plane)
							 
						 
					
						
							
								
									
										
										
										
											2025-04-25 16:01:35 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    |> startProfile(at = [
							 
						 
					
						
							
								
									
										
										
										
											2025-03-06 18:01:24 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								         firstStep + thirdStep,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         2 * magOuterDiam
							 
						 
					
						
							
								
									
										
										
										
											2025-04-25 16:01:35 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								       ])
							 
						 
					
						
							
								
									
										
										
										
											2025-03-07 22:07:16 -06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    |> xLine(length = 2 * magOuterDiam - (firstStep + thirdStep) - (magOuterDiam / 2))
							 
						 
					
						
							
								
									
										
										
										
											2025-04-18 17:40:44 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    |> arc(angleStart = 90.0, angleEnd = 0.0, radius = magOuterDiam / 2)
							 
						 
					
						
							
								
									
										
										
										
											2025-03-07 22:07:16 -06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    |> yLine(length = -(2 * magOuterDiam - (firstStep + thirdStep) - (magOuterDiam / 2)))
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    |> xLine(length = binLength - (4 * magOuterDiam))
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    |> yLine(length = 2 * magOuterDiam - (firstStep + thirdStep) - (magOuterDiam / 2))
							 
						 
					
						
							
								
									
										
										
										
											2025-04-18 17:40:44 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    |> arc(angleStart = 180.0, angleEnd = 90.0, radius = magOuterDiam / 2)
							 
						 
					
						
							
								
									
										
										
										
											2025-03-07 22:07:16 -06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    |> xLine(length = 2 * magOuterDiam - (firstStep + thirdStep) - (magOuterDiam / 2))
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    |> yLine(length = binLength - (4 * magOuterDiam))
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    |> xLine(length = -(2 * magOuterDiam - (firstStep + thirdStep) - (magOuterDiam / 2)))
							 
						 
					
						
							
								
									
										
										
										
											2025-04-18 17:40:44 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    |> arc(angleStart = 270.0, angleEnd = 180.0, radius = magOuterDiam / 2)
							 
						 
					
						
							
								
									
										
										
										
											2025-03-07 22:07:16 -06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    |> yLine(length = 2 * magOuterDiam - (firstStep + thirdStep) - (magOuterDiam / 2))
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    |> xLine(length = -(binLength - (4 * magOuterDiam)), tag = $line012)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    |> yLine(length = -(2 * magOuterDiam - (firstStep + thirdStep) - (magOuterDiam / 2)))
							 
						 
					
						
							
								
									
										
										
										
											2025-04-18 17:40:44 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    |> arc(angleStart = 360.0, angleEnd = 270.0, radius = magOuterDiam / 2)
							 
						 
					
						
							
								
									
										
										
										
											2025-03-07 22:07:16 -06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    |> xLine(length = -(2 * magOuterDiam - (firstStep + thirdStep) - (magOuterDiam / 2)))
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    |> yLine(length = -(binLength - (4 * magOuterDiam)))
							 
						 
					
						
							
								
									
										
										
										
											2025-03-06 18:01:24 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    |> close()
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  return magnetSketch
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-04-04 11:03:13 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// Create the outside profile of the magnets
							 
						 
					
						
							
								
									
										
										
										
											2025-05-01 11:36:51 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								fn magnetBase(@plane) {
							 
						 
					
						
							
								
									
										
										
										
											2025-03-06 18:01:24 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								  magnetBaseSketch = startSketchOn(plane)
							 
						 
					
						
							
								
									
										
										
										
											2025-04-25 16:01:35 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    |> startProfile(at = [0, 0])
							 
						 
					
						
							
								
									
										
										
										
											2025-03-07 22:07:16 -06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    |> xLine(length = binLength, tag = $line001)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    |> yLine(length = binLength, tag = $line002)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    |> xLine(endAbsolute = profileStartX(%), tag = $line003)
							 
						 
					
						
							
								
									
										
										
										
											2025-03-06 18:01:24 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    |> close(tag = $line004)
							 
						 
					
						
							
								
									
										
										
										
											2025-04-26 15:31:51 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    |> subtract2d(tool = magnetCenterCutout(plane))
							 
						 
					
						
							
								
									
										
										
										
											2025-03-06 18:01:24 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								  return magnetBaseSketch
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-04-04 11:03:13 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// Create sketch profile sketch000Profile002
							 
						 
					
						
							
								
									
										
										
										
											2025-03-26 08:53:34 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								magnetsSketch = startSketchOn(XY)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  |> circle(center = [cornerRadius * 2, cornerRadius * 2], radius = magOuterDiam / 2)
							 
						 
					
						
							
								
									
										
										
										
											2025-03-06 18:01:24 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								  |> patternCircular2d(
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								       center = [binLength / 2, binLength / 2],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								       instances = 4,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								       arcDegrees = 360,
							 
						 
					
						
							
								
									
										
										
										
											2025-03-26 08:53:34 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								       rotateDuplicates = true,
							 
						 
					
						
							
								
									
										
										
										
											2025-03-06 18:01:24 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								     )
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-04-04 11:03:13 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// Create a profile with holes for the magnets
							 
						 
					
						
							
								
									
										
										
										
											2025-03-26 08:53:34 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								magnetProfile = magnetBase(XY)
							 
						 
					
						
							
								
									
										
										
										
											2025-04-26 15:31:51 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  |> subtract2d(tool = magnetsSketch)
							 
						 
					
						
							
								
									
										
										
										
											2025-03-06 18:01:24 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-04-04 11:03:13 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// Create an extrusion of the magnet cutout with holes
							 
						 
					
						
							
								
									
										
										
										
											2025-03-06 18:01:24 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								magnetHolesExtrude = extrude(magnetProfile, length = -magDepth)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-04-04 11:03:13 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// Add a fillet to the extrusion
							 
						 
					
						
							
								
									
										
										
										
											2025-03-06 18:01:24 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								magnetHolesExtrudeFillets = fillet(
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  magnetHolesExtrude,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  radius = cornerRadius,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  tags = [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    getNextAdjacentEdge(magnetHolesExtrude.sketch.tags.line001),
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    getPreviousAdjacentEdge(magnetHolesExtrude.sketch.tags.line001),
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    getNextAdjacentEdge(magnetHolesExtrude.sketch.tags.line003),
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    getPreviousAdjacentEdge(magnetHolesExtrude.sketch.tags.line003)
							 
						 
					
						
							
								
									
										
										
										
											2025-03-26 08:53:34 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  ],
							 
						 
					
						
							
								
									
										
										
										
											2025-03-06 18:01:24 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-04-04 11:03:13 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// Create a profile without the holes for the magnets
							 
						 
					
						
							
								
									
										
										
										
											2025-03-26 08:53:34 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								magnetProfileNoMagnets = magnetBase(offsetPlane(XY, offset = -magDepth))
							 
						 
					
						
							
								
									
										
										
										
											2025-03-06 18:01:24 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-04-04 11:03:13 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// Create an extrusion of the magnet cutout without holes
							 
						 
					
						
							
								
									
										
										
										
											2025-03-06 18:01:24 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								magnetCutoutExtrude = extrude(magnetProfileNoMagnets, length = -magDepth)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-04-04 11:03:13 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// Add a fillet to the extrusion
							 
						 
					
						
							
								
									
										
										
										
											2025-03-06 18:01:24 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								magnetCutoutExtrudeFillets = fillet(
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  magnetCutoutExtrude,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  radius = cornerRadius,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  tags = [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    getNextAdjacentEdge(magnetCutoutExtrude.sketch.tags.line001),
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    getPreviousAdjacentEdge(magnetCutoutExtrude.sketch.tags.line001),
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    getNextAdjacentEdge(magnetCutoutExtrude.sketch.tags.line003),
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    getPreviousAdjacentEdge(magnetCutoutExtrude.sketch.tags.line003)
							 
						 
					
						
							
								
									
										
										
										
											2025-03-26 08:53:34 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  ],
							 
						 
					
						
							
								
									
										
										
										
											2025-03-06 18:01:24 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-04-04 11:03:13 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// Pattern the magnet cutouts with holes
							 
						 
					
						
							
								
									
										
										
										
											2025-03-06 18:01:24 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								patternLinear3d(
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								       magnetHolesExtrudeFillets,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								       axis = [1.0, 0.0, 0.0],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								       instances = countBinWidth,
							 
						 
					
						
							
								
									
										
										
										
											2025-03-26 08:53:34 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								       distance = binLength,
							 
						 
					
						
							
								
									
										
										
										
											2025-03-06 18:01:24 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								     )
							 
						 
					
						
							
								
									
										
										
										
											2025-03-26 08:53:34 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  |> patternLinear3d(axis = [0.0, 1.0, 0.0], instances = countBinLength, distance = binLength)
							 
						 
					
						
							
								
									
										
										
										
											2025-03-06 18:01:24 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-04-04 11:03:13 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// Pattern the magnet cutouts without holes
							 
						 
					
						
							
								
									
										
										
										
											2025-03-06 18:01:24 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								patternLinear3d(
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								       magnetCutoutExtrudeFillets,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								       axis = [1.0, 0.0, 0.0],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								       instances = countBinWidth,
							 
						 
					
						
							
								
									
										
										
										
											2025-03-26 08:53:34 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								       distance = binLength,
							 
						 
					
						
							
								
									
										
										
										
											2025-03-06 18:01:24 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								     )
							 
						 
					
						
							
								
									
										
										
										
											2025-03-26 08:53:34 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  |> patternLinear3d(axis = [0.0, 1.0, 0.0], instances = countBinLength, distance = binLength)