mirror of
https://github.com/correl/openscad.git
synced 2024-11-14 11:09:32 +00:00
Initial commit
This commit is contained in:
commit
672995835a
3 changed files with 109 additions and 0 deletions
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
*~
|
||||
*.stl
|
6
fit_test.scad
Normal file
6
fit_test.scad
Normal file
|
@ -0,0 +1,6 @@
|
|||
use <project_box.scad>
|
||||
$fn=50;
|
||||
|
||||
project_box(50, 70,
|
||||
above=0,
|
||||
below=1);
|
101
project_box.scad
Normal file
101
project_box.scad
Normal file
|
@ -0,0 +1,101 @@
|
|||
/* Project box
|
||||
|
||||
A parametric box for perforated circuit boards. The board is held above the
|
||||
bottom of the box by four corner supports, and snaps into place to hold it
|
||||
snugly while allowing easy removal.
|
||||
*/
|
||||
|
||||
$fn=50;
|
||||
|
||||
board_x = 50;
|
||||
board_y = 70;
|
||||
board_thickness = 1; // [1:10]
|
||||
clearance_above = 20; // [5:50]
|
||||
clearance_below = 10; // [5:50]
|
||||
fit_tolerance = 0.5;
|
||||
corner_radius=3; // [1:10]
|
||||
support_radius=5; // [1:10]
|
||||
wall_width=3; // [3:10]
|
||||
|
||||
module _rounded_box(h, w, d, r) {
|
||||
hull() {
|
||||
translate([0 + r,0 + r,0])
|
||||
cylinder(h=h,r=r);
|
||||
translate([w - r,0 + r,0])
|
||||
cylinder(h=h, r=r);
|
||||
translate([w - r,d - r,0])
|
||||
cylinder(h=h, r=r);
|
||||
translate([0 + r,d - r,0])
|
||||
cylinder(h=h, r=r);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
module corner_post(h, r) {
|
||||
intersection() {
|
||||
translate([-0.001,-0.001,-0.001])
|
||||
cube([r*1.1, r*1.1, h*1.2]);
|
||||
cylinder(h=h, r=r);
|
||||
}
|
||||
}
|
||||
|
||||
module project_box(x, y,
|
||||
above=20,
|
||||
below=10,
|
||||
board_thickness=1,
|
||||
fit_tolerance=0.5,
|
||||
corner_radius=3,
|
||||
support_radius=5,
|
||||
wall_width=3) {
|
||||
height=board_thickness + above + below + (fit_tolerance * 2);
|
||||
width=board_x + (fit_tolerance * 2);
|
||||
depth=board_y + (fit_tolerance * 2);
|
||||
|
||||
// container
|
||||
difference() {
|
||||
_rounded_box(h=height + (wall_width * 2),
|
||||
w=width + (wall_width * 2),
|
||||
d=depth + (wall_width * 2),
|
||||
r=corner_radius);
|
||||
translate([wall_width,wall_width,wall_width])
|
||||
cube([width, depth, height + (wall_width * 2)]);
|
||||
}
|
||||
|
||||
// supports
|
||||
translate([wall_width,wall_width,wall_width]) {
|
||||
translate([0,0,0])
|
||||
corner_post(h=below, r=support_radius);
|
||||
translate([width,0,0])
|
||||
rotate([0,0,90])
|
||||
corner_post(h=below, r=support_radius);
|
||||
translate([0,depth,0])
|
||||
rotate([0,0,270])
|
||||
corner_post(h=below, r=support_radius);
|
||||
translate([width,depth,0])
|
||||
rotate([0,0,180])
|
||||
corner_post(h=below, r=support_radius);
|
||||
}
|
||||
|
||||
|
||||
// locking nubs
|
||||
translate([wall_width,wall_width,wall_width]) {
|
||||
nub_size = 1;
|
||||
nub_width = board_y / 4;
|
||||
nub_height = below + board_thickness + (nub_size/2) + (fit_tolerance*2);
|
||||
translate([0,board_y / 2 - nub_width / 2,nub_height])
|
||||
rotate([270,0,0])
|
||||
cylinder(h=nub_width, r=1);
|
||||
translate([width,board_y / 2 - nub_width / 2,nub_height])
|
||||
rotate([270,0,0])
|
||||
cylinder(h=nub_width, r=1);
|
||||
}
|
||||
}
|
||||
|
||||
project_box(board_x, board_y,
|
||||
above=clearance_above,
|
||||
below=clearance_below,
|
||||
board_thickness=board_thickness,
|
||||
fit_tolerance=fit_tolerance,
|
||||
corner_radius=corner_radius,
|
||||
support_radius=support_radius,
|
||||
wall_width=wall_width);
|
Loading…
Reference in a new issue