Added Full Box
Full Box model does a mockup of all parts. Fixed alignments
This commit is contained in:
92
box.scad
92
box.scad
@@ -8,7 +8,7 @@ include <./pc4m10.scad>
|
|||||||
|
|
||||||
/* [Part] */
|
/* [Part] */
|
||||||
|
|
||||||
PART = ""; // [corner, edge, all_corners, simple_box, beamjoiner]
|
PART = ""; // [corner, back_edge, all_corners, full_box, beamjoiner, profile]
|
||||||
|
|
||||||
/* [Dimensions] */
|
/* [Dimensions] */
|
||||||
|
|
||||||
@@ -28,6 +28,12 @@ FLOOR_THICK = 5;
|
|||||||
JOINER_H = 18;
|
JOINER_H = 18;
|
||||||
JOINER_W = 10;
|
JOINER_W = 10;
|
||||||
|
|
||||||
|
RB_MOUNT_INSET=17;
|
||||||
|
RB_MOUNT_WIDTH=9;
|
||||||
|
RB_MOUNT_LEN=136;
|
||||||
|
RB_MOUNT_OUT_H=19;
|
||||||
|
RB_MOUNT_IN_H=6.15;
|
||||||
|
|
||||||
/* [Render Options] */
|
/* [Render Options] */
|
||||||
render_fs=.4;
|
render_fs=.4;
|
||||||
render_fn=0;
|
render_fn=0;
|
||||||
@@ -67,6 +73,13 @@ module dryboxNG(
|
|||||||
|
|
||||||
//profile();
|
//profile();
|
||||||
module profile(ps=PROFILE_SIZE, wl=WIN_LIP, wt=WIN_THICK, wtr=WIN_TRIM, fl=FLOOR_LIP, ft=FLOOR_THICK, flx=false, fly=false, wx=true, wy=true) {
|
module profile(ps=PROFILE_SIZE, wl=WIN_LIP, wt=WIN_THICK, wtr=WIN_TRIM, fl=FLOOR_LIP, ft=FLOOR_THICK, flx=false, fly=false, wx=true, wy=true) {
|
||||||
|
conv = (wx && wy && flx)
|
||||||
|
? 3
|
||||||
|
: ((wx && wy) || (wy && flx))
|
||||||
|
? 2
|
||||||
|
: (wx || wy || flx)
|
||||||
|
? 1
|
||||||
|
: 0;
|
||||||
gon=concat(
|
gon=concat(
|
||||||
[[0,ps-wl-wtr]], // Trim Start
|
[[0,ps-wl-wtr]], // Trim Start
|
||||||
// Y Window
|
// Y Window
|
||||||
@@ -81,7 +94,11 @@ module profile(ps=PROFILE_SIZE, wl=WIN_LIP, wt=WIN_THICK, wtr=WIN_TRIM, fl=FLOOR
|
|||||||
: [[ps,0]],
|
: [[ps,0]],
|
||||||
[[ps-wl-wtr,0]]
|
[[ps-wl-wtr,0]]
|
||||||
);
|
);
|
||||||
polygon(gon);
|
polygon(points = gon, convexity=conv);
|
||||||
|
}
|
||||||
|
|
||||||
|
module rb_foot() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
module box_edge(ps=PROFILE_SIZE, l=10, orient=ORIENT_Z, jh = JOINER_H,jw = JOINER_W, jb=5, jup = false, jdown=false, flx=false, wl=WIN_LIP, wx=true, wt=WIN_THICK, wtr = WIN_TRIM, tubepass=false, align=V_CENTER) {
|
module box_edge(ps=PROFILE_SIZE, l=10, orient=ORIENT_Z, jh = JOINER_H,jw = JOINER_W, jb=5, jup = false, jdown=false, flx=false, wl=WIN_LIP, wx=true, wt=WIN_THICK, wtr = WIN_TRIM, tubepass=false, align=V_CENTER) {
|
||||||
@@ -102,16 +119,17 @@ module box_edge(ps=PROFILE_SIZE, l=10, orient=ORIENT_Z, jh = JOINER_H,jw = JOINE
|
|||||||
}
|
}
|
||||||
|
|
||||||
module box_corner(ps = PROFILE_SIZE, l=0, zfl = true, zw = false, wt=WIN_THICK, align=V_CENTER, orient=ORIENT_Z) {
|
module box_corner(ps = PROFILE_SIZE, l=0, zfl = true, zw = false, wt=WIN_THICK, align=V_CENTER, orient=ORIENT_Z) {
|
||||||
orient_and_align([ps,ps,ps], orient=orient, align=align) {
|
sz = 2*ps;
|
||||||
|
orient_and_align([sz,sz,sz], orient=orient, align=align) {
|
||||||
intersection() {
|
intersection() {
|
||||||
// Cap
|
// Cap
|
||||||
fwd(ps)right(4)down(4)right(ps/2)box_edge(l=PROFILE_SIZE, orient=ORIENT_Y, align=V_BACK+V_LEFT, flx=zfl, wx=zw);
|
fwd(ps)right(4)down(4)right(ps/2)box_edge(l=PROFILE_SIZE, orient=ORIENT_Y, align=V_BACK+V_LEFT, flx=zfl, wx=zw);
|
||||||
right(ps)fwd(4)down(4)fwd(ps/2)box_edge(l=PROFILE_SIZE, orient=ORIENT_X, align=V_BACK+V_LEFT, flx=zfl, wx=zw);
|
right(ps)fwd(4)down(4)fwd(ps/2)box_edge(l=PROFILE_SIZE, orient=ORIENT_X, align=V_BACK+V_LEFT, flx=zfl, wx=zw);
|
||||||
down(ps/2+WIN_TRIM)fwd(4)right(4)box_edge(l=PROFILE_SIZE, orient=ORIENT_Z_90, align=V_TOP, flx=false, wx=true);
|
down(ps/2+WIN_TRIM)fwd(4)right(4)box_edge(l=PROFILE_SIZE, orient=ORIENT_Z_90, align=V_TOP, flx=false, wx=true);
|
||||||
}
|
}
|
||||||
fwd(1)right(4)down(4)right(ps/2)box_edge(l=ps, orient=ORIENT_Y, jup=true, align=V_BACK+V_LEFT, flx=zfl, wx=zw);
|
fwd(1)right(4)down(4)right(ps/2)box_edge(l=ps+1, orient=ORIENT_Y, jup=true, align=V_BACK+V_LEFT, flx=zfl, wx=zw);
|
||||||
right(1)fwd(4)down(4)fwd(ps/2)box_edge(l=PROFILE_SIZE, orient=ORIENT_X, jdown=true, align=V_BACK+V_LEFT, flx=zfl, wx=zw);
|
right(1)fwd(4)down(4)fwd(ps/2)box_edge(l=ps+1, orient=ORIENT_X, jdown=true, align=V_BACK+V_LEFT, flx=zfl, wx=zw);
|
||||||
down(1)fwd(4)right(4)box_edge(l=ps, orient=ORIENT_Z_90, align=V_TOP, jup=true, flx=false, wx=true);
|
down(1)fwd(4)right(4)box_edge(l=ps+1, orient=ORIENT_Z_90, align=V_TOP, jup=true, flx=false, wx=true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -152,27 +170,69 @@ module boxjoiner_clear(inset=5, slop=.01, jh=JOINER_H, jw=JOINER_W, align=V_FRON
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (PART == "profile") {
|
||||||
|
profile(flx=true);
|
||||||
|
}
|
||||||
if (PART == "corner")
|
if (PART == "corner")
|
||||||
box_corner();
|
box_corner();
|
||||||
if (PART == "edge") {
|
if (PART == "back_edge") {
|
||||||
xbeam = BOX_X - 2 * PROFILE_SIZE;
|
xbeam = BOX_X - 2 * PROFILE_SIZE;
|
||||||
xrot(90) zrot(0) box_edge(l=xbeam/3, jup=true, jdown=true, flx=true, wx=false, tubepass=true, orient=ORIENT_Z);
|
xrot(90) zrot(0) box_edge(l=xbeam/3, jup=true, jdown=true, flx=true, wx=false, tubepass=true, orient=ORIENT_Z);
|
||||||
}
|
}
|
||||||
if (PART == "all_corners")
|
if (PART == "all_corners")
|
||||||
box_all_corners(ex=30);
|
box_all_corners(ex=30);
|
||||||
if (PART == "simple_box") {
|
if (PART == "full_box") {
|
||||||
lx = BOX_X - 2 * PROFILE_SIZE;
|
lx = BOX_X - 2 * PROFILE_SIZE;
|
||||||
ly = BOX_Y - 2 * PROFILE_SIZE;
|
ly = BOX_Y - 2 * PROFILE_SIZE;
|
||||||
lz = BOX_Z - 2 * PROFILE_SIZE;
|
lz = BOX_Z - 2 * PROFILE_SIZE;
|
||||||
ps = PROFILE_SIZE;
|
ps = PROFILE_SIZE;
|
||||||
fwd(ps+ly/2) box_edge(l=lx, jup=true, jdown=true, flx=true, wx=false, orient=ORIENT_X);
|
psoff = ps/2 - WIN_LIP - WIN_THICK;
|
||||||
back(ps+ly/2) zrot(180) box_edge(l=lx, jup=true, jdown=true, flx=true, wx=false, orient=ORIENT_X);
|
coff = ps + psoff;
|
||||||
back(3)#right(ps+lx/2+4) box_edge(l=ly, jup=true, jdown=true, flx=true, wx=false, orient=ORIENT_Y);
|
|
||||||
left(ps+lx/2) zrot(-90)box_edge(l=ly, jup=true, jdown=true, flx=true, wx=false, orient=ORIENT_X);
|
echo(str("Edge Len X: ", lx, " (3 x ", lx/3, ")"));
|
||||||
up(4)right(ps+lx/2)fwd(ps+ly/2-4)box_corner();
|
echo(str("Edge Len Y: ", ly, " (1 x ", ly, ")"));
|
||||||
up(4)right(ps+lx/2)back(ps+ly/2-4)box_corner(orient=ORIENT_Z_90);
|
echo(str("Edge Len Z: ", lz, " (1 x ", lz, ")"));
|
||||||
up(4)left(ps+lx/2)back(ps+ly/2-4)box_corner(orient=ORIENT_Z_180);
|
up(lz/2+ps) {
|
||||||
up(4)left(ps+lx/2)fwd(ps+ly/2-4)box_corner(orient=ORIENT_Z_270);
|
// Bottom Corners:
|
||||||
|
right(lx/2) fwd(ps+ly/2)box_corner(orient=ORIENT_ZNEG_270, align=V_RIGHT);
|
||||||
|
right(ps+lx/2) back(ps+ly/2)box_corner(orient=ORIENT_ZNEG_180);
|
||||||
|
left(ps+lx/2) back(ps+ly/2)box_corner(orient=ORIENT_ZNEG_90);
|
||||||
|
left(ps+lx/2) fwd(ps+ly/2)box_corner(orient=ORIENT_ZNEG);
|
||||||
|
}
|
||||||
|
up(lz/2+coff) { // Top Edges
|
||||||
|
fwd(coff + ly/2) box_edge(l=lx, jup=true, jdown=true, flx=true, wx=false, orient=ORIENT_XNEG_180);
|
||||||
|
back(coff + ly/2) {
|
||||||
|
xspread(n=3, lx/3)box_edge(l=lx/3, jup=true, jdown=true, flx=true, wx=false, tubepass=false, orient=ORIENT_X_180);
|
||||||
|
}
|
||||||
|
right(coff + lx/2) box_edge(l=ly, jup=true, jdown=true, flx=true, wx=false, orient=ORIENT_YNEG_180);
|
||||||
|
left(coff + lx/2) zrot(180)box_edge(l=ly, jup=true, jdown=true, flx=true, wx=false, orient=ORIENT_YNEG_180);
|
||||||
|
}
|
||||||
|
{ // vertical
|
||||||
|
left(coff+lx/2)fwd(coff+ly/2)
|
||||||
|
box_edge(l=lz,jup=true, jdown=true);
|
||||||
|
right(coff+lx/2)fwd(coff+ly/2)
|
||||||
|
box_edge(l=lz,jup=true, jdown=true, orient=ORIENT_Z_90);
|
||||||
|
right(coff+lx/2)back(coff+ly/2)
|
||||||
|
box_edge(l=lz,jup=true, jdown=true, orient=ORIENT_Z_180);
|
||||||
|
left(coff+lx/2)back(coff+ly/2)
|
||||||
|
box_edge(l=lz,jup=true, jdown=true, orient=ORIENT_Z_270);
|
||||||
|
}
|
||||||
|
down(lz/2+coff) { // Bottom Edges, XXX: down to align with corner. This may be an issue when we add feet.
|
||||||
|
fwd(coff + ly/2) box_edge(l=lx, jup=true, jdown=true, flx=true, wx=false, orient=ORIENT_X);
|
||||||
|
back(coff + ly/2) zrot(180) { // rear
|
||||||
|
xspread(n=3, lx/3)box_edge(l=lx/3, jup=true, jdown=true, flx=true, wx=false, tubepass=true, orient=ORIENT_X);
|
||||||
|
}
|
||||||
|
// Sides - XXX: Add feet
|
||||||
|
right(coff + lx/2) box_edge(l=ly, jup=true, jdown=true, flx=true, wx=false, orient=ORIENT_Y);
|
||||||
|
left(coff + lx/2) zrot(180)box_edge(l=ly, jup=true, jdown=true, flx=true, wx=false, orient=ORIENT_Y);
|
||||||
|
}
|
||||||
|
down(lz/2+ps) {
|
||||||
|
// Bottom Corners:
|
||||||
|
right(lx/2) fwd(ps+ly/2)box_corner(align=V_RIGHT);
|
||||||
|
right(ps+lx/2) back(ps+ly/2)box_corner(orient=ORIENT_Z_90);
|
||||||
|
left(ps+lx/2) back(ps+ly/2)box_corner(orient=ORIENT_Z_180);
|
||||||
|
left(ps+lx/2) fwd(ps+ly/2)box_corner(orient=ORIENT_Z_270);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (PART == "beamjoiner") beam_joiner(fl=false);
|
if (PART == "beamjoiner") beam_joiner(fl=false);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user