* git mv src/wasm-lib rust Signed-off-by: Jess Frazelle <github@jessfraz.com> * mv wasm-lib to workspace Signed-off-by: Jess Frazelle <github@jessfraz.com> * mv kcl-lib Signed-off-by: Jess Frazelle <github@jessfraz.com> * mv derive docs Signed-off-by: Jess Frazelle <github@jessfraz.com> * resolve file paths Signed-off-by: Jess Frazelle <github@jessfraz.com> * clippy Signed-off-by: Jess Frazelle <github@jessfraz.com> * move more shit Signed-off-by: Jess Frazelle <github@jessfraz.com> * fix more paths Signed-off-by: Jess Frazelle <github@jessfraz.com> * make yarn build:wasm work Signed-off-by: Jess Frazelle <github@jessfraz.com> * fix scripts Signed-off-by: Jess Frazelle <github@jessfraz.com> * fixups Signed-off-by: Jess Frazelle <github@jessfraz.com> * better references Signed-off-by: Jess Frazelle <github@jessfraz.com> * fix cargo ci Signed-off-by: Jess Frazelle <github@jessfraz.com> * fix reference Signed-off-by: Jess Frazelle <github@jessfraz.com> * fix more ci Signed-off-by: Jess Frazelle <github@jessfraz.com> * fix tests Signed-off-by: Jess Frazelle <github@jessfraz.com> * cargo sort Signed-off-by: Jess Frazelle <github@jessfraz.com> * fix script Signed-off-by: Jess Frazelle <github@jessfraz.com> * fix Signed-off-by: Jess Frazelle <github@jessfraz.com> * fmt Signed-off-by: Jess Frazelle <github@jessfraz.com> * fix a dep Signed-off-by: Jess Frazelle <github@jessfraz.com> * sort Signed-off-by: Jess Frazelle <github@jessfraz.com> * remove unused deps Signed-off-by: Jess Frazelle <github@jessfraz.com> * Revert "remove unused deps" This reverts commit fbabdb062e275fd5cbc1476f8480a1afee15d972. * updates Signed-off-by: Jess Frazelle <github@jessfraz.com> * deps; Signed-off-by: Jess Frazelle <github@jessfraz.com> * fixes 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>
		
			
				
	
	
		
			82 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Cheetah
		
	
	
	
	
	
			
		
		
	
	
			82 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Cheetah
		
	
	
	
	
	
// 2x8 Lego Brick
 | 
						|
// A standard Lego brick with 2 bumps wide and 8 bumps long.
 | 
						|
// Define constants
 | 
						|
const lbumps = 10 // number of bumps long
 | 
						|
const wbumps = {{N}} // number of bumps wide
 | 
						|
const pitch = 8.0
 | 
						|
const clearance = 0.1
 | 
						|
const bumpDiam = 4.8
 | 
						|
const bumpHeight = 1.8
 | 
						|
const height = 9.6
 | 
						|
const t = (pitch - (2 * clearance) - bumpDiam) / 2.0
 | 
						|
const totalLength = lbumps * pitch - (2.0 * clearance)
 | 
						|
const totalWidth = wbumps * pitch - (2.0 * clearance)
 | 
						|
// Create the plane for the pegs. This is a hack so that the pegs can be patterned along the face of the lego base.
 | 
						|
const pegFace = {
 | 
						|
  plane: {
 | 
						|
    origin: { x: 0, y: 0, z: height },
 | 
						|
    xAxis: { x: 1, y: 0, z: 0 },
 | 
						|
    yAxis: { x: 0, y: 1, z: 0 },
 | 
						|
    zAxis: { x: 0, y: 0, z: 1 }
 | 
						|
  }
 | 
						|
}
 | 
						|
// Create the plane for the tubes underneath the lego. This is a hack so that the tubes can be patterned underneath the lego.
 | 
						|
const tubeFace = {
 | 
						|
    plane: {
 | 
						|
    origin: { x: 0, y: 0, z: height - t },
 | 
						|
    xAxis: { x: 1, y: 0, z: 0 },
 | 
						|
    yAxis: { x: 0, y: 1, z: 0 },
 | 
						|
    zAxis: { x: 0, y: 0, z: 1 }
 | 
						|
  }
 | 
						|
}
 | 
						|
// Make the base
 | 
						|
const s = startSketchOn('XY')
 | 
						|
  |> startProfileAt([-totalWidth / 2, -totalLength / 2], %)
 | 
						|
  |> line([totalWidth, 0], %)
 | 
						|
  |> line([0, totalLength], %)
 | 
						|
  |> line([-totalWidth, 0], %)
 | 
						|
  |> close(%)
 | 
						|
  |> extrude(height, %)
 | 
						|
 | 
						|
// Sketch and extrude a rectangular shape to create the shell underneath the lego. This is a hack until we have a shell function.
 | 
						|
const shellExtrude = startSketchOn(s, "start")
 | 
						|
  |> startProfileAt([
 | 
						|
       -(totalWidth / 2 - t),
 | 
						|
       -(totalLength / 2 - t)
 | 
						|
     ], %)
 | 
						|
  |> line([totalWidth - (2 * t), 0], %)
 | 
						|
  |> line([0, totalLength - (2 * t)], %)
 | 
						|
  |> line([-(totalWidth - (2 * t)), 0], %)
 | 
						|
  |> close(%)
 | 
						|
  |> extrude(-(height - t), %)
 | 
						|
 | 
						|
fn tr = (i) => {
 | 
						|
  let j = i + 1
 | 
						|
  let x = (j/wbumps) * pitch
 | 
						|
  let y = (j % wbumps) * pitch
 | 
						|
  return {
 | 
						|
    translate: [x, y, 0],
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
// Create the pegs on the top of the base
 | 
						|
const totalBumps = (wbumps * lbumps)-1
 | 
						|
const peg = startSketchOn(s, 'end')
 | 
						|
  |> circle( center = [
 | 
						|
       -(pitch*(wbumps-1)/2),
 | 
						|
       -(pitch*(lbumps-1)/2)
 | 
						|
     ], radius = bumpDiam / 2)
 | 
						|
  |> patternLinear2d(
 | 
						|
       axis = [1, 0],
 | 
						|
       instances = wbumps,
 | 
						|
       distance = pitch
 | 
						|
     )
 | 
						|
  |> patternLinear2d(
 | 
						|
       axis = [0, 1],
 | 
						|
       instances = lbumps,
 | 
						|
       distance = pitch
 | 
						|
     )
 | 
						|
  |> extrude(bumpHeight, %)
 | 
						|
  // |> patternTransform(instances = int(totalBumps-1), transform = tr)
 | 
						|
 |