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 = ""; // [corner, edge, all_corners, simple_box, beamjoiner]
|
||||
PART = ""; // [corner, back_edge, all_corners, full_box, beamjoiner, profile]
|
||||
|
||||
/* [Dimensions] */
|
||||
|
||||
@@ -28,6 +28,12 @@ FLOOR_THICK = 5;
|
||||
JOINER_H = 18;
|
||||
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_fs=.4;
|
||||
render_fn=0;
|
||||
@@ -67,6 +73,13 @@ module dryboxNG(
|
||||
|
||||
//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) {
|
||||
conv = (wx && wy && flx)
|
||||
? 3
|
||||
: ((wx && wy) || (wy && flx))
|
||||
? 2
|
||||
: (wx || wy || flx)
|
||||
? 1
|
||||
: 0;
|
||||
gon=concat(
|
||||
[[0,ps-wl-wtr]], // Trim Start
|
||||
// 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-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) {
|
||||
@@ -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) {
|
||||
orient_and_align([ps,ps,ps], orient=orient, align=align) {
|
||||
sz = 2*ps;
|
||||
orient_and_align([sz,sz,sz], orient=orient, align=align) {
|
||||
intersection() {
|
||||
// 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);
|
||||
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);
|
||||
}
|
||||
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);
|
||||
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);
|
||||
down(1)fwd(4)right(4)box_edge(l=ps, orient=ORIENT_Z_90, align=V_TOP, jup=true, flx=false, wx=true);
|
||||
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=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+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")
|
||||
box_corner();
|
||||
if (PART == "edge") {
|
||||
if (PART == "back_edge") {
|
||||
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);
|
||||
}
|
||||
if (PART == "all_corners")
|
||||
box_all_corners(ex=30);
|
||||
if (PART == "simple_box") {
|
||||
if (PART == "full_box") {
|
||||
lx = BOX_X - 2 * PROFILE_SIZE;
|
||||
ly = BOX_Y - 2 * PROFILE_SIZE;
|
||||
lz = BOX_Z - 2 * PROFILE_SIZE;
|
||||
ps = PROFILE_SIZE;
|
||||
fwd(ps+ly/2) box_edge(l=lx, jup=true, jdown=true, flx=true, wx=false, orient=ORIENT_X);
|
||||
back(ps+ly/2) zrot(180) box_edge(l=lx, jup=true, jdown=true, flx=true, wx=false, orient=ORIENT_X);
|
||||
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);
|
||||
up(4)right(ps+lx/2)fwd(ps+ly/2-4)box_corner();
|
||||
up(4)right(ps+lx/2)back(ps+ly/2-4)box_corner(orient=ORIENT_Z_90);
|
||||
up(4)left(ps+lx/2)back(ps+ly/2-4)box_corner(orient=ORIENT_Z_180);
|
||||
up(4)left(ps+lx/2)fwd(ps+ly/2-4)box_corner(orient=ORIENT_Z_270);
|
||||
psoff = ps/2 - WIN_LIP - WIN_THICK;
|
||||
coff = ps + psoff;
|
||||
|
||||
echo(str("Edge Len X: ", lx, " (3 x ", lx/3, ")"));
|
||||
echo(str("Edge Len Y: ", ly, " (1 x ", ly, ")"));
|
||||
echo(str("Edge Len Z: ", lz, " (1 x ", lz, ")"));
|
||||
up(lz/2+ps) {
|
||||
// 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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user