diff --git a/box.scad b/box.scad index 9d7e0cb..9eaec28 100644 --- a/box.scad +++ b/box.scad @@ -84,17 +84,18 @@ module profile(ps=PROFILE_SIZE, wl=WIN_LIP, wt=WIN_THICK, wtr=WIN_TRIM, fl=FLOOR polygon(gon); } -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, 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) { joiner_off = ps/2 + wt - jb/sqrt(2); + jzoff = l/2-jw/2; orient_and_align([ps,ps,l], orient=orient, align=align, orig_orient=ORIENT_Z) left(ps/2) fwd(ps/2) { difference() { linear_extrude(height=l, center=true) profile(flx=flx, fly=true, wx=wx, wy=true); - 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(joiner_off)right(joiner_off)zrot(45)boxjoiner_clear(orient=ORIENT_Y_90, align=V_CENTER); - if (tubepass) zspread(l=l/2) right(6+2+WIN_LIP/2)pc4M10_clear(orient=ORIENT_Y,align=V_BACK); + if (jup) up(jzoff)back(joiner_off)right(joiner_off)zrot(45)boxjoiner_clear(orient=ORIENT_Y_90, align=V_CENTER); + if (jdown) down(jzoff)back(joiner_off)right(joiner_off)zrot(45)boxjoiner_clear(orient=ORIENT_Y_90, align=V_CENTER); + if (tubepass) zspread(l=l/2) right(6+2+wl/2)pc4M10_clear(orient=ORIENT_Y,align=V_BACK); } - if (tubepass) zspread(l=l/2) right(6+2+WIN_LIP/2)pc4M10(orient=ORIENT_Y,align=V_BACK); + if (tubepass) zspread(l=l/2) right(wtr+wt+wl/2)pc4M10(orient=ORIENT_Y,align=V_BACK); 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(joiner_off)right(joiner_off)zrot(45)xrot(180)boxjoiner(orient=ORIENT_Y_90, align=V_CENTER); } @@ -153,8 +154,10 @@ module boxjoiner_clear(inset=5, slop=.01, jh=JOINER_H, jw=JOINER_W, align=V_FRON if (PART == "corner") box_corner(); -if (PART == "edge") - xrot(90) zrot(45) box_edge(l=140, jup=true, jdown=true, flx=true, wx=false, tubepass=true); +if (PART == "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") {