This commit is contained in:
2024-05-15 18:14:51 -07:00
parent 7d03cc2dcd
commit ce64cd765b
21 changed files with 1 additions and 1 deletions
+9
View File
@@ -0,0 +1,9 @@
$fn=12;
difference(){
cube([20,80,10]);
translate([20/2,80/4,50/2])
#cylinder(h=51,r=1.5,center=true);
translate([20/2,80/4*3,50/2])
#cylinder(h=51,r=1.5,center=true);
}
Binary file not shown.
+9
View File
@@ -0,0 +1,9 @@
$fn=12;
difference(){
cube([20,80,40]);
translate([20/2,80/4,40/2])
#cylinder(h=46,r=3,center=true);
translate([20/2,80/4*3,40/2])
#cylinder(h=46,r=3,center=true);
}
Binary file not shown.
+9
View File
@@ -0,0 +1,9 @@
$fn=12;
difference(){
cube([20,80,45]);
translate([20/2,80/4,45/2])
#cylinder(h=46,r=3,center=true);
translate([20/2,80/4*3,45/2])
#cylinder(h=46,r=3,center=true);
}
Binary file not shown.
+9
View File
@@ -0,0 +1,9 @@
$fn=12;
difference(){
cube([20,80,50]);
translate([20/2,80/4,50/2])
#cylinder(h=51,r=3,center=true);
translate([20/2,80/4*3,50/2])
#cylinder(h=51,r=3,center=true);
}
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,66 @@
showAssembled=0;
$fn=12;
flagHeight=15;
flagWidth=25;
flagDepth=10;
baseThickness=4;
chainHolderDiameter=4;
gutterHeight=5;
gutterWidth=4;
// slice it for printing
if (showAssembled) {
wholeModel();
} else {
translate([0,0,baseThickness]) rotate([180,0,180])
difference(){
wholeModel();
translate([-50,-50,baseThickness]) cube(100);
}
translate([-20,0,-baseThickness]) difference(){
wholeModel();
translate([-50,-50,-100+baseThickness]) cube(100);
}
}
module wholeModel(){
difference() {
union() {
translate([0,-gutterWidth/2,gutterHeight/2-(gutterHeight-1)]){
cube([flagDepth,flagWidth-gutterWidth,gutterHeight-2], center=true);
}
translate([0,-gutterWidth,(flagHeight-gutterHeight)/2]){
cube([flagDepth,flagWidth,flagHeight-gutterHeight], center=true);
}
translate([0,-(flagWidth+20)/2,baseThickness/2]){
difference(){
cube([flagDepth,20,baseThickness], center=true);
translate([0,0,0])
cylinder(h=baseThickness+1,r=2.5,center=true);
}
}
}
// screw holes
translate([0,flagWidth*.12,flagHeight*.65]) rotate([0,0,0]) cylinder(h=flagHeight/4,d=4.5, center=true);
translate([0,flagWidth*.12,flagHeight/4]) rotate([0,0,0]) cylinder(h=flagHeight+1,d=1.5, center=true);
translate([0,-flagWidth*.45,flagHeight*.65]) rotate([0,0,0]) cylinder(h=flagHeight/4,d=4.5, center=true);
translate([0,-flagWidth*.45,flagHeight/4]) rotate([0,0,0]) cylinder(h=flagHeight+1,d=1.5, center=true);
translate([0,2,baseThickness]){
chainHolder();
translate([0,chainHolderDiameter+.5,0]) chainHolder();
}
}
}
module chainHolder() {
translate([-flagDepth/3,-flagWidth/2+2,0]) rotate([0,90,0]) cylinder(h=flagDepth/2+1,d=chainHolderDiameter, center=true);
translate([flagDepth/3,-flagWidth/2+2,0]) rotate([0,90,0]) cylinder(h=flagDepth/2+1,d=chainHolderDiameter, center=true);
translate([0,-flagWidth/2+2,0]) rotate([0,90,0]) cylinder(h=flagDepth,d=1, center=true);
}
+24
View File
@@ -0,0 +1,24 @@
$fn=12;
flagHeight=35;
flagWidth=25;
baseThickness=2;
gutterHeight=5;
gutterWidth=4;
translate([0,-gutterWidth/2,gutterHeight/2-gutterHeight]){
cube([10,flagWidth-gutterWidth,gutterHeight], center=true);
}
translate([0,-gutterWidth,(flagHeight-gutterHeight)/2]){
#cube([10,flagWidth,flagHeight-gutterHeight], center=true);
}
translate([0,-(flagWidth+20)/2,2/2]){
difference(){
cube([10,20,baseThickness], center=true);
translate([0,0,0])
#cylinder(h=4,r=2.5,center=true);
}
}
Binary file not shown.
Binary file not shown.
+52
View File
@@ -0,0 +1,52 @@
switchHeight = 5;
switchWidth = 12;
switchLength = 20;
switchHoleFromFront = 9; // we assume "front" is the left here, adjust for right
switchHoleFromSide = 5.5;
switchHoleSpacing = 9;
baseWidth = 12;
baseLength = 25;
baseThickness = 2;
slotWidth = 3;
slotLength = 15;
slotCenterFromBack = 11;
slotFromSide = 6;
slotSpacing = 9;
filletSize = 3;
$fn=10;
// switch mount
difference(){
cube([switchWidth,switchLength,switchHeight]);
translate([switchHoleFromFront, switchHoleFromSide, 10/2+switchHeight/2+0.1]) {
#cylinder(h=10, r=1, center=true);
}
translate([switchHoleFromFront, switchHoleFromSide+switchHoleSpacing, 10/2+switchHeight/2+0.1]) {
#cylinder(h=10, r=1, center=true);
}
}
// base
translate([0,-baseLength,0]){
difference(){
cube([baseWidth,baseLength,baseThickness]);
translate([slotFromSide,slotCenterFromBack,baseThickness/2]){
cube([slotWidth,slotLength,baseThickness+0.2], center=true);
}
}
}
// fillet
translate([0,-filletSize,baseThickness]) {
prism(baseWidth,filletSize,filletSize);
}
module prism(l, w, h){
polyhedron(//pt 0 1 2 3 4 5
points=[[0,0,0], [l,0,0], [l,w,0], [0,w,0], [0,w,h], [l,w,h]],
faces=[[0,1,2,3],[5,4,3,2],[0,4,5,1],[0,3,4],[5,2,1]]
);
}
Binary file not shown.
+56
View File
@@ -0,0 +1,56 @@
switchHeight = 20;
switchWidth = 12;
switchLength = 20;
switchHoleFromFront = 9; // we assume "front" is the left here, adjust for right
switchHoleFromSide = 5.5;
switchHoleSpacing = 9;
baseWidth = 20;
baseLength = 25;
baseThickness = 2;
slotWidth = 2;
slotLength = 15;
slotCenterFromBack = 11;
slotFromSide = 5.5;
slotSpacing = 9;
filletSize = 5;
$fn=10;
// switch mount
difference(){
cube([switchWidth,switchLength,switchHeight]);
translate([switchHoleFromFront, switchHoleFromSide, 10/2+switchHeight/2+0.1]) {
#cylinder(h=10, r=1, center=true);
}
translate([switchHoleFromFront, switchHoleFromSide+switchHoleSpacing, 10/2+switchHeight/2+0.1]) {
#cylinder(h=10, r=1, center=true);
}
}
// base
translate([0,-baseLength,0]){
difference(){
cube([baseWidth,baseLength,baseThickness]);
translate([slotFromSide,slotCenterFromBack,baseThickness/2]){
cube([slotWidth,slotLength,baseThickness+0.2], center=true);
}
translate([slotFromSide+slotSpacing,slotCenterFromBack,baseThickness/2]){
cube([slotWidth,slotLength,baseThickness+0.2], center=true);
}
}
}
// fillet
translate([0,-filletSize,baseThickness]) {
prism(baseWidth,filletSize,filletSize);
}
module prism(l, w, h){
polyhedron(//pt 0 1 2 3 4 5
points=[[0,0,0], [l,0,0], [l,w,0], [0,w,0], [0,w,h], [l,w,h]],
faces=[[0,1,2,3],[5,4,3,2],[0,4,5,1],[0,3,4],[5,2,1]]
);
}
Binary file not shown.