diff --git a/bookends/bookend modern v1.stl b/bookends/bookend modern v1.stl new file mode 100644 index 0000000..41a9a06 Binary files /dev/null and b/bookends/bookend modern v1.stl differ diff --git a/bookends/bookend_generative_design v4.stl b/bookends/bookend_generative_design v4.stl new file mode 100644 index 0000000..8a77d7c Binary files /dev/null and b/bookends/bookend_generative_design v4.stl differ diff --git a/bookends/bookend_simple_v7.stl b/bookends/bookend_simple_v7.stl new file mode 100644 index 0000000..001b5ac Binary files /dev/null and b/bookends/bookend_simple_v7.stl differ diff --git a/bookends/brooklyn-bridge-bookend-model_files/449895-brooklyn-bridge-bookend-6983cc5e-9e5e-4c2d-bdd4-7bf81cab80e9.pdf b/bookends/brooklyn-bridge-bookend-model_files/449895-brooklyn-bridge-bookend-6983cc5e-9e5e-4c2d-bdd4-7bf81cab80e9.pdf new file mode 100644 index 0000000..6d65b02 Binary files /dev/null and b/bookends/brooklyn-bridge-bookend-model_files/449895-brooklyn-bridge-bookend-6983cc5e-9e5e-4c2d-bdd4-7bf81cab80e9.pdf differ diff --git a/bookends/brooklyn-bridge-bookend-model_files/Bridge Anchorage.3mf b/bookends/brooklyn-bridge-bookend-model_files/Bridge Anchorage.3mf new file mode 100644 index 0000000..8d6d509 Binary files /dev/null and b/bookends/brooklyn-bridge-bookend-model_files/Bridge Anchorage.3mf differ diff --git a/bookends/brooklyn-bridge-bookend-model_files/Bridge Cables.3mf b/bookends/brooklyn-bridge-bookend-model_files/Bridge Cables.3mf new file mode 100644 index 0000000..57773d6 Binary files /dev/null and b/bookends/brooklyn-bridge-bookend-model_files/Bridge Cables.3mf differ diff --git a/bookends/brooklyn-bridge-bookend-model_files/Bridge Tower.3mf b/bookends/brooklyn-bridge-bookend-model_files/Bridge Tower.3mf new file mode 100644 index 0000000..29172f1 Binary files /dev/null and b/bookends/brooklyn-bridge-bookend-model_files/Bridge Tower.3mf differ diff --git a/bookends/hdd_end.stl b/bookends/hdd_end.stl new file mode 100644 index 0000000..efd0a57 Binary files /dev/null and b/bookends/hdd_end.stl differ diff --git a/bookends/octahedroflake-bookend-edition-vase-mode-print-model_files/453867-octahedroflake-bookend-edition-vase-mode-print-a6a39e24-6dbe-4886-988a-0fbb0981e81a.pdf b/bookends/octahedroflake-bookend-edition-vase-mode-print-model_files/453867-octahedroflake-bookend-edition-vase-mode-print-a6a39e24-6dbe-4886-988a-0fbb0981e81a.pdf new file mode 100644 index 0000000..cc934ac Binary files /dev/null and b/bookends/octahedroflake-bookend-edition-vase-mode-print-model_files/453867-octahedroflake-bookend-edition-vase-mode-print-a6a39e24-6dbe-4886-988a-0fbb0981e81a.pdf differ diff --git a/bookends/octahedroflake-bookend-edition-vase-mode-print-model_files/Octahedroflake-book-end.3mf b/bookends/octahedroflake-bookend-edition-vase-mode-print-model_files/Octahedroflake-book-end.3mf new file mode 100644 index 0000000..9310975 Binary files /dev/null and b/bookends/octahedroflake-bookend-edition-vase-mode-print-model_files/Octahedroflake-book-end.3mf differ diff --git a/bookends/octahedroflake-bookend-edition-vase-mode-print-model_files/Octahedroflake-book-end.stl b/bookends/octahedroflake-bookend-edition-vase-mode-print-model_files/Octahedroflake-book-end.stl new file mode 100644 index 0000000..21d22cc Binary files /dev/null and b/bookends/octahedroflake-bookend-edition-vase-mode-print-model_files/Octahedroflake-book-end.stl differ diff --git a/bookends/pantograph-bookend-model_files/452066-pantograph-bookend-d6b83c92-0d6d-405c-82f0-090a30438825.pdf b/bookends/pantograph-bookend-model_files/452066-pantograph-bookend-d6b83c92-0d6d-405c-82f0-090a30438825.pdf new file mode 100644 index 0000000..9d39ce1 Binary files /dev/null and b/bookends/pantograph-bookend-model_files/452066-pantograph-bookend-d6b83c92-0d6d-405c-82f0-090a30438825.pdf differ diff --git a/bookends/pantograph-bookend-model_files/bookend-10-bars.stl b/bookends/pantograph-bookend-model_files/bookend-10-bars.stl new file mode 100644 index 0000000..8682044 Binary files /dev/null and b/bookends/pantograph-bookend-model_files/bookend-10-bars.stl differ diff --git a/bookends/pantograph-bookend-model_files/bookend-17-pins.stl b/bookends/pantograph-bookend-model_files/bookend-17-pins.stl new file mode 100644 index 0000000..6299b82 Binary files /dev/null and b/bookends/pantograph-bookend-model_files/bookend-17-pins.stl differ diff --git a/bookends/pantograph-bookend-model_files/bookend-17-thread-pins.stl b/bookends/pantograph-bookend-model_files/bookend-17-thread-pins.stl new file mode 100644 index 0000000..bcddac4 Binary files /dev/null and b/bookends/pantograph-bookend-model_files/bookend-17-thread-pins.stl differ diff --git a/bookends/pantograph-bookend-model_files/bookend-bar.stl b/bookends/pantograph-bookend-model_files/bookend-bar.stl new file mode 100644 index 0000000..75ee8f0 Binary files /dev/null and b/bookends/pantograph-bookend-model_files/bookend-bar.stl differ diff --git a/bookends/pantograph-bookend-model_files/bookend-left-wall.stl b/bookends/pantograph-bookend-model_files/bookend-left-wall.stl new file mode 100644 index 0000000..474f819 Binary files /dev/null and b/bookends/pantograph-bookend-model_files/bookend-left-wall.stl differ diff --git a/bookends/pantograph-bookend-model_files/bookend-long-pin.stl b/bookends/pantograph-bookend-model_files/bookend-long-pin.stl new file mode 100644 index 0000000..63a4d8f Binary files /dev/null and b/bookends/pantograph-bookend-model_files/bookend-long-pin.stl differ diff --git a/bookends/pantograph-bookend-model_files/bookend-long-thread-pin.stl b/bookends/pantograph-bookend-model_files/bookend-long-thread-pin.stl new file mode 100644 index 0000000..934c748 Binary files /dev/null and b/bookends/pantograph-bookend-model_files/bookend-long-thread-pin.stl differ diff --git a/bookends/pantograph-bookend-model_files/bookend-right-wall.stl b/bookends/pantograph-bookend-model_files/bookend-right-wall.stl new file mode 100644 index 0000000..fdfca99 Binary files /dev/null and b/bookends/pantograph-bookend-model_files/bookend-right-wall.stl differ diff --git a/bookends/pantograph-bookend-model_files/bookend-short-pin.stl b/bookends/pantograph-bookend-model_files/bookend-short-pin.stl new file mode 100644 index 0000000..e8e1f6a Binary files /dev/null and b/bookends/pantograph-bookend-model_files/bookend-short-pin.stl differ diff --git a/bookends/pantograph-bookend-model_files/bookend-short-thread-pin.stl b/bookends/pantograph-bookend-model_files/bookend-short-thread-pin.stl new file mode 100644 index 0000000..4cdc726 Binary files /dev/null and b/bookends/pantograph-bookend-model_files/bookend-short-thread-pin.stl differ diff --git a/bookends/pantograph-bookend-model_files/bookend-spacer.stl b/bookends/pantograph-bookend-model_files/bookend-spacer.stl new file mode 100644 index 0000000..d6d0072 Binary files /dev/null and b/bookends/pantograph-bookend-model_files/bookend-spacer.stl differ diff --git a/bookends/pantograph-bookend-model_files/bookend.scad b/bookends/pantograph-bookend-model_files/bookend.scad new file mode 100644 index 0000000..6d4882f --- /dev/null +++ b/bookends/pantograph-bookend-model_files/bookend.scad @@ -0,0 +1,185 @@ +/* PANTOGRAPH BOOKEND */ + +side_width = 100; +side_height = 150; +thickness = 2; +bar_width = 15; +hole_diameter = bar_width/2; +thread_tolerance = 0.05; +threaded_pins = true; + +translate([0, -bar_width, 0]) + left_wall2(); +right_wall(); +//bars(10); +//pins(17); + + + +/******************************************************************/ +include +$fn=180; +max=1000; //some high number for diff purposes +hd=hole_diameter; +bw=bar_width; +sw=side_width; +sh=side_height; +t=thickness; +tr=0.85; + +module pins(count) { + //2 long pins + translate([-3*bw,bw,0]) pin(true); + translate([-3*bw,2*bw,0]) pin(true); + + //rest are short pins + for(i=[3:count]) + translate([-3*bw,bw*i,0]) pin(false); + + //spacers + for(i=[-1:2:1]) + translate([-3*bw+i*bw/2*1.1,0,t/2]) spacer(); +} + +module spacer() { + difference() { + cylinder(h=t, d=bw, center=true); + cylinder(h=max, d=hd, center=true); + } +} + +module pin(long) { + height = (long?3:2)*t+1; + translate([-bw/2,0,0]) pin_male(height); + translate([bw/2,0,0]) pin_female(height); +} + +module pin_female(height) { + if(threaded_pins) { + translate([0,0,.5]) cylinder(h=1, r=bw/2.5, center=true, $fn=6); + translate([0,0,1]) + difference() { + translate([0,0,height/2]) cylinder(h=height, d=hd*.95, center=true); + translate([0,0, height+1]) rotate([180,0,0]) screw_thread(hd*tr, 3, 65, height+1, PI/8, 1); + } + } + else { + difference() { + translate([0,0,1.5]) cylinder(h=3, r=bw/2.5, center=true); + translate([0,0,3]) cylinder(h=4, d=hd*.97, center=true); + } + } +} + +module pin_male(height) { + if(threaded_pins) { + translate([0,0,.5]) cylinder(h=1, r=bw/2.5, center=true, $fn=6); + translate([0,0,1]) screw_thread(hd*(tr-thread_tolerance), 3, 65, height, PI/8, 1); + } + else { + translate([0,0,.5]) cylinder(h=1, r=bw/2.5, center=true); + translate([0,0,(height+2)/2+1]) cylinder(h=height+2, d=hd*.95, center=true); + } + +} + +module bars(count) { + for(i=[1:count]) + translate([bw+1.2*bw*i,0,0]) bar(); +} + +module bar() { + difference() { + plate(bw, sh-bw); + translate([0, sh/2-bw,0]) + difference() { + translate([0,max/2,0]) cube([max,max,10], center=true); + cylinder(h=max, d=bar_width, center=true); + } + translate([0, -sh/2+bw,0]) + difference() { + translate([0,-max/2,0]) cube([max,max,10], center=true); + cylinder(h=max, d=bar_width, center=true); + } + translate([0,(sh-2*bw)/2,0]) cylinder(h=max, d=hd, center=true); + translate([0,0,0]) cylinder(h=max, d=hd, center=true); + translate([0,-(sh-2*bw)/2,0]) cylinder(h=max, d=hd, center=true); + } +} + +module right_wall() { + translate([-10,0,0]) mirror([1,0,0]) left_wall(); +} + +module left_wall() { + //side wall + translate([0,0,side_width/2]) + rotate([0,270,0]) + difference() { + plate(side_width, side_height); + translate([-(side_height-side_width)/2,0,0]) + difference() { + translate([500,500,0]) cube([1000,1000,10], center=true); + cylinder(h=1000, d=side_height, center=true); + } + } + + //back + translate([bw/2,0,0]) + difference() { + plate(bw, sh); + translate([0, (side_height - bar_width)/2,0]) + difference() { + translate([max/2,max/2,0]) cube([max,max,10], center=true); + cylinder(h=max, d=bar_width, center=true); + } + translate([0,(sh-bw)/2,0]) cylinder(h=max, d=hd, center=true); + translate([0,(sh-bw)/2-bw,0]) cylinder(h=max, d=hd, center=true); + translate([0,-bw/2,0]) cube([hd, sh-2*bw, 100],center=true); + translate([0,-(sh-bw)/2,0]) cylinder(h=max, d=hd, center=true); + } + + //bottom + translate([bar_width/2,-side_height/2+thickness,side_width/2]) + rotate([90,0,0]) + plate(bar_width, side_width); +} + +module left_wall2() { + //side wall + translate([0,0,side_width/2]) + rotate([0,270,0]) + difference() { + plate(side_width, side_height); + translate([-(side_height-side_width)/2,0,0]) + difference() { + translate([500,500,0]) cube([1000,1000,10], center=true); + cylinder(h=1000, d=side_height, center=true); + } + } + + //back + translate([bw/2,0,0]) + difference() { + plate(bw, sh); + translate([0, (side_height - bar_width)/2,0]) + difference() { + translate([max/2,max/2,0]) cube([max,max,10], center=true); + cylinder(h=max, d=bar_width, center=true); + } + translate([0,(sh-bw)/2,0]) cylinder(h=max, d=hd, center=true); + translate([0,(sh-bw)/2-bw,0]) cylinder(h=max, d=hd, center=true); + translate([0,-bw/2,0]) cube([hd, sh-2*bw, 100],center=true); + translate([0,-(sh-bw)/2,0]) cylinder(h=max, d=hd, center=true); + } + + //bottom + translate([-bar_width,-side_height/2+thickness,side_width/2]) + rotate([90,0,0]) + plate(bar_width * 4, side_width); +} + + +module plate(width,height) { + translate([0,0,thickness/2]) cube([width, height, thickness], true); +} \ No newline at end of file diff --git a/bookends/pantograph-bookend-model_files/bookend_pantograph_walls.stl b/bookends/pantograph-bookend-model_files/bookend_pantograph_walls.stl new file mode 100644 index 0000000..00e4a7a Binary files /dev/null and b/bookends/pantograph-bookend-model_files/bookend_pantograph_walls.stl differ diff --git a/bookends/pantograph-bookend-model_files/polyScrewThread_r1.scad b/bookends/pantograph-bookend-model_files/polyScrewThread_r1.scad new file mode 100644 index 0000000..7599185 --- /dev/null +++ b/bookends/pantograph-bookend-model_files/polyScrewThread_r1.scad @@ -0,0 +1,233 @@ +/* + * polyScrewThread_r1.scad by aubenc @ Thingiverse + * + * This script contains the library modules that can be used to generate + * threaded rods, screws and nuts. + * + * http://www.thingiverse.com/thing:8796 + * + * CC Public Domain + */ + +module screw_thread(od,st,lf0,lt,rs,cs) +{ + or=od/2; + ir=or-st/2*cos(lf0)/sin(lf0); + pf=2*PI*or; + sn=floor(pf/rs); + lfxy=360/sn; + ttn=round(lt/st+1); + zt=st/sn; + + intersection() + { + if (cs >= -1) + { + thread_shape(cs,lt,or,ir,sn,st); + } + + full_thread(ttn,st,sn,zt,lfxy,or,ir); + } +} + +module hex_nut(df,hg,sth,clf,cod,crs) +{ + + difference() + { + hex_head(hg,df); + + hex_countersink_ends(sth/2,cod,clf,crs,hg); + + screw_thread(cod,sth,clf,hg,crs,-2); + } +} + + +module hex_screw(od,st,lf0,lt,rs,cs,df,hg,ntl,ntd) +{ + ntr=od/2-(st/2)*cos(lf0)/sin(lf0); + + union() + { + hex_head(hg,df); + + translate([0,0,hg]) + if ( ntl == 0 ) + { + cylinder(h=0.01, r=ntr, center=true); + } + else + { + if ( ntd == -1 ) + { + cylinder(h=ntl+0.01, r=ntr, $fn=floor(od*PI/rs), center=false); + } + else if ( ntd == 0 ) + { + union() + { + cylinder(h=ntl-st/2, + r=od/2, $fn=floor(od*PI/rs), center=false); + + translate([0,0,ntl-st/2]) + cylinder(h=st/2, + r1=od/2, r2=ntr, + $fn=floor(od*PI/rs), center=false); + } + } + else + { + cylinder(h=ntl, r=ntd/2, $fn=ntd*PI/rs, center=false); + } + } + + translate([0,0,ntl+hg]) screw_thread(od,st,lf0,lt,rs,cs); + } +} + +module hex_screw_0(od,st,lf0,lt,rs,cs,df,hg,ntl,ntd) +{ + ntr=od/2-(st/2)*cos(lf0)/sin(lf0); + + union() + { + hex_head_0(hg,df); + + translate([0,0,hg]) + if ( ntl == 0 ) + { + cylinder(h=0.01, r=ntr, center=true); + } + else + { + if ( ntd == -1 ) + { + cylinder(h=ntl+0.01, r=ntr, $fn=floor(od*PI/rs), center=false); + } + else if ( ntd == 0 ) + { + union() + { + cylinder(h=ntl-st/2, + r=od/2, $fn=floor(od*PI/rs), center=false); + + translate([0,0,ntl-st/2]) + cylinder(h=st/2, + r1=od/2, r2=ntr, + $fn=floor(od*PI/rs), center=false); + } + } + else + { + cylinder(h=ntl, r=ntd/2, $fn=ntd*PI/rs, center=false); + } + } + + translate([0,0,ntl+hg]) screw_thread(od,st,lf0,lt,rs,cs); + } +} + +module thread_shape(cs,lt,or,ir,sn,st) +{ + if ( cs == 0 ) + { + cylinder(h=lt, r=or, $fn=sn, center=false); + } + else + { + union() + { + translate([0,0,st/2]) + cylinder(h=lt-st+0.005, r=or, $fn=sn, center=false); + + if ( cs == -1 || cs == 2 ) + { + cylinder(h=st/2, r1=ir, r2=or, $fn=sn, center=false); + } + else + { + cylinder(h=st/2, r=or, $fn=sn, center=false); + } + + translate([0,0,lt-st/2]) + if ( cs == 1 || cs == 2 ) + { + cylinder(h=st/2, r1=or, r2=ir, $fn=sn, center=false); + } + else + { + cylinder(h=st/2, r=or, $fn=sn, center=false); + } + } + } +} + +module full_thread(ttn,st,sn,zt,lfxy,or,ir) +{ + if(ir >= 0.2) + { + for(i=[0:ttn-1]) + { + for(j=[0:sn-1]) + assign( pt = [ [0, 0, i*st-st ], + [ir*cos(j*lfxy), ir*sin(j*lfxy), i*st+j*zt-st ], + [ir*cos((j+1)*lfxy), ir*sin((j+1)*lfxy), i*st+(j+1)*zt-st ], + [0,0,i*st], + [or*cos(j*lfxy), or*sin(j*lfxy), i*st+j*zt-st/2 ], + [or*cos((j+1)*lfxy), or*sin((j+1)*lfxy), i*st+(j+1)*zt-st/2 ], + [ir*cos(j*lfxy), ir*sin(j*lfxy), i*st+j*zt ], + [ir*cos((j+1)*lfxy), ir*sin((j+1)*lfxy), i*st+(j+1)*zt ], + [0, 0, i*st+st ] ]) + { + polyhedron(points=pt, + triangles=[ [1,0,3],[1,3,6],[6,3,8],[1,6,4], + [0,1,2],[1,4,2],[2,4,5],[5,4,6],[5,6,7],[7,6,8], + [7,8,3],[0,2,3],[3,2,7],[7,2,5] ]); + } + } + } + else + { + echo("Step Degrees too agresive, the thread will not be made!!"); + echo("Try to increase de value for the degrees and/or..."); + echo(" decrease the pitch value and/or..."); + echo(" increase the outer diameter value."); + } +} + +module hex_head(hg,df) +{ + rd0=df/2/sin(60); + x0=0; x1=df/2; x2=x1+hg/2; + y0=0; y1=hg/2; y2=hg; + + intersection() + { + cylinder(h=hg, r=rd0, $fn=6, center=false); + + rotate_extrude(convexity=10, $fn=6*round(df*PI/6/0.5)) + polygon([ [x0,y0],[x1,y0],[x2,y1],[x1,y2],[x0,y2] ]); + } +} + +module hex_head_0(hg,df) +{ + cylinder(h=hg, r=df/2/sin(60), $fn=6, center=false); +} + +module hex_countersink_ends(chg,cod,clf,crs,hg) +{ + translate([0,0,-0.1]) + cylinder(h=chg+0.01, + r1=cod/2, + r2=cod/2-(chg+0.1)*cos(clf)/sin(clf), + $fn=floor(cod*PI/crs), center=false); + + translate([0,0,hg-chg+0.1]) + cylinder(h=chg+0.01, + r1=cod/2-(chg+0.1)*cos(clf)/sin(clf), + r2=cod/2, + $fn=floor(cod*PI/crs), center=false); +} +