/* */ include include include include include <./pc4m10.scad> /* [Box Dimensions] */ BOX_X = 1; BOX_Y = 1; BOX_Z = 1; PROFILE_SIDE = 36; JOINER_H = 20; JOINER_W = 10; // Window Thickness WIN_LIP=10; WIN_TRIM = 5; WIN_THICK = 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 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; bezoff = ps/2 - wl - trim; difference() { cuboid([pm, pm, l]); if (win_back) fwd((pm-wt)/2+.01)right(wl)cuboid([wl+.01, wt+.01, l+1]); if (win_right) left((pm-wt)/2+.01)back(wl)cuboid([wt+.01, wl+.01, l+1]); 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); } } up((l-jw)/2)zrot(45)xrot(90)right(3) cuboid([6,jw,jh], align=V_CENTER); 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 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); down(jw/2)zrot(45-180)xrot(90)joiner(h=jh, w=jw,l=3,align=FRONT, orient=ORIENT_X); } 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);