* 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>
		
			
				
	
	
		
			119 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			119 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
// Claw Hammer
 | 
						|
// Often used in construction, a claw hammer is a levered metal hand tool that is used to strike and extract nails
 | 
						|
 | 
						|
// Set units
 | 
						|
@settings(defaultLengthUnit = in)
 | 
						|
 | 
						|
// Sketch the side profile of the hammer head
 | 
						|
headSideProfile = startSketchOn(XZ)
 | 
						|
  |> startProfile(at = [0.33, 11.26])
 | 
						|
  |> yLine(length = 0.1)
 | 
						|
  |> tangentialArc(endAbsolute = [0.95, 11.92])
 | 
						|
  |> tangentialArc(endAbsolute = [2.72, 11.26], tag = $seg01)
 | 
						|
  |> angledLine(angle = tangentToEnd(seg01) + 90, length = .2)
 | 
						|
  |> angledLine(angle = tangentToEnd(seg01) - 10, length = -0.5)
 | 
						|
  |> tangentialArc(endAbsolute = [-0.91, 12.78], tag = $seg03)
 | 
						|
  |> tangentialArc(endAbsolute = [-1.67, 12.85])
 | 
						|
  |> xLine(length = -.25)
 | 
						|
  |> tangentialArc(angle = 90, radius = .05)
 | 
						|
  |> yLine(length = -1.125, tag = $seg02)
 | 
						|
  |> tangentialArc(angle = 90, radius = .05)
 | 
						|
  |> xLine(length = .25, tag = $seg04)
 | 
						|
  |> angledLine(angle = 23, length = 0.1)
 | 
						|
  |> tangentialArc(endAbsolute = [-0.33, profileStartY(%)])
 | 
						|
  |> xLine(endAbsolute = profileStartX(%))
 | 
						|
  |> close()
 | 
						|
  |> extrude(length = 3, symmetric = true)
 | 
						|
 | 
						|
// Sketch the top profile of the hammer head
 | 
						|
headTopProfile = startSketchOn(offsetPlane(XY, offset = 13))
 | 
						|
leftSideCut = startProfile(headTopProfile, at = [-4, -1.6])
 | 
						|
  |> line(endAbsolute = [segEndX(seg02), -segLen(seg02) / 2])
 | 
						|
  |> arc(
 | 
						|
       %,
 | 
						|
       angleStart = 180,
 | 
						|
       angleEnd = 270,
 | 
						|
       radius = .05,
 | 
						|
     )
 | 
						|
  |> xLine(endAbsolute = segEndX(seg04))
 | 
						|
  |> arc(interiorAbsolute = [segEndX(seg03) - .1, lastSegY(%) + .03], endAbsolute = [segEndX(seg03), lastSegY(%)])
 | 
						|
  |> tangentialArc(endAbsolute = [3.39, -1.15])
 | 
						|
  |> yLine(endAbsolute = profileStartY(%))
 | 
						|
  |> line(endAbsolute = [profileStartX(%), profileStartY(%)])
 | 
						|
  |> close()
 | 
						|
  |> extrude(length = -14)
 | 
						|
 | 
						|
rearCut = startProfile(headTopProfile, at = [3.39, -0.56])
 | 
						|
  |> angledLine(angle = 177, length = 0.1)
 | 
						|
  |> tangentialArc(endAbsolute = [1.86, -0.37])
 | 
						|
  |> tangentialArc(endAbsolute = [lastSegX(%), -lastSegY(%)])
 | 
						|
  |> tangentialArc(endAbsolute = [profileStartX(%), -profileStartY(%)])
 | 
						|
  |> line(endAbsolute = [profileStartX(%), profileStartY(%)])
 | 
						|
  |> close()
 | 
						|
  |> extrude(length = -14)
 | 
						|
 | 
						|
rightSideCut = startProfile(headTopProfile, at = [-4, 1.6])
 | 
						|
  |> line(endAbsolute = [segEndX(seg02), segLen(seg02) / 2])
 | 
						|
  |> arc(
 | 
						|
       %,
 | 
						|
       angleStart = -180,
 | 
						|
       angleEnd = -270,
 | 
						|
       radius = .05,
 | 
						|
     )
 | 
						|
  |> xLine(endAbsolute = segEndX(seg04))
 | 
						|
  |> arc(interiorAbsolute = [segEndX(seg03) - .1, lastSegY(%) - .03], endAbsolute = [segEndX(seg03), lastSegY(%)])
 | 
						|
  |> tangentialArc(endAbsolute = [3.39, 1.15])
 | 
						|
  |> yLine(endAbsolute = profileStartY(%))
 | 
						|
  |> line(endAbsolute = [profileStartX(%), profileStartY(%)])
 | 
						|
  |> close()
 | 
						|
  |> extrude(length = -14)
 | 
						|
 | 
						|
// Subtract the top profiles from the side profile to create a CSG hammer shape
 | 
						|
firstProfiles = subtract(
 | 
						|
  [headSideProfile],
 | 
						|
  tools = [
 | 
						|
    union([
 | 
						|
  leftSideCut,
 | 
						|
  union([rearCut, rightSideCut])
 | 
						|
])
 | 
						|
  ],
 | 
						|
)
 | 
						|
 | 
						|
// Extrude a polygon through the center of the hammer head to create the mounting hole for the handle
 | 
						|
handleHole = startSketchOn(XY)
 | 
						|
  |> polygon(
 | 
						|
       %,
 | 
						|
       radius = .28,
 | 
						|
       numSides = 10,
 | 
						|
       center = [0, 0],
 | 
						|
     )
 | 
						|
  |> extrude(length = 14)
 | 
						|
 | 
						|
// Add an additional fillet feature to support the handle, and union it to the rest of the head
 | 
						|
baseSupport = startSketchOn(offsetPlane(XY, offset = 11.5))
 | 
						|
  |> circle(center = [0, 0], radius = .45, tag = $seg05)
 | 
						|
  |> extrude(length = 1, tagStart = $capStart001)
 | 
						|
  |> fillet(
 | 
						|
       radius = .05,
 | 
						|
       tags = [
 | 
						|
         getCommonEdge(faces = [seg05, capStart001])
 | 
						|
       ],
 | 
						|
     )
 | 
						|
 | 
						|
// Union all pieces into a single solid, then cut the handle hole
 | 
						|
hammerHead = union([firstProfiles, baseSupport])
 | 
						|
  |> subtract(tools = [handleHole])
 | 
						|
 | 
						|
// Draw a profile for the handle, then revolve around the center axis
 | 
						|
handleSketch = startSketchOn(XZ)
 | 
						|
  |> startProfile(at = [0.01, 0])
 | 
						|
  |> xLine(length = 1.125 / 2)
 | 
						|
  |> tangentialArc(angle = 90, radius = 0.05)
 | 
						|
  |> tangentialArc(endAbsolute = [0.38, 12.8 / 1.612])
 | 
						|
  |> tangentialArc(endAbsolute = [0.28, 12.8])
 | 
						|
  |> xLine(endAbsolute = profileStartX(%))
 | 
						|
  |> line(endAbsolute = [profileStartX(%), profileStartY(%)])
 | 
						|
  |> close()
 | 
						|
handle = revolve(handleSketch, angle = 360, axis = Y)
 | 
						|
  |> appearance(color = "#f14f04")
 |