-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Signed-off-by: Jess Frazelle <[email protected]>
- Loading branch information
Showing
5 changed files
with
156 additions
and
8 deletions.
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,96 @@ | ||
// Lego Brick | ||
// A standard Lego brick. This is a small, plastic construction block toy that can be interlocked with other blocks to build various structures, models, and figures. There are a lot of hacks used in this code. | ||
|
||
// Define constants | ||
const lbumps = 5 // number of bumps long | ||
const wbumps = 3 // number of bumps wide | ||
const pitch = 8.0 | ||
const clearance = 0.1 | ||
const bumpDiam = 4.8 | ||
const bumpHeight = 1.8 | ||
const height = 3.2 | ||
const t = (pitch - (2 * clearance) - bumpDiam) / 2.0 | ||
const postDiam = pitch - t // works out to 6.5 | ||
const totalLength = lbumps * pitch - (2.0 * clearance) | ||
const totalWidth = wbumps * pitch - (2.0 * clearance) | ||
const throw_lint = 0 | ||
|
||
const lSegments = totalLength / (lbumps) | ||
const wSegments = totalWidth / (wbumps) | ||
|
||
// 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 }, | ||
x_axis: { x: 1, y: 0, z: 0 }, | ||
y_axis: { x: 0, y: 1, z: 0 }, | ||
z_axis: { 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 }, | ||
x_axis: { x: 1, y: 0, z: 0 }, | ||
y_axis: { x: 0, y: 1, z: 0 }, | ||
z_axis: { 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), %) | ||
|
||
// Create the pegs on the top of the base | ||
const peg = startSketchOn(s, 'end') | ||
|> circle([ | ||
-(pitch*(wbumps-1)/2), | ||
-(pitch*(lbumps-1)/2) | ||
], bumpDiam / 2, %) | ||
|> patternLinear2d({ | ||
axis: [1, 0], | ||
repetitions: wbumps-1, | ||
distance: pitch | ||
}, %) | ||
|> patternLinear2d({ | ||
axis: [0, 1], | ||
repetitions: lbumps-1, | ||
distance: pitch | ||
}, %) | ||
|> extrude(bumpHeight, %) | ||
|
||
// Create the pegs on the bottom of the base | ||
const tubePattern = startSketchOn(tubeFace) | ||
|> circle([ | ||
-(pitch*(wbumps-1)/2-pitch/2), | ||
-(pitch*(lbumps-1)/2-pitch/2) | ||
], bumpDiam/2, %) | ||
|> patternLinear2d({ | ||
axis: [1, 0], | ||
repetitions: wbumps-2, | ||
distance: pitch | ||
}, %) | ||
|> patternLinear2d({ | ||
axis: [0, 1], | ||
repetitions: lbumps-2, | ||
distance: pitch | ||
}, %) | ||
|> extrude(-bumpHeight, %) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters