63 lines
1.8 KiB
OpenSCAD
63 lines
1.8 KiB
OpenSCAD
|
showAssembled=1;
|
||
|
|
||
|
$fn=20;
|
||
|
|
||
|
flagHeight=20;
|
||
|
flagWidth=29;
|
||
|
flagDepth=10;
|
||
|
flagThickness=1.5;
|
||
|
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);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
// thin flag
|
||
|
/*translate([-flagThickness,flagWidth*.25,(flagHeight-gutterHeight)/2-1]){
|
||
|
cube([flagDepth,flagWidth,flagHeight], center=true);
|
||
|
}*/
|
||
|
// screw hole
|
||
|
translate([0,-flagWidth*.45,flagHeight/2]) rotate([0,0,0]) cylinder(h=flagHeight+1,d=2.3, center=true);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
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);
|
||
|
}
|