* New single-file samples for the website * Update kcl-samples simulation test output * Update kcl-samples simulation test output * Update kcl-samples simulation test output * Update kcl-samples simulation test output * Update kcl-samples simulation test output * Update kcl-samples simulation test output * Update kcl-samples simulation test output * Update kcl-samples simulation test output * Update kcl-samples simulation test output * Update kcl-samples simulation test output * Update kcl-samples simulation test output * Update kcl-samples simulation test output * Update kcl-samples simulation test output * Delete public/kcl-samples/piston directory * More * 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> * 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> * move another test 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: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: Jess Frazelle <jessfraz@users.noreply.github.com> Co-authored-by: Jess Frazelle <github@jessfraz.com>
		
			
				
	
	
		
			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")
 |