//CUSTOMISABLE SIGN SEQUIN SUPPORT FRAME //BIG CLIVE 27/5/2020 //If building with a raft, it can be left on. $fn=40; //You can adjust these 8 variables. width=4; //number of horizontal sequins height=4; //number of vertical sequins diameter=20; //sequin diameter gap=2; //gap between sequin edges spacer=6; //height of sequin spacers pin=1; //diameter of sequin pin web=3; //web width thickness=2; //web depth //Make sure you leave the "=" and ";" intact. //Don't change the variables below! sequin=diameter+gap; columns=width-1; rows=height-1; s=sequin/2; w=web/2; c=columns-1; r=rows-1; t=thickness-1; difference(){ union(){ //vertical strips for (x=[0:columns]){ translate([x*sequin,0,0]) cube([web,rows*sequin+web,thickness]); } //horizontal strips for (y=[0:rows]){ translate([0,y*sequin,0]) cube([columns*sequin+web,web,thickness]); } //sequin standoffs for (x=[0:columns]){ for (y=[0:rows]){ translate([x*sequin+w,y*sequin+w,t]) cylinder(h=spacer+1,d1=3,d2=3); } } //mounting hole plate translate([s+w,w,0]) cylinder(h=thickness,d1=10,d2=10); translate([c*sequin+s+w,w,0]) cylinder(h=thickness,d1=10,d2=10); translate([s+w,rows*sequin+w,0]) cylinder(h=thickness,d1=10,d2=10); translate([c*sequin+s+w,rows*sequin+w,0]) cylinder(h=thickness,d1=10,d2=10); } //hollows in standoffs for pins for (x=[0:columns]){ for (y=[0:rows]){ translate([x*sequin+(web/2),y*sequin+(web/2),t]) cylinder(h=spacer+2,d1=pin,d2=pin); } } //screw holes in mounting plates translate([s+w,w,-1]) cylinder(h=thickness+2,d1=4,d2=4); translate([c*sequin+s+w,w,-1]) cylinder(h=thickness+2,d1=4,d2=4); translate([s+w,rows*sequin+w,-1]) cylinder(h=thickness+2,d1=4,d2=4); translate([c*sequin+s+w,rows*sequin+w,-1]) cylinder(h=thickness+2,d1=4,d2=4); } SequinSupportFrame.scad 2 kB {{tag>[OpenSCAD 3D_Printing Clive_Listings]}}