117 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			117 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								// Surgical Drill Guide
							 | 
						||
| 
								 | 
							
								// A surgical drill guide is a tool used in medical procedures to assist in drilling holes to a desired depth, ensuring proper orientation and minimizing intraosseal pressure
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Set units
							 | 
						||
| 
								 | 
							
								@settings(defaultLengthUnit = mm)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Define parameters
							 | 
						||
| 
								 | 
							
								handleLength = 150
							 | 
						||
| 
								 | 
							
								handleWidth = 30
							 | 
						||
| 
								 | 
							
								stockThickness = 6
							 | 
						||
| 
								 | 
							
								bendRadius = stockThickness * 1.25
							 | 
						||
| 
								 | 
							
								bitSize01 = 2
							 | 
						||
| 
								 | 
							
								bitSize02 = 3.2
							 | 
						||
| 
								 | 
							
								bitLength = 45
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Model a small sheet metal bracket to represent the handle of the drill guide
							 | 
						||
| 
								 | 
							
								bracket = startSketchOn(YZ)
							 | 
						||
| 
								 | 
							
								  |> startProfile(at = [0, 0])
							 | 
						||
| 
								 | 
							
								  |> xLine(length = handleLength, tag = $seg02)
							 | 
						||
| 
								 | 
							
								  |> yLine(length = stockThickness, tag = $seg06)
							 | 
						||
| 
								 | 
							
								  |> xLine(length = -segLen(seg02), tag = $seg04)
							 | 
						||
| 
								 | 
							
								  |> tangentialArc(angle = -60, radius = bendRadius, tag = $seg01)
							 | 
						||
| 
								 | 
							
								  |> angledLine(angle = tangentToEnd(seg01), length = handleLength / 3, tag = $seg03)
							 | 
						||
| 
								 | 
							
								  |> angledLine(angle = tangentToEnd(seg01) + 90, length = stockThickness, tag = $seg05)
							 | 
						||
| 
								 | 
							
								  |> angledLine(angle = segAng(seg03) + 180, length = segLen(seg03), tag = $seg07)
							 | 
						||
| 
								 | 
							
								  |> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)])
							 | 
						||
| 
								 | 
							
								  |> close()
							 | 
						||
| 
								 | 
							
								  |> extrude(
							 | 
						||
| 
								 | 
							
								       length = handleWidth,
							 | 
						||
| 
								 | 
							
								       symmetric = true,
							 | 
						||
| 
								 | 
							
								       tagEnd = $capEnd001,
							 | 
						||
| 
								 | 
							
								       tagStart = $capStart001,
							 | 
						||
| 
								 | 
							
								     )
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Create a cut in the bracket to mount the first bit
							 | 
						||
| 
								 | 
							
								bitCut01 = startSketchOn(XZ)
							 | 
						||
| 
								 | 
							
								  |> circle(center = [0, segEndY(seg03) + .1], radius = handleWidth / 1.9)
							 | 
						||
| 
								 | 
							
								  |> extrude(length = 100)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Create a cut in the bracket to mount the second bit
							 | 
						||
| 
								 | 
							
								bitCut02 = startSketchOn(offsetPlane(XY, offset = 35))
							 | 
						||
| 
								 | 
							
								  |> circle(center = [0, segEndX(seg02)], radius = handleWidth / 1.9)
							 | 
						||
| 
								 | 
							
								  |> extrude(length = -100)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Cut the bracket
							 | 
						||
| 
								 | 
							
								handle = subtract([bracket], tools = union([bitCut01, bitCut02]))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Model the support for the first drill bit
							 | 
						||
| 
								 | 
							
								bitSupport01 = startSketchOn(offsetPlane(XZ, offset = -segEndX(seg03) - 3))
							 | 
						||
| 
								 | 
							
								  |> circle(center = [0, segEndY(seg03) + .1], radius = handleWidth / 1.9)
							 | 
						||
| 
								 | 
							
								  |> extrude(length = -15, symmetric = true)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Model the stem for the first drill bit
							 | 
						||
| 
								 | 
							
								stem01 = startSketchOn(bitSupport01, face = END)
							 | 
						||
| 
								 | 
							
								  |> circle(center = [0, segEndY(seg03) + .1], radius = bitSize01, tag = $seg10)
							 | 
						||
| 
								 | 
							
								  |> extrude(length = bitLength, tagEnd = $capEnd004)
							 | 
						||
| 
								 | 
							
								  |> chamfer(
							 | 
						||
| 
								 | 
							
								       length = bitSize01 / 3,
							 | 
						||
| 
								 | 
							
								       tags = [
							 | 
						||
| 
								 | 
							
								         getCommonEdge(faces = [seg10, capEnd004])
							 | 
						||
| 
								 | 
							
								       ],
							 | 
						||
| 
								 | 
							
								     )
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Negative extrude the clearance hole for the first drill bit
							 | 
						||
| 
								 | 
							
								bitClearance01 = startSketchOn(stem01, face = END)
							 | 
						||
| 
								 | 
							
								  |> circle(center = [0, segEndY(seg03) + .1], radius = bitSize01 / 2)
							 | 
						||
| 
								 | 
							
								  |> extrude(length = -15 - bitLength)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Model a rotating grip for the first drill bit
							 | 
						||
| 
								 | 
							
								grip01 = startSketchOn(offsetPlane(XZ, offset = -segEndX(seg03) + 16))
							 | 
						||
| 
								 | 
							
								  |> circle(center = [0, segEndY(seg03) + .1], radius = handleWidth / 1.85, tag = $seg11)
							 | 
						||
| 
								 | 
							
								  |> subtract2d(tool = circle(center = [0, segEndY(seg03) + .1], radius = bitSize01))
							 | 
						||
| 
								 | 
							
								  |> extrude(length = -10, tagEnd = $capEnd005, tagStart = $capStart003)
							 | 
						||
| 
								 | 
							
								  |> fillet(
							 | 
						||
| 
								 | 
							
								       radius = 1,
							 | 
						||
| 
								 | 
							
								       tags = [
							 | 
						||
| 
								 | 
							
								         getCommonEdge(faces = [seg11, capEnd005]),
							 | 
						||
| 
								 | 
							
								         getCommonEdge(faces = [seg11, capStart003])
							 | 
						||
| 
								 | 
							
								       ],
							 | 
						||
| 
								 | 
							
								     )
							 | 
						||
| 
								 | 
							
								  |> appearance(color = "#af7b23")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Model the support for the second drill bit
							 | 
						||
| 
								 | 
							
								bitSupport02 = startSketchOn(offsetPlane(XY, offset = -2))
							 | 
						||
| 
								 | 
							
								  |> circle(center = [0, segEndX(seg02)], radius = handleWidth / 1.9)
							 | 
						||
| 
								 | 
							
								  |> extrude(length = 15)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Model the stem for the second drill bit
							 | 
						||
| 
								 | 
							
								stem02 = startSketchOn(bitSupport02, face = START)
							 | 
						||
| 
								 | 
							
								  |> circle(center = [0, segEndX(seg02)], radius = bitSize02, tag = $seg09)
							 | 
						||
| 
								 | 
							
								  |> extrude(length = bitLength, tagEnd = $capEnd003)
							 | 
						||
| 
								 | 
							
								  |> chamfer(
							 | 
						||
| 
								 | 
							
								       length = bitSize02 / 3,
							 | 
						||
| 
								 | 
							
								       tags = [
							 | 
						||
| 
								 | 
							
								         getCommonEdge(faces = [seg09, capEnd003])
							 | 
						||
| 
								 | 
							
								       ],
							 | 
						||
| 
								 | 
							
								     )
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Negative extrude the clearance hole for the second drill bit
							 | 
						||
| 
								 | 
							
								bitClearance02 = startSketchOn(stem02, face = END)
							 | 
						||
| 
								 | 
							
								  |> circle(center = [0, segEndX(seg02)], radius = bitSize02 / 2)
							 | 
						||
| 
								 | 
							
								  |> extrude(length = -15 - bitLength)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Model a rotating grip for the second drill bit
							 | 
						||
| 
								 | 
							
								grip02 = startSketchOn(offsetPlane(XY, offset = -3))
							 | 
						||
| 
								 | 
							
								  |> circle(center = [0, segEndX(seg02)], radius = handleWidth / 1.85, tag = $seg08)
							 | 
						||
| 
								 | 
							
								  |> subtract2d(tool = circle(center = [0, segEndX(seg02)], radius = bitSize02))
							 | 
						||
| 
								 | 
							
								  |> extrude(length = -10, tagStart = $capStart002, tagEnd = $capEnd002)
							 | 
						||
| 
								 | 
							
								  |> fillet(
							 | 
						||
| 
								 | 
							
								       radius = 1,
							 | 
						||
| 
								 | 
							
								       tags = [
							 | 
						||
| 
								 | 
							
								         getCommonEdge(faces = [seg08, capStart002]),
							 | 
						||
| 
								 | 
							
								         getCommonEdge(faces = [seg08, capEnd002])
							 | 
						||
| 
								 | 
							
								       ],
							 | 
						||
| 
								 | 
							
								     )
							 | 
						||
| 
								 | 
							
								  |> appearance(color = "#23af93")
							 |