Cleanup Push

This commit is contained in:
2024-03-18 18:02:05 -04:00
parent dda02b2aea
commit d8402f29ba
3 changed files with 81 additions and 65 deletions

View File

@@ -74,8 +74,8 @@ module beam(
} }
module beam_joiner(jw=JOINER_W, jh=JOINER_H) { module beam_joiner(jw=JOINER_W, jh=JOINER_H) {
up(jw/2)zrot(45-180)xrot(-90)joiner(h=jh, w=jw,l=3,align=FRONT, orient=ORIENT_X); up(jw/2)zrot(45-180)xrot(-90)joiner(h=jh, w=jw,l=4,align=FRONT, orient=ORIENT_X);
down(jw/2)zrot(45-180)xrot(90)joiner(h=jh, w=jw,l=3,align=FRONT, orient=ORIENT_X); down(jw/2)zrot(45-180)xrot(90)joiner(h=jh, w=jw,l=4,align=FRONT, orient=ORIENT_X);
} }

122
box.scad
View File

@@ -6,9 +6,13 @@ include <BOSL/transforms.scad>
include <BOSL/joiners.scad> include <BOSL/joiners.scad>
include <./pc4m10.scad> include <./pc4m10.scad>
/* [Part] */
PART = ""; // [corner, edge, all_corners, simple_box, beamjoiner]
/* [Dimensions] */ /* [Dimensions] */
PROFILE_SIZE = 38; PROFILE_SIZE = 34;
BOX_X = 530; BOX_X = 530;
BOX_Y = 210; BOX_Y = 210;
@@ -64,64 +68,64 @@ 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) {
gon=concat( gon=concat(
[[0,ps-wl-wt-wtr]], [[0,ps-wl-wtr]], // Trim Start
// Y Window // Y Window
wy ? [[0,ps-wl-wt],[wt,ps-wl-wt],[wt,ps-wt]] wy ? [[0,ps-wl],[wt,ps-wl],[wt,ps]]
: [[0,ps-wt]], : [[0,ps]],
// inner cut [[2*wt,ps]], // End of Y.
[[2*wt,ps-wt]], // Inner Cut to X
flx ? [[ps-wt-fl,2*wt+fl],[ps-wt-fl,2*wt+fl-ft],[ps,2*wt+fl-ft]] flx ? [[ps-fl,2*wt+fl],[ps-fl,2*wt+fl-ft],[ps,2*wt+fl-ft]]
: [[ps-wt,2*wt]], : [[ps,2*wt]],
// X Window // X Window
wx ? [[ps-wt,wt],[ps-wl-wt,wt],[ps-wl-wt,0]] wx ? [[ps,wt],[ps-wl,wt],[ps-wl,0]]
: [[ps-wt,0]], : [[ps,0]],
[[ps-wl-wt-wtr,0]] [[ps-wl-wtr,0]]
); );
polygon(gon); polygon(gon);
} }
module box_edge(ps=PROFILE_SIZE, l=10, orient=ORIENT_Z, jh = JOINER_H,jw = JOINER_W, jup = false, jdown=false, flx=false, wx=true, 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, wx=true, wt=WIN_THICK, align=V_CENTER) {
orient_and_align([ps,ps,l], orient=orient, align=align, orig_orient=ORIENT_Z) { joiner_off = ps/2 + wt - jb/sqrt(2);
orient_and_align([ps,ps,l], orient=orient, align=align, orig_orient=ORIENT_Z) left(ps/2) fwd(ps/2) {
difference() { difference() {
linear_extrude(height=l, center=true) linear_extrude(height=l, center=true)
profile(flx=flx, fly=true, wx=wx, wy=true); profile(flx=flx, fly=true, wx=wx, wy=true);
if (jup) up(l/2-jw/2)back(ps/2-sqrt(2))right(ps/2-sqrt(2))zrot(45)boxjoiner_clear(orient=ORIENT_Y_90, align=V_CENTER); if (jup) up(l/2-jw/2)back(joiner_off)right(joiner_off)zrot(45)boxjoiner_clear(orient=ORIENT_Y_90, align=V_CENTER);
if (jdown) down(l/2-jw/2)back(ps/2-sqrt(2))right(ps/2-sqrt(2))zrot(45)boxjoiner_clear(orient=ORIENT_Y_90, align=V_CENTER); if (jdown) down(l/2-jw/2)back(joiner_off)right(joiner_off)zrot(45)boxjoiner_clear(orient=ORIENT_Y_90, align=V_CENTER);
right(6+2+WIN_LIP/2)#pc4M10_clear(orient=ORIENT_Y,align=V_BACK);
} }
if (jup) up(l/2 - jw/2)back(ps/2-sqrt(2))right(ps/2-sqrt(2))zrot(45)boxjoiner(orient=ORIENT_Y_90, align=V_CENTER); if (jup) up(l/2 - jw/2)back(joiner_off)right(joiner_off)zrot(45)boxjoiner(orient=ORIENT_Y_90, align=V_CENTER);
if (jdown) down(l/2 - jw/2)back(ps/2-sqrt(2))right(ps/2-sqrt(2))zrot(45)xrot(180)boxjoiner(orient=ORIENT_Y_90, align=V_CENTER); if (jdown) down(l/2 - jw/2)back(joiner_off)right(joiner_off)zrot(45)xrot(180)boxjoiner(orient=ORIENT_Y_90, align=V_CENTER);
} }
} }
module box_corner(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([PROFILE_SIZE+l, PROFILE_SIZE+l, PROFILE_SIZE+l], align=align, orient=orient) orient_and_align([ps,ps,ps], orient=orient, align=align) {
back((PROFILE_SIZE-l)/2)left((PROFILE_SIZE-l)/2)down((PROFILE_SIZE-l)/2) {
intersection() { intersection() {
fwd(PROFILE_SIZE/2)right(PROFILE_SIZE/2)box_edge(l=PROFILE_SIZE, orient=ORIENT_Y, align=V_RIGHT, flx=zfl, wx=zw); // Cap
right(PROFILE_SIZE)fwd(PROFILE_SIZE/2)box_edge(l=PROFILE_SIZE, orient=ORIENT_X, align=V_FRONT, 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);
up(0)right(PROFILE_SIZE)fwd(PROFILE_SIZE)zrot(90)box_edge(l=PROFILE_SIZE, orient=ORIENT_Z, align=V_TOP, flx=false, wx=true); 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);
}
}
module beam_joiner(jw=JOINER_W, jh=JOINER_H, fl=false) {
difference() { difference() {
union() { union() {
fwd(PROFILE_SIZE/4-l/2-5)right(PROFILE_SIZE/2)box_edge(l=5+l/2+PROFILE_SIZE/2, jup=true, orient=ORIENT_Y, align=V_RIGHT, flx=zfl, wx=zw); fwd(jw/2)boxjoiner(h=jh, w=jw,l=5,align=FRONT, orient=ORIENT_X);
#right(PROFILE_SIZE/4-l/2-3)fwd(PROFILE_SIZE/2)box_edge(l=5+l/2+PROFILE_SIZE/2, jdown=true, orient=ORIENT_X, align=V_FRONT, flx=zfl, wx=zw); back(jw/2)zrot(180)boxjoiner(h=jh, w=jw,l=5,align=FRONT, orient=ORIENT_X);
up(PROFILE_SIZE/2)right(PROFILE_SIZE)fwd(PROFILE_SIZE)zrot(90)box_edge(l=5+l/2+PROFILE_SIZE/2, jup=true, orient=ORIENT_Z, align=V_TOP, flx=false, wx=true);
} }
//up(0)fwd((0)xrot(45) boxjoiner_clear(orient=ORIENT_Z, align=V_RIGHT); if (fl)
//up(PROFILE_SIZE/2+10/2-wt)right((PROFILE_SIZE)/2 + 10/2-wt) yrot(45) boxjoiner_clear(orient=ORIENT_Z_90); left(jh/2)down(3)yrot(45)cuboid([4,2*jh,4]);
//right(PROFILE_SIZE/2-wt/2) fwd(PROFILE_SIZE/2-wt/2) up((PROFILE_SIZE-10/2))zrot(45) yrot(90) boxjoiner_clear(orient=ORIENT_ZNEG);
}
//up((PROFILE_SIZE - wt)/2)fwd((PROFILE_SIZE - wt)/2)xrot(45) boxjoiner(orient=ORIENT_Z, align=V_RIGHT);
//up(wt/2+PROFILE_SIZE/2+10/2-wt)right((PROFILE_SIZE)/2 - wt + 10/2)yrot(45) boxjoiner(orient=ORIENT_Z_90);
//right(PROFILE_SIZE/2-wt/2) fwd(PROFILE_SIZE/2-wt/2) up((PROFILE_SIZE-10/2))zrot(45) yrot(90) boxjoiner(orient=ORIENT_Z);
} }
} }
l=100;
module box_all_corners(ex=0) { module box_all_corners(ex=0) {
// top // top
up(ex) fwd(ex) left(ex) box_corner(zfl=false, zw=true,align=V_UP+V_FRONT+V_LEFT, orient=ORIENT_ZNEG); up(ex) fwd(ex) left(ex) box_corner(zfl=false, zw=true,align=V_UP+V_FRONT+V_LEFT, orient=ORIENT_ZNEG);
@@ -136,28 +140,36 @@ module box_all_corners(ex=0) {
} }
module boxjoiner(slop=.01, align=V_FRONT, jh=JOINER_H, jw=JOINER_W, l=3, orient=ORIENT_Z) { module boxjoiner(slop=.01, align=V_FRONT, jh=JOINER_H, jw=JOINER_W, l=3, orient=ORIENT_Z) {
#orient_and_align([jw,0,jh], orig_align=V_FRONT, align=align, orient=orient) orient_and_align([jw,0,jh], orig_align=V_FRONT, align=align, orient=orient)
joiner(h=jh, w=jw, l=l, screwsize= $preview ? undef : .8); joiner(h=jh, w=jw, l=l, screwsize= $preview ? undef : .8);
} }
module boxjoiner_clear(inset=10, slop=.01, jh=JOINER_H, jw=JOINER_W, align=V_FRONT, orient=ORIENT_Z) {
module boxjoiner_clear(inset=5, slop=.01, jh=JOINER_H, jw=JOINER_W, align=V_FRONT, orient=ORIENT_Z) {
orient_and_align([jw,inset,jh],orient=orient, align=align) fwd() { orient_and_align([jw,inset,jh],orient=orient, align=align) fwd() {
cuboid([jw,inset+slop,jh], align=V_BACK); cuboid([jw+slop,inset+slop,jh], align=V_BACK);
joiner_clear(h=jh, w=jw); joiner_clear(h=jh, w=jw+slop);
} }
} }
//box_all_corners(ex=30); if (PART == "corner")
box_corner(); box_corner();
//xrot(90)zrot(45)box_edge(l=25, jup=true, jdown=true); if (PART == "edge")
//boxjoiner(inset=5); xrot(90) zrot(45) box_edge(l=21, jup=true, jdown=true, flx=true, wx=false);
if (PART == "all_corners")
box_all_corners(ex=30);
if (PART == "simple_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);
}
if (PART == "beamjoiner") beam_joiner(fl=false);
// Bottom Beam profiles:
//right(PROFILE_SIZE/2)box_edge(orient=ORIENT_Y, align=V_RIGHT, flx=true, wx=false);
//left(PROFILE_SIZE/2)box_edge(orient=ORIENT_YNEG, align=V_LEFT, flx=true, wx=false);
//fwd(PROFILE_SIZE/2)box_edge(orient=ORIENT_X, align=V_FRONT, flx=true, wx=false);
//back(PROFILE_SIZE/2)box_edge(orient=ORIENT_XNEG, align=V_BACK, flx=true, wx=false);
//box_corner(zfl=false, zw=true,align=V_UP+V_FRONT+V_LEFT, orient=ORIENT_ZNEG);
//xrot(45) right(20) boxjoiner(orient=ORIENT_ZNEG);
//yrot(-45) back(20) boxjoiner(orient=ORIENT_ZNEG_90);
//zrot(45) down(20) yrot(90) #boxjoiner(orient=ORIENT_Z);

View File

@@ -4,6 +4,8 @@ include <BOSL/shapes.scad>
include <BOSL/transforms.scad> include <BOSL/transforms.scad>
include <BOSL/threading.scad> include <BOSL/threading.scad>
PART=""; // [inner, clear, part]
SEAT_DEPTH=3.50; SEAT_DEPTH=3.50;
SEAT_DIAMETER=6.30; SEAT_DIAMETER=6.30;
SEAT_HOLE=3; SEAT_HOLE=3;
@@ -38,17 +40,19 @@ module pc4M10_inner(back_h=13, back_d = 12, orient=ORIENT_Z, align=V_CENTER) {
down(5.81)cyl(d1=back_d,d2=SEAT_HOLE,h=back_h+.02, align=V_BOTTOM); down(5.81)cyl(d1=back_d,d2=SEAT_HOLE,h=back_h+.02, align=V_BOTTOM);
} }
} }
module pc4M10(cd = 12, orient=ORIENT_Z, align=V_CENTER) { module pc4M10(cd = 12, h=18.8, orient=ORIENT_Z, align=V_CENTER) {
difference() { orient_and_align([12,12,18.8],orient=orient, align=align, orig_orient=ORIENT_ZNEG)
up(.01)cyl(d=cd,h=18.8, align=V_TOP); down(h/2)difference() {
up(.01)cyl(d=cd,h=h, align=V_TOP);
pc4M10_inner(align=V_TOP); pc4M10_inner(align=V_TOP);
} }
} }
module pc4M10_clear(cd = 12, extra=15, orient=ORIENT_Z, align=V_CENTER) { module pc4M10_clear(cd = 12, extra=15, orient=ORIENT_Z, align=V_CENTER) {
down(18.8)cyl(d=cd-.01, h=extra+18.8, align=V_TOP); orient_and_align([12,12,extra+18.8],orient=orient, align=align, orig_orient=ORIENT_ZNEG)
cyl(d=cd-.01, h=extra+18.8);
} }
//pc4M10_clear(align=V_BOTTOM); if (PART == "clear") pc4M10_clear(align=V_TOP);
//pc4M10(align=V_BOTTOM); if (PART == "part") pc4M10(align=V_TOP);