Added Full Box

Full Box model does a mockup of all parts.

Fixed alignments
This commit is contained in:
2024-03-19 21:32:27 -04:00
parent e521b83a3f
commit db44517612

View File

@@ -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);