Reimplementation of beam
Beam and Corner working, needs tweaks. TODO: Cleanup new size. fix trim size..too big.
This commit is contained in:
163
box.scad
Normal file
163
box.scad
Normal file
@@ -0,0 +1,163 @@
|
||||
/* */
|
||||
|
||||
include <BOSL/constants.scad>
|
||||
include <BOSL/shapes.scad>
|
||||
include <BOSL/transforms.scad>
|
||||
include <BOSL/joiners.scad>
|
||||
include <./pc4m10.scad>
|
||||
|
||||
/* [Dimensions] */
|
||||
|
||||
PROFILE_SIZE = 38;
|
||||
|
||||
BOX_X = 530;
|
||||
BOX_Y = 210;
|
||||
BOX_Z = 210;
|
||||
|
||||
WIN_LIP = 10;
|
||||
WIN_TRIM = 5;
|
||||
WIN_THICK = 3;
|
||||
|
||||
FLOOR_LIP = 10;
|
||||
FLOOR_THICK = 5;
|
||||
|
||||
JOINER_H = 18;
|
||||
JOINER_W = 10;
|
||||
|
||||
/* [Render Options] */
|
||||
render_fs=.4;
|
||||
render_fn=0;
|
||||
render_fa=.4;
|
||||
|
||||
// Set Render Options
|
||||
$fs= ($preview) ? $fs : render_fs;
|
||||
$fn= ($preview) ? $fn : render_fn;
|
||||
$fa= ($preview) ? $fa : render_fa;
|
||||
|
||||
/***
|
||||
|
||||
sides:
|
||||
V_TOP, [0,0,1] : Top Middle Brace
|
||||
V_ALLPOS, [1,1,1] POS Corner
|
||||
V_TOPLEFT, [-1,0,1] : Left Top Edge
|
||||
|
||||
***/
|
||||
|
||||
module dryboxNG(
|
||||
ps = PROFILE_SIZE,
|
||||
wl = WIN_LIP,
|
||||
wt = WIN_THICK,
|
||||
wtr = WIN_TRIM,
|
||||
jh = JOINER_H,
|
||||
jw = JOINER_W,
|
||||
walls = [],
|
||||
sides = [],
|
||||
windows = EDGES_NONE
|
||||
|
||||
|
||||
) {
|
||||
cuboid([ps,ps,ps]);
|
||||
}
|
||||
|
||||
//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) {
|
||||
gon=concat(
|
||||
[[0,ps-wl-wt-wtr]],
|
||||
// Y Window
|
||||
wy ? [[0,ps-wl-wt],[wt,ps-wl-wt],[wt,ps-wt]]
|
||||
: [[0,ps-wt]],
|
||||
// inner cut
|
||||
[[2*wt,ps-wt]],
|
||||
flx ? [[ps-wt-fl,2*wt+fl],[ps-wt-fl,2*wt+fl-ft],[ps,2*wt+fl-ft]]
|
||||
: [[ps-wt,2*wt]],
|
||||
// X Window
|
||||
wx ? [[ps-wt,wt],[ps-wl-wt,wt],[ps-wl-wt,0]]
|
||||
: [[ps-wt,0]],
|
||||
[[ps-wl-wt-wtr,0]]
|
||||
);
|
||||
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) {
|
||||
orient_and_align([ps,ps,l], orient=orient, align=align, orig_orient=ORIENT_Z) {
|
||||
difference() {
|
||||
linear_extrude(height=l, center=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 (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 (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 (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);
|
||||
}
|
||||
}
|
||||
|
||||
module box_corner(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)
|
||||
back((PROFILE_SIZE-l)/2)left((PROFILE_SIZE-l)/2)down((PROFILE_SIZE-l)/2) {
|
||||
intersection() {
|
||||
fwd(PROFILE_SIZE/2)right(PROFILE_SIZE/2)box_edge(l=PROFILE_SIZE, orient=ORIENT_Y, align=V_RIGHT, flx=zfl, wx=zw);
|
||||
right(PROFILE_SIZE)fwd(PROFILE_SIZE/2)box_edge(l=PROFILE_SIZE, orient=ORIENT_X, align=V_FRONT, 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);
|
||||
}
|
||||
difference() {
|
||||
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);
|
||||
#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);
|
||||
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);
|
||||
//up(PROFILE_SIZE/2+10/2-wt)right((PROFILE_SIZE)/2 + 10/2-wt) yrot(45) boxjoiner_clear(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_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) {
|
||||
// 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) back(ex) left(ex) box_corner(zfl=false, zw=true,align=V_UP+V_BACK+V_LEFT, orient=ORIENT_ZNEG_90);
|
||||
up(ex) back(ex) right(ex) box_corner(zfl=false, zw=true, align=V_UP+V_BACK+V_RIGHT, orient=ORIENT_ZNEG_180);
|
||||
up(ex) fwd(ex) right(ex) box_corner(zfl=false,zw=true,align=V_UP+V_FRONT+V_RIGHT, orient=ORIENT_ZNEG_270);
|
||||
// bottom
|
||||
down(ex) fwd(ex) right(ex) box_corner(align=V_DOWN+V_FRONT+V_RIGHT, orient=ORIENT_Z);
|
||||
down(ex) back(ex) right(ex) box_corner(align=V_DOWN+V_BACK+V_RIGHT, orient=ORIENT_Z_90);
|
||||
down(ex) back(ex) left(ex) box_corner(align=V_DOWN+V_BACK+V_LEFT, orient=ORIENT_Z_180);
|
||||
down(ex) fwd(ex) left(ex) box_corner(align=V_DOWN+V_FRONT+V_LEFT, orient=ORIENT_Z_270);
|
||||
}
|
||||
|
||||
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)
|
||||
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) {
|
||||
orient_and_align([jw,inset,jh],orient=orient, align=align) fwd() {
|
||||
cuboid([jw,inset+slop,jh], align=V_BACK);
|
||||
joiner_clear(h=jh, w=jw);
|
||||
}
|
||||
}
|
||||
|
||||
//box_all_corners(ex=30);
|
||||
box_corner();
|
||||
//xrot(90)zrot(45)box_edge(l=25, jup=true, jdown=true);
|
||||
//boxjoiner(inset=5);
|
||||
|
||||
// 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);
|
||||
54
pc4m10.scad
Normal file
54
pc4m10.scad
Normal file
@@ -0,0 +1,54 @@
|
||||
/* */
|
||||
|
||||
include <BOSL/shapes.scad>
|
||||
include <BOSL/transforms.scad>
|
||||
include <BOSL/threading.scad>
|
||||
|
||||
SEAT_DEPTH=3.50;
|
||||
SEAT_DIAMETER=6.30;
|
||||
SEAT_HOLE=3;
|
||||
|
||||
/* [Render Options] */
|
||||
render_fs=.4;
|
||||
render_fn=0;
|
||||
render_fa=.4;
|
||||
|
||||
// Set Render Options
|
||||
$fs= ($preview) ? $fs : render_fs;
|
||||
$fn= ($preview) ? $fn : render_fn;
|
||||
$fa= ($preview) ? $fa : render_fa;
|
||||
|
||||
module pc4M10_inner(back_h=13, back_d = 12, orient=ORIENT_Z, align=V_CENTER) {
|
||||
orient_and_align([back_d,back_d,5.82+back_h], orig_align=V_BOTTOM, orient=orient, align=align) {
|
||||
difference() {
|
||||
union() {
|
||||
threaded_rod(
|
||||
d=9.728,
|
||||
l=5.81,
|
||||
pitch=.907,
|
||||
internal=true,
|
||||
align=V_BOTTOM
|
||||
);
|
||||
}
|
||||
down(5.82)difference() {
|
||||
cyl(d=SEAT_DIAMETER, h=SEAT_DEPTH, align=V_TOP);
|
||||
cyl(d=SEAT_HOLE, h=SEAT_DEPTH+.01, align=V_TOP);
|
||||
}
|
||||
}
|
||||
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) {
|
||||
difference() {
|
||||
up(.01)cyl(d=cd,h=18.8, align=V_TOP);
|
||||
pc4M10_inner(align=V_TOP);
|
||||
}
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
//pc4M10_clear(align=V_BOTTOM);
|
||||
//pc4M10(align=V_BOTTOM);
|
||||
|
||||
Reference in New Issue
Block a user