Final beam.scad being reimplemented.
This commit is contained in:
106
beam.scad
106
beam.scad
@@ -4,10 +4,17 @@ include <BOSL/constants.scad>
|
|||||||
include <BOSL/shapes.scad>
|
include <BOSL/shapes.scad>
|
||||||
include <BOSL/transforms.scad>
|
include <BOSL/transforms.scad>
|
||||||
include <BOSL/joiners.scad>
|
include <BOSL/joiners.scad>
|
||||||
|
include <./pc4m10.scad>
|
||||||
|
|
||||||
/* [Box Dimensions] */
|
/* [Box Dimensions] */
|
||||||
|
BOX_X = 1;
|
||||||
|
BOX_Y = 1;
|
||||||
|
BOX_Z = 1;
|
||||||
PROFILE_SIDE = 36;
|
PROFILE_SIDE = 36;
|
||||||
|
|
||||||
|
JOINER_H = 20;
|
||||||
|
JOINER_W = 10;
|
||||||
|
|
||||||
// Window Thickness
|
// Window Thickness
|
||||||
WIN_LIP=10;
|
WIN_LIP=10;
|
||||||
WIN_TRIM = 5;
|
WIN_TRIM = 5;
|
||||||
@@ -23,37 +30,90 @@ $fs= ($preview) ? $fs : render_fs;
|
|||||||
$fn= ($preview) ? $fn : render_fn;
|
$fn= ($preview) ? $fn : render_fn;
|
||||||
$fa= ($preview) ? $fa : render_fa;
|
$fa= ($preview) ? $fa : render_fa;
|
||||||
|
|
||||||
module profile(ps=PROFILE_SIDE, wlip=WIN_LIP, wtrim=WIN_TRIM, wt=WIN_THICK, l=200, align=V_CENTER, orient=ORIENT_Y) {
|
module beam(
|
||||||
|
ps=PROFILE_SIDE,
|
||||||
|
l=180,
|
||||||
|
wt=WIN_THICK,
|
||||||
|
wl=WIN_LIP,
|
||||||
|
trim=WIN_TRIM,
|
||||||
|
jh=JOINER_H,
|
||||||
|
jw=JOINER_W,
|
||||||
|
fl=false,
|
||||||
|
flh=WIN_LIP,
|
||||||
|
flx=0,
|
||||||
|
win_right=true,
|
||||||
|
win_back=true
|
||||||
|
) {
|
||||||
pm = ps - 2*wt;
|
pm = ps - 2*wt;
|
||||||
wx = pm - wlip;
|
bezoff = ps/2 - wl - trim;
|
||||||
lx = wx - wtrim;
|
|
||||||
pt = sqrt(2) * (ps - lx)/2;
|
|
||||||
px = ps;
|
|
||||||
echo("Thickness: ", pt, " mm");
|
|
||||||
orient_and_align([ps, l, ps], orig_orient=ORIENT_Y, orient=orient)
|
|
||||||
difference() {
|
|
||||||
cuboid([ps,l,ps], align=V_TOP+V_RIGHT);
|
|
||||||
|
|
||||||
right(pm-wlip) down(.1) cuboid([wlip+.1,l+.1,wt], align=V_TOP+V_RIGHT);
|
difference() {
|
||||||
up(pm-wlip) left(.1) cuboid([wt,l+.1,wlip+.1], align=V_TOP+V_RIGHT);
|
cuboid([pm, pm, l]);
|
||||||
color("green")right(px)yrot(45) {
|
if (win_back) fwd((pm-wt)/2+.01)right(wl)cuboid([wl+.01, wt+.01, l+1]);
|
||||||
cuboid([128,l+.1,128], align=V_TOP);
|
if (win_right) left((pm-wt)/2+.01)back(wl)cuboid([wt+.01, wl+.01, l+1]);
|
||||||
down(pt)cuboid([128,l+.1,128], align=V_BOTTOM);
|
zrot(-45)fwd(trim + ps/2 - wl-wt)cuboid([100,100,l+.01], align=V_FRONT);
|
||||||
|
difference() {
|
||||||
|
zrot(-45)back(wt)cuboid([100,100,l+.01], align=V_BACK);
|
||||||
|
if (fl) {
|
||||||
|
fwd(5)cuboid([100,10,l], align=V_FRONT);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// Max
|
|
||||||
right(pm) cuboid([pm,l+.1,128], align=V_RIGHT);
|
up((l-jw)/2)zrot(45)xrot(90)right(3) cuboid([6,jw,jh], align=V_CENTER);
|
||||||
up(pm) cuboid([128,l+.1,pm], align=V_TOP);
|
up((l-jw)/2)zrot(45)xrot(90)joiner_clear(h=jh, w=jw, orient=ORIENT_X, align=V_CENTER);
|
||||||
|
down((l-jw)/2)zrot(45)xrot(90)right(3) cuboid([6,jw,jh], align=V_CENTER);
|
||||||
|
down((l-jw)/2)zrot(45)xrot(-90)joiner_clear(h=jh, w=jw, orient=ORIENT_X, align=V_CENTER);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
up((l-jw)/2)zrot(45)xrot(90)joiner(h=jh, w=jw, l=3, orient=ORIENT_X, align=V_CENTER);
|
||||||
|
down((l-jw)/2)zrot(45)xrot(-90)joiner(h=jh, w=jw, l=3, orient=ORIENT_X, align=V_CENTER);
|
||||||
|
//#up((l+jw)/2)zrot(45-180)xrot(90)joiner(h=jh, w=jw,l=3,align=FRONT, orient=ORIENT_X);
|
||||||
|
if (fl && flx > 0) {
|
||||||
|
fwd(10)right(15)cuboid([flx, 10, l], align=V_RIGHT);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module axis() {
|
module beam_joiner(jw=JOINER_W, jh=JOINER_H) {
|
||||||
back(200)profile(align=V_FWD);
|
up(jw/2)zrot(45-180)xrot(-90)joiner(h=jh, w=jw,l=3,align=FRONT, orient=ORIENT_X);
|
||||||
right(0)profile(orient=ORIENT_Z_90, align=V_RIGHT);
|
down(jw/2)zrot(45-180)xrot(90)joiner(h=jh, w=jw,l=3,align=FRONT, orient=ORIENT_X);
|
||||||
up(200/2)profile(orient=ORIENT_X);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
profile(align=V_CENTER);
|
module beam_rear_PC4(ps=PROFILE_SIDE, wt=WIN_THICK, l=40) {
|
||||||
|
pm = ps - 2*wt;
|
||||||
|
orient_and_align([pm,pm,l], orient=ORIENT_Y) {
|
||||||
|
difference() {
|
||||||
|
back(pm/2)beam(l=l, win_back=false, fl=true, flx=10);
|
||||||
|
zspread(l=420-25, n=6)left(5)cyl(d=11, h=30, orient=ORIENT_YNEG, align=V_BACK);
|
||||||
|
}
|
||||||
|
zspread(l=420-25,n=6)fwd(2.4)left(5) {
|
||||||
|
difference() {
|
||||||
|
back(11.4)cyl(d=12, h=18, orient=ORIENT_YNEG);
|
||||||
|
back(12.8)pc4M10(orient=ORIENT_YNEG);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
right(190/2)beam_rear_PC4(l=464-12);
|
||||||
|
left(190/2)up(PROFILE_SIDE/2-WIN_THICK)xrot(90)beam(l=464-12, fl=true, win_back=false, flx=10);
|
||||||
|
up(PROFILE_SIDE/2-WIN_THICK) {
|
||||||
|
fwd(PROFILE_SIDE/2 + 464/2)zrot(90)xrot(90)beam(l=190-PROFILE_SIDE-16, win_back=false, fl=true, flx=8);
|
||||||
|
back(PROFILE_SIDE/2 + 464/2)zrot(-90)xrot(90)beam(l=190-PROFILE_SIDE-16, win_back=false, fl=true, flx=8);
|
||||||
|
}
|
||||||
|
// Vertical Front Right.
|
||||||
|
up((190+PROFILE_SIDE-16)/2)fwd(PROFILE_SIDE/2 +464/2)left(190/2)zrot(0)yrot(0)beam(l=190-PROFILE_SIDE-16, win_back=true, fl=false, flx=8);
|
||||||
|
|
||||||
|
//%down(1) cuboid([10,530,50]);
|
||||||
|
yspread(l=420-25, n=6) up(11+3 + 27/2+10)%cyl(d=190, h=65, orient=ORIENT_Y, align=V_TOP);
|
||||||
|
%up(11) cuboid([190-PROFILE_SIDE/2,464+PROFILE_SIDE/2, 2]);
|
||||||
|
%up(11+1+3+27/2) fwd(50) xspread(l=100) cyl(d=22, h=8 , orient=ORIENT_Y, align=V_TOP);
|
||||||
|
//up(15) xspread(l=60) %cyl(d=8, h=500 , orient=ORIENT_Y);
|
||||||
|
//beam(l=30, win_back=false);
|
||||||
|
//down((156+20)/2)
|
||||||
|
//yrot(-90)zrot(-45)color("gold")beam(l=40);
|
||||||
|
//yrot(90)zrot(-45)beam_joiner();
|
||||||
|
up(PROFILE_SIDE/2)left(PROFILE_SIDE+51)fwd(PROFILE_SIDE+(416)/2)cuboid([PROFILE_SIDE, PROFILE_SIDE, PROFILE_SIDE]);
|
||||||
|
|
||||||
|
//profile(align=V_CENTER);
|
||||||
|
|
||||||
//fwd(20)left(20)joiner(h=20, w=8, l=3);
|
//fwd(20)left(20)joiner(h=20, w=8, l=3);
|
||||||
|
|||||||
Reference in New Issue
Block a user