Initial commit
This commit is contained in:
commit
08d340d4ea
9
10mm-block.scad
Normal file
9
10mm-block.scad
Normal 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);
|
||||||
|
}
|
BIN
10mm-block.stl
Normal file
BIN
10mm-block.stl
Normal file
Binary file not shown.
9
40mm-block.scad
Normal file
9
40mm-block.scad
Normal 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);
|
||||||
|
}
|
BIN
40mm-block.stl
Normal file
BIN
40mm-block.stl
Normal file
Binary file not shown.
9
45mm-block.scad
Normal file
9
45mm-block.scad
Normal 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);
|
||||||
|
}
|
BIN
45mm-block.stl
Normal file
BIN
45mm-block.stl
Normal file
Binary file not shown.
9
50mm-block.scad
Normal file
9
50mm-block.scad
Normal 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);
|
||||||
|
}
|
BIN
50mm-block.stl
Normal file
BIN
50mm-block.stl
Normal file
Binary file not shown.
BIN
BOSL2-master.zip
Normal file
BIN
BOSL2-master.zip
Normal file
Binary file not shown.
BIN
Futaba_3001_Servo_Mount.stl
Normal file
BIN
Futaba_3001_Servo_Mount.stl
Normal file
Binary file not shown.
254
LBracket_Parametric_rev9.scad
Normal file
254
LBracket_Parametric_rev9.scad
Normal file
|
@ -0,0 +1,254 @@
|
||||||
|
//Parametric L Bracket
|
||||||
|
//You can make this any length, Width, Height & Thickness you want
|
||||||
|
//You can also have 1, 2 or 4 screws on each leg of the L
|
||||||
|
//8/19/2015 By: David Bunch
|
||||||
|
//
|
||||||
|
//Revised 8/20/2015 to make rounded ends instead of chamfers
|
||||||
|
// and more flexibility on screws
|
||||||
|
//CUSTOMIZER VARIABLES
|
||||||
|
|
||||||
|
/* [Basic Dimensions] */
|
||||||
|
|
||||||
|
//1. Length of Part along 1st L
|
||||||
|
Len = 1.75*25.4; //[25:1:75]
|
||||||
|
|
||||||
|
//2. Width of L along 2nd L
|
||||||
|
Wid = 0.65*25.4; //[25:1:75]
|
||||||
|
|
||||||
|
//3. Height of L Bracket
|
||||||
|
Ht = 1*25.4; //[20:1:75]
|
||||||
|
|
||||||
|
//4. Thickness of Leg along X-Axis
|
||||||
|
Thk_X = 0.25*25.4; //[2:.5:12]
|
||||||
|
|
||||||
|
//5. Thickness of Leg along Y-axis
|
||||||
|
Thk_Y = 0.5*25.4; //[2:.5:12]
|
||||||
|
|
||||||
|
//6. Weld Diameter at L junction
|
||||||
|
WeldDia = 0.5*25.4; //[2:.5:12]
|
||||||
|
|
||||||
|
//7. Round Corners (0 = No, 1 = Yes)
|
||||||
|
RndON = 1; //[0:No, 1:Yes]
|
||||||
|
|
||||||
|
//8. # of parts to make (1,2,3 or 4)
|
||||||
|
Parts = 1; //[1:1:4]
|
||||||
|
|
||||||
|
/* [Hole Sizes] */
|
||||||
|
|
||||||
|
//9. Hole Diameter for Screws (#8 screw default)
|
||||||
|
HoleSize = 3; //[0:#6, 1:#8, 2:#10, 3:3mm, 4:4mm, 5:5mm, 6:6mm]
|
||||||
|
//#10 Screws are 4.5 measured
|
||||||
|
//#8 Screws are 4.2 measured
|
||||||
|
//#6 Screws are 3.4 measured
|
||||||
|
|
||||||
|
//10. Taper or Countersink Hole
|
||||||
|
Tap_CnkSnk = 1; //[0:None, 1:Tapered, 2:Counter Sink]
|
||||||
|
|
||||||
|
//11. Drill Hole Tolerance
|
||||||
|
Tolerance = .1; //[0:.05:.8]
|
||||||
|
|
||||||
|
/* [Hole Offsets] */
|
||||||
|
//12. 1st Hole Offset distance from end of X-Axis
|
||||||
|
HoleOffset_X1 = 10; //[6:.5:30]
|
||||||
|
|
||||||
|
//13. 2nd Hole Offset distance from 1st Hole of X-Axis
|
||||||
|
HoleOffset_X2 = 10; //[6:.5:30]
|
||||||
|
|
||||||
|
//14. 1st Hole Offset distance from end of Y-Axis
|
||||||
|
HoleOffset_Y1 = 0.5*25.4; //[6:.5:30]
|
||||||
|
|
||||||
|
//15. 2nd Hole Offset distance from 1st Hole of Y-Axis
|
||||||
|
HoleOffset_Y2 = 10; //[6:.5:30]
|
||||||
|
|
||||||
|
/* [Number of Holes] */
|
||||||
|
//16. # of Screws on each side of L (1 or 2)
|
||||||
|
Screws_X = 2; //[1:One Screw, 2:Two Screws]
|
||||||
|
|
||||||
|
//17. # of Screws on each side of L (1 or 2)
|
||||||
|
Screws_Y = 1; //[1:One Screw, 2:Two Screws]
|
||||||
|
|
||||||
|
//18. # of Screws along Height of L on X-Axis (1 or 2)
|
||||||
|
Screws_ZX = 1; //[1:One Screw, 2:Two Screws]
|
||||||
|
|
||||||
|
//19. # of Screws along Height of L on Y-Axis (1 or 2)
|
||||||
|
Screws_ZY = 1; //[1:One Screw, 2:Two Screws]
|
||||||
|
|
||||||
|
//20. Screw Height (I use 3/4" screws for default)
|
||||||
|
ScrewHt = 19.0; //[9.5:.5:38]
|
||||||
|
|
||||||
|
//CUSTOMIZER VARIABLES END
|
||||||
|
|
||||||
|
//HoleSize = 4.2; //[#6:3.4, #8:4.2, #10:4.5, 3mm:3, 4mm:4, 5mm:5, 6mm:6]
|
||||||
|
// //#10 Screws are 4.5 measured
|
||||||
|
// //#8 Screws are 4.2 measured
|
||||||
|
// //#6 Screws are 3.4 measured
|
||||||
|
//
|
||||||
|
////10. Taper or Countersink Hole
|
||||||
|
//Tap_CnkSnk = 1; //[0:None, 1:Tapered, 2:Counter Sink]
|
||||||
|
//
|
||||||
|
////11. Dia. of Taper Head of Screw (#8 used for default)
|
||||||
|
//TaperDia = 7.9; //[6.45:#6, 7.95:#8, 9.0:#10, 6:3mm, 4mm:8, 5mm:10, 6mm:12]
|
||||||
|
A_Hole_OD = [3.4,4.2,4.5,3,4,5,6];
|
||||||
|
A_Head_OD = [6.45,7.95,9,6,8,10,12];
|
||||||
|
A_TaperLen = [2.66,3.5,3.9,3,4.2,5.5,6.5];
|
||||||
|
|
||||||
|
HoleOD = A_Hole_OD[HoleSize] + Tolerance; //Calculated Hole Diameter
|
||||||
|
TapOD = A_Head_OD[HoleSize] + Tolerance; //Calculated Tapered Head Diameter
|
||||||
|
TaperLen = A_TaperLen[HoleSize];
|
||||||
|
WeldRad = WeldDia / 2; //Radius of Weld
|
||||||
|
|
||||||
|
//Calcs for Hole(s) along X axis
|
||||||
|
Ht2ZX = Ht / (Screws_ZX + 1); //Half Height or 1/3 height if 2 screws are used
|
||||||
|
echo("Ht2ZX = ", Ht2ZX);
|
||||||
|
H_X = (Len - Thk_Y - WeldRad) / (Screws_X + 1);
|
||||||
|
echo("H_X = ",H_X);
|
||||||
|
//Hole_X = H_X + Thk_Y + WeldRad;
|
||||||
|
Hole_X1 = Len - HoleOffset_X1;
|
||||||
|
Hole_X2 = Hole_X1 - HoleOffset_X2;
|
||||||
|
echo("Hole_X1 = ",Hole_X1);
|
||||||
|
//Hole_X2 = Hole_X1 + H_X;
|
||||||
|
echo("Hole_X2 = ",Hole_X2);
|
||||||
|
//
|
||||||
|
//Calcs for Hole(s) along Y axis
|
||||||
|
Ht2ZY = Ht / (Screws_ZY + 1); //Half Height or 1/3 height if 2 screws are used
|
||||||
|
echo("Ht2ZY = ", Ht2ZY);
|
||||||
|
H_Y = (Wid - Thk_X - WeldRad) / (Screws_Y + 1);
|
||||||
|
echo("H_Y = ",H_Y);
|
||||||
|
//Hole_Y = H_Y + Thk_X + WeldRad;
|
||||||
|
Hole_Y1 = Wid - HoleOffset_Y1;
|
||||||
|
Hole_Y2 = Hole_Y1 - HoleOffset_Y2;
|
||||||
|
echo("Hole_Y = ",Hole_Y1);
|
||||||
|
//Hole_Y2 = Hole_Y + H_Y;
|
||||||
|
echo("Hole_Y2 = ",Hole_Y2);
|
||||||
|
//
|
||||||
|
ScrewThreadHt = ScrewHt - TaperLen;
|
||||||
|
Ht2x = Ht * 2;
|
||||||
|
Ht_Half = Ht / 2;
|
||||||
|
Ires = round(((Ht * 3.14) / 4) / .8) * 4;
|
||||||
|
Hole_Res = round(((TapOD * 3.14) / 4) / 1) * 4;
|
||||||
|
echo(Hole_Res = Hole_Res);
|
||||||
|
module DrawSrewCut()
|
||||||
|
{
|
||||||
|
//This combines the head to the screw
|
||||||
|
if (Tap_CnkSnk == 0)
|
||||||
|
{
|
||||||
|
cylinder(d=HoleOD,h=ScrewThreadHt,$fn=Hole_Res);
|
||||||
|
|
||||||
|
} else if (Tap_CnkSnk == 1)
|
||||||
|
{
|
||||||
|
union()
|
||||||
|
{
|
||||||
|
cylinder(d1=TapOD,d2=HoleOD,h=TaperLen,$fn=Hole_Res);
|
||||||
|
cylinder(d=HoleOD,h=ScrewThreadHt,$fn=Hole_Res);
|
||||||
|
}
|
||||||
|
} else if (Tap_CnkSnk == 2)
|
||||||
|
{
|
||||||
|
union()
|
||||||
|
{
|
||||||
|
cylinder(d=TapOD,h=TaperLen,$fn=Hole_Res);
|
||||||
|
cylinder(d=HoleOD,h=ScrewThreadHt,$fn=Hole_Res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
module LBracket()
|
||||||
|
{
|
||||||
|
union()
|
||||||
|
{
|
||||||
|
cube([Len,Thk_X,Ht]); //Draw the X axis side
|
||||||
|
cube([Thk_Y,Wid,Ht]); //Draw the Y axis side
|
||||||
|
translate([Thk_Y,Thk_X,0])
|
||||||
|
cylinder(d=WeldDia,h=Ht,$fn=4); //Add the Weld
|
||||||
|
}
|
||||||
|
}
|
||||||
|
module RndCorner_XY()
|
||||||
|
{
|
||||||
|
difference()
|
||||||
|
{
|
||||||
|
cylinder(d=Ht2x,h=Thk_X+Thk_Y,$fn=Ires);
|
||||||
|
translate([0,0,-1])
|
||||||
|
cylinder(d=Ht,h=Thk_X+Thk_Y+2,$fn=Ires);
|
||||||
|
translate([-(Ht2x+2),-(Ht+1),-1])
|
||||||
|
cube([Ht2x+2,Ht2x+2,Thk_X+Thk_Y+2]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
module Screws_X()
|
||||||
|
{
|
||||||
|
//Drill holes for Screws along the X axis
|
||||||
|
translate([Hole_X1,Thk_X+.02,Ht2ZX])
|
||||||
|
rotate([90,0,0])
|
||||||
|
DrawSrewCut();
|
||||||
|
if (Screws_X == 2)
|
||||||
|
{
|
||||||
|
translate([Hole_X2,Thk_X+.02,Ht2ZX])
|
||||||
|
rotate([90,0,0])
|
||||||
|
DrawSrewCut();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
module Screws_Y()
|
||||||
|
{
|
||||||
|
//Drill holes for Screws along the Y axis
|
||||||
|
translate([Thk_Y+.02,Hole_Y1,Ht2ZY])
|
||||||
|
rotate([0,-90,0])
|
||||||
|
DrawSrewCut();
|
||||||
|
if (Screws_Y == 2)
|
||||||
|
{
|
||||||
|
translate([Thk_Y+.02,Hole_Y2,Ht2ZY])
|
||||||
|
rotate([0,-90,0])
|
||||||
|
DrawSrewCut();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
module DrawL()
|
||||||
|
{
|
||||||
|
rotate([90,0,0])
|
||||||
|
difference()
|
||||||
|
{
|
||||||
|
LBracket();
|
||||||
|
Screws_X();
|
||||||
|
if (Screws_ZX == 2)
|
||||||
|
{
|
||||||
|
translate([0,0,Ht2ZX])
|
||||||
|
Screws_X();
|
||||||
|
}
|
||||||
|
Screws_Y();
|
||||||
|
if (Screws_ZY == 2)
|
||||||
|
{
|
||||||
|
translate([0,0,Ht2ZY])
|
||||||
|
Screws_Y();
|
||||||
|
}
|
||||||
|
if (RndON == 1)
|
||||||
|
{
|
||||||
|
//Round the X-Axis Corner
|
||||||
|
translate([Len-Ht_Half,-1,Ht_Half])
|
||||||
|
rotate([-90,0,0])
|
||||||
|
RndCorner_XY();
|
||||||
|
//Round the Y-Axis Corner
|
||||||
|
translate([-1,Wid-Ht_Half,Ht_Half])
|
||||||
|
rotate([90,0,90])
|
||||||
|
RndCorner_XY();
|
||||||
|
}
|
||||||
|
//The following section is only for visual checks of how far screws go into wood
|
||||||
|
//These will not draw on final render
|
||||||
|
translate([0,-12.7,0])
|
||||||
|
%cube([Hole_X1,12.7,38.1]); //Check how far screw goes into 1/2" wood
|
||||||
|
translate([-19.02,0,0])
|
||||||
|
%cube([19.02,Hole_Y1,38.1]); //Check how far screw goes into 3/4" wood
|
||||||
|
if (Tap_CnkSnk != 0)
|
||||||
|
{
|
||||||
|
translate([Hole_X1,Thk_X + 2 + TaperLen,Ht2ZX])
|
||||||
|
rotate([90,0,0])
|
||||||
|
color("red")
|
||||||
|
%DrawSrewCut();
|
||||||
|
translate([Thk_Y+2+TaperLen,Hole_Y1,Ht2ZY])
|
||||||
|
rotate([0,-90,0])
|
||||||
|
color("red")
|
||||||
|
%DrawSrewCut();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//Draw how ever many parts user wants along the Y-Axis
|
||||||
|
for ( i = [1 : Parts] )
|
||||||
|
{
|
||||||
|
translate([0,(Ht+6) * i,0])
|
||||||
|
DrawL();
|
||||||
|
}
|
||||||
|
|
BIN
LBracket_Parametric_rev9.stl
Normal file
BIN
LBracket_Parametric_rev9.stl
Normal file
Binary file not shown.
154
doggie-door.scad
Normal file
154
doggie-door.scad
Normal file
|
@ -0,0 +1,154 @@
|
||||||
|
include <BOSL2/std.scad>
|
||||||
|
|
||||||
|
$fn=20;
|
||||||
|
|
||||||
|
showScan=0;
|
||||||
|
showAnchors=0;
|
||||||
|
showDoor=1;
|
||||||
|
showSeparateObjects=0;
|
||||||
|
|
||||||
|
// model sizes
|
||||||
|
panelThickness=3;
|
||||||
|
|
||||||
|
// door measurements
|
||||||
|
doorGutter=6;
|
||||||
|
doorToBolt=34;
|
||||||
|
|
||||||
|
if(showScan) {
|
||||||
|
// scan
|
||||||
|
// lay flat and set the bottom-right as origin
|
||||||
|
translate([-5,110,55]) rotate([-90,0,0])
|
||||||
|
#rotate([26.9,15,-1]) scale(450) import("scan.stl");
|
||||||
|
}
|
||||||
|
if(showAnchors) {
|
||||||
|
// scale measurement
|
||||||
|
/*
|
||||||
|
translate([-270,162,0])
|
||||||
|
cuboid([20,210,1], anchor=BOTTOM+LEFT);
|
||||||
|
translate([-250,47,0])
|
||||||
|
cuboid([305-20,20,1], anchor=BOTTOM+LEFT);
|
||||||
|
translate([-250,47+210+20,0])
|
||||||
|
cuboid([305-20,20,1], anchor=BOTTOM+LEFT);
|
||||||
|
*/
|
||||||
|
|
||||||
|
translate([35,47+10,0])
|
||||||
|
#cylinder(h=10, d=5, anchor=BOTTOM);
|
||||||
|
translate([-250,47+10,0])
|
||||||
|
#cylinder(h=10, d=5, anchor=BOTTOM);
|
||||||
|
translate([-250,47+210+10,0])
|
||||||
|
#cylinder(h=10, d=5, anchor=BOTTOM);
|
||||||
|
translate([35,47+210+10,0])
|
||||||
|
#cylinder(h=10, d=5, anchor=BOTTOM);
|
||||||
|
}
|
||||||
|
if(showDoor) {
|
||||||
|
if (showSeparateObjects) {
|
||||||
|
rotate([0,0,-90]) translate([-20,8,10])
|
||||||
|
color("orange") import("limit-switch-flag-and-chain-catch-assembled.stl");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
module topPanel(){
|
||||||
|
translate([doorGutter,230,0]){
|
||||||
|
difference(){
|
||||||
|
cuboid([40,145,panelThickness], rounding=1, edges=["Y",BACK], anchor=FRONT+LEFT+BOTTOM) {
|
||||||
|
if (showSeparateObjects) {
|
||||||
|
// limit switch
|
||||||
|
translate([0,-12-65,0]) position(TOP+BACK) color("purple") rotate(90) import("limit-switch-mount-sideways.stl");
|
||||||
|
// servo mount
|
||||||
|
translate([17.8,-42,20]) position(TOP+BACK+LEFT) rotate([0,0,90]) color("teal") import("Futaba_3001_Servo_Mount.stl");
|
||||||
|
// servo
|
||||||
|
translate([44,-31.5,31]) position(TOP+BACK+LEFT) rotate([0,0,90]) color("gray") import("servo futaba s3003 v6.stl");
|
||||||
|
// top pulley
|
||||||
|
translate([-10,-21,31]) position(TOP+BACK+LEFT) rotate([0,90,0]) color("red") import("parametric_ball_pulley-improved-with-flares.stl");
|
||||||
|
}
|
||||||
|
// servo mount holes
|
||||||
|
difference(){
|
||||||
|
translate([0,-1,0]) position(TOP+BACK+LEFT) cuboid([40,61,19], rounding=1, anchor=BACK+LEFT+BOTTOM);
|
||||||
|
translate([26.6,-20.1,10]) position(TOP+BACK+LEFT)
|
||||||
|
cyl(h=10,d=2, anchor=BACK+LEFT+BOTTOM);
|
||||||
|
translate([26.6,-41.5,10]) position(TOP+BACK+LEFT)
|
||||||
|
cyl(h=10,d=2, anchor=BACK+LEFT+BOTTOM);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// mounting hole
|
||||||
|
translate([29,37,0]) {
|
||||||
|
cyl(h=panelThickness+1,d=5, anchor=BOTTOM);
|
||||||
|
translate([0,0,panelThickness-2])
|
||||||
|
cyl(h=3,d=15, chamfer1=0.5, anchor=BOTTOM);
|
||||||
|
}
|
||||||
|
// limit switch hole
|
||||||
|
translate([32,74.1,0]) {
|
||||||
|
cyl(h=panelThickness+1,d=2, anchor=BOTTOM);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module middlePanel(){
|
||||||
|
translate([doorGutter,85,0]) {
|
||||||
|
cuboid([40,145,panelThickness], rounding=1, edges=["Y"], anchor=FRONT+LEFT+BOTTOM) {
|
||||||
|
if (showSeparateObjects) {
|
||||||
|
//arduino
|
||||||
|
translate([20,0,0]) color("green") position(TOP) cuboid([2*INCH,2.5*INCH,1*INCH], anchor=BOTTOM);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module bottomPanel(){
|
||||||
|
translate([doorGutter,-60,0]) {
|
||||||
|
difference() {
|
||||||
|
cuboid([40,145,panelThickness], rounding=1, edges=["Y",FRONT], anchor=FRONT+LEFT+BOTTOM) {
|
||||||
|
if (showSeparateObjects) {
|
||||||
|
// limit switch
|
||||||
|
translate([0,60,0]) position(TOP+FRONT) rotate(90) color("purple") import("limit-switch-mount-sideways-right.stl");
|
||||||
|
// bottom pulley
|
||||||
|
translate([-3,-5,27.5]) position(TOP+FRONT+LEFT) color("teal") import("LBracket_Parametric_rev9.stl");
|
||||||
|
translate([-10,14,31]) position(TOP+FRONT+LEFT) rotate([0,90,0]) color("red") import("parametric_ball_pulley-improved-with-flares.stl");
|
||||||
|
}
|
||||||
|
// pulley mount
|
||||||
|
difference(){
|
||||||
|
translate([2,0,0]) position(TOP+FRONT+LEFT) cuboid([35,27.5,27.5], rounding=1, anchor=FRONT+LEFT+BOTTOM);
|
||||||
|
translate([20.7,12.9,20]) position(TOP+FRONT+LEFT)
|
||||||
|
cyl(h=10,d=2, anchor=FRONT+LEFT+BOTTOM);
|
||||||
|
translate([30.7,12.9,20]) position(TOP+FRONT+LEFT)
|
||||||
|
cyl(h=10,d=2, anchor=FRONT+LEFT+BOTTOM);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// mounting hole
|
||||||
|
translate([29,117,0]) {
|
||||||
|
cyl(h=panelThickness+1,d=5, anchor=BOTTOM);
|
||||||
|
translate([0,0,panelThickness-2])
|
||||||
|
cyl(h=3,d=15, chamfer1=0.5, anchor=BOTTOM);
|
||||||
|
}
|
||||||
|
// limit switch hole
|
||||||
|
translate([32,66,0]) {
|
||||||
|
cyl(h=panelThickness+1,d=2, anchor=BOTTOM);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
difference(){
|
||||||
|
union(){
|
||||||
|
topPanel();
|
||||||
|
middlePanel();
|
||||||
|
bottomPanel();
|
||||||
|
}
|
||||||
|
translate([doorGutter+20,85,0]) scale(0.4) partition_cut_mask(gap=0, cutpath="dovetail", $slop=0.5);
|
||||||
|
translate([doorGutter+20,230,0]) scale(0.4) partition_cut_mask(gap=0, cutpath="dovetail", $slop=0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
BIN
doggie-door.stl
Normal file
BIN
doggie-door.stl
Normal file
Binary file not shown.
BIN
limit-switch-flag-and-chain-catch-assembled.stl
Normal file
BIN
limit-switch-flag-and-chain-catch-assembled.stl
Normal file
Binary file not shown.
BIN
limit-switch-flag-and-chain-catch-printable.stl
Normal file
BIN
limit-switch-flag-and-chain-catch-printable.stl
Normal file
Binary file not shown.
59
limit-switch-flag-and-chain-catch.scad
Normal file
59
limit-switch-flag-and-chain-catch.scad
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
showAssembled=1;
|
||||||
|
|
||||||
|
$fn=12;
|
||||||
|
|
||||||
|
flagHeight=15;
|
||||||
|
flagWidth=20;
|
||||||
|
flagDepth=10;
|
||||||
|
baseThickness=2;
|
||||||
|
chainHolderDiameter=3;
|
||||||
|
|
||||||
|
gutterHeight=5;
|
||||||
|
gutterWidth=4;
|
||||||
|
|
||||||
|
// slice it for printing
|
||||||
|
if (showAssembled) {
|
||||||
|
wholeModel();
|
||||||
|
} else {
|
||||||
|
difference(){
|
||||||
|
wholeModel();
|
||||||
|
translate([-50,-50,baseThickness]) cube(100);
|
||||||
|
}
|
||||||
|
|
||||||
|
translate([-50,0,0]) 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,2/2]){
|
||||||
|
difference(){
|
||||||
|
cube([flagDepth,20,baseThickness], center=true);
|
||||||
|
translate([0,0,0])
|
||||||
|
cylinder(h=4,r=2.5,center=true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
translate([0,0,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=0.7, center=true);
|
||||||
|
}
|
24
limit-switch-flag.scad
Normal file
24
limit-switch-flag.scad
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
BIN
limit-switch-flag.stl
Normal file
BIN
limit-switch-flag.stl
Normal file
Binary file not shown.
BIN
limit-switch-mount-sideways-right.stl
Normal file
BIN
limit-switch-mount-sideways-right.stl
Normal file
Binary file not shown.
52
limit-switch-mount-sideways.scad
Normal file
52
limit-switch-mount-sideways.scad
Normal 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]]
|
||||||
|
);
|
||||||
|
}
|
BIN
limit-switch-mount-sideways.stl
Normal file
BIN
limit-switch-mount-sideways.stl
Normal file
Binary file not shown.
56
limit-switch-mount.scad
Normal file
56
limit-switch-mount.scad
Normal 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]]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
BIN
limit-switch-mount.stl
Normal file
BIN
limit-switch-mount.stl
Normal file
Binary file not shown.
291286
parametric_ball_pulley-improved-with-flares.stl
Normal file
291286
parametric_ball_pulley-improved-with-flares.stl
Normal file
File diff suppressed because it is too large
Load Diff
BIN
servo futaba s3003 v6.stl
Normal file
BIN
servo futaba s3003 v6.stl
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user