V2 3D print
This commit is contained in:
parent
6bd5f9ebdb
commit
5d55677938
|
@ -1,3 +1,4 @@
|
||||||
|
|
||||||
include <BOSL2/std.scad>
|
include <BOSL2/std.scad>
|
||||||
|
|
||||||
$fn=20;
|
$fn=20;
|
||||||
|
@ -7,8 +8,17 @@ showAnchors=0;
|
||||||
showDoor=1;
|
showDoor=1;
|
||||||
showSeparateObjects=0;
|
showSeparateObjects=0;
|
||||||
|
|
||||||
|
// split for smaller print beds
|
||||||
|
// will be automatically moved -60mm for the
|
||||||
|
// bottom offset (0 is modeled as where the door stops)
|
||||||
|
// ~490 is the total length
|
||||||
|
splitAt = [
|
||||||
|
490/3*1-20,
|
||||||
|
490/3*2-20
|
||||||
|
];
|
||||||
|
|
||||||
// model sizes
|
// model sizes
|
||||||
panelThickness=3;
|
panelThickness=4.5;
|
||||||
|
|
||||||
// door measurements
|
// door measurements
|
||||||
doorGutter=6;
|
doorGutter=6;
|
||||||
|
@ -47,39 +57,60 @@ if(showDoor) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
module limitSwitchMount(){
|
||||||
|
switchHeight = 7;
|
||||||
|
switchWidth = 12;
|
||||||
|
switchLength = 20;
|
||||||
|
|
||||||
|
switchHoleFromFront = 9; // we assume "front" is the left here, adjust for right
|
||||||
|
switchHoleFromSide = 5.5;
|
||||||
|
switchHoleSpacing = 9;
|
||||||
|
|
||||||
|
// switch mount
|
||||||
|
difference(){
|
||||||
|
cuboid([switchWidth,switchLength,switchHeight], rounding=1, anchor=FRONT+LEFT+BOTTOM);
|
||||||
|
translate([switchHoleFromFront, switchHoleFromSide, 10/2+switchHeight/2+0.1]) {
|
||||||
|
cylinder(h=10, r=1.2, center=true);
|
||||||
|
}
|
||||||
|
translate([switchHoleFromFront, switchHoleFromSide+switchHoleSpacing, 10/2+switchHeight/2+0.1]) {
|
||||||
|
cylinder(h=10, r=1.2, center=true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
module topPanel(){
|
module topPanel(){
|
||||||
translate([doorGutter,230,0]){
|
translate([doorGutter,230,0]){
|
||||||
|
translate([15,-2,0]) cuboid([4,145+(2*INCH),10], rounding=1, edges=["Y"], anchor=FRONT+LEFT+BOTTOM);
|
||||||
difference(){
|
difference(){
|
||||||
cuboid([40,145,panelThickness], rounding=1, edges=["Y",BACK], anchor=FRONT+LEFT+BOTTOM) {
|
cuboid([40,145+(2*INCH),panelThickness], rounding=1, edges=["Y",BACK], anchor=FRONT+LEFT+BOTTOM) {
|
||||||
if (showSeparateObjects) {
|
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
|
// servo
|
||||||
translate([44,-31.5,31]) position(TOP+BACK+LEFT) rotate([0,0,90]) color("gray") import("servo futaba s3003 v6.stl");
|
translate([44,-31.5,31]) position(TOP+BACK+LEFT) rotate([0,0,90]) color("gray") import("servo futaba s3003 v6.stl");
|
||||||
// top pulley
|
// top pulley
|
||||||
translate([-10,-21,31]) position(TOP+BACK+LEFT) rotate([0,90,0]) color("red") import("parametric_ball_pulley-improved-with-flares.stl");
|
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
|
// limit switch mount
|
||||||
|
translate([6,-12-77.5,0]) position(TOP+BACK) color("pink") rotate(90) limitSwitchMount();
|
||||||
|
// servo mount
|
||||||
|
translate([17.8,-42,20]) position(TOP+BACK+LEFT) rotate([0,0,90]) color("pink") import("Futaba_3001_Servo_Mount.stl");
|
||||||
difference(){
|
difference(){
|
||||||
translate([0,-1,0]) position(TOP+BACK+LEFT) cuboid([40,61,19], rounding=1, anchor=BACK+LEFT+BOTTOM);
|
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)
|
$fn=40;
|
||||||
|
translate([2,-21,3]) position(TOP+BACK+LEFT) rotate([0,90,0]) cyl(h=5,d=55, anchor=RIGHT);
|
||||||
|
// servo mount holes
|
||||||
|
/*translate([26.6,-20.1,10]) position(TOP+BACK+LEFT)
|
||||||
cyl(h=10,d=2, anchor=BACK+LEFT+BOTTOM);
|
cyl(h=10,d=2, anchor=BACK+LEFT+BOTTOM);
|
||||||
translate([26.6,-41.5,10]) position(TOP+BACK+LEFT)
|
translate([26.6,-41.5,10]) position(TOP+BACK+LEFT)
|
||||||
cyl(h=10,d=2, anchor=BACK+LEFT+BOTTOM);
|
cyl(h=10,d=2, anchor=BACK+LEFT+BOTTOM);*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// mounting hole
|
// mounting hole
|
||||||
translate([29,37,0]) {
|
translate([29,37,-0.1]) {
|
||||||
cyl(h=panelThickness+1,d=5, anchor=BOTTOM);
|
cyl(h=panelThickness+1,d=5, anchor=BOTTOM);
|
||||||
translate([0,0,panelThickness-2])
|
translate([0,0,panelThickness-2])
|
||||||
cyl(h=3,d=15, chamfer1=0.5, anchor=BOTTOM);
|
cyl(h=3,d=15, chamfer1=0.5, anchor=BOTTOM);
|
||||||
}
|
translate([7,0,0])
|
||||||
// limit switch hole
|
cuboid([15,5,panelThickness+1], anchor=BOTTOM);
|
||||||
translate([32,74.1,0]) {
|
|
||||||
cyl(h=panelThickness+1,d=2, anchor=BOTTOM);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -87,10 +118,11 @@ module topPanel(){
|
||||||
|
|
||||||
module middlePanel(){
|
module middlePanel(){
|
||||||
translate([doorGutter,85,0]) {
|
translate([doorGutter,85,0]) {
|
||||||
|
translate([15,0,0]) cuboid([4,145,10], rounding=1, edges=["Y"], anchor=FRONT+LEFT+BOTTOM);
|
||||||
cuboid([40,145,panelThickness], rounding=1, edges=["Y"], anchor=FRONT+LEFT+BOTTOM) {
|
cuboid([40,145,panelThickness], rounding=1, edges=["Y"], anchor=FRONT+LEFT+BOTTOM) {
|
||||||
if (showSeparateObjects) {
|
if (showSeparateObjects) {
|
||||||
//arduino
|
//arduino
|
||||||
translate([20,0,0]) color("green") position(TOP) cuboid([2*INCH,2.5*INCH,1*INCH], anchor=BOTTOM);
|
translate([25,0,0]) color("green") position(TOP) cuboid([2*INCH,2.5*INCH,1*INCH], anchor=BOTTOM);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -98,11 +130,10 @@ module middlePanel(){
|
||||||
|
|
||||||
module bottomPanel(){
|
module bottomPanel(){
|
||||||
translate([doorGutter,-60,0]) {
|
translate([doorGutter,-60,0]) {
|
||||||
|
translate([15,2,0]) cuboid([4,145,10], rounding=1, edges=["Y"], anchor=FRONT+LEFT+BOTTOM);
|
||||||
difference() {
|
difference() {
|
||||||
cuboid([40,145,panelThickness], rounding=1, edges=["Y",FRONT], anchor=FRONT+LEFT+BOTTOM) {
|
cuboid([40,145,panelThickness], rounding=1, edges=["Y",FRONT], anchor=FRONT+LEFT+BOTTOM) {
|
||||||
if (showSeparateObjects) {
|
if (showSeparateObjects) {
|
||||||
// limit switch
|
|
||||||
translate([0,60,0]) position(TOP+FRONT) rotate(90) color("purple") import("limit-switch-mount-sideways-right.stl");
|
|
||||||
// bottom pulley
|
// bottom pulley
|
||||||
translate([-3,-5,27.5]) position(TOP+FRONT+LEFT) color("teal") import("LBracket_Parametric_rev9.stl");
|
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");
|
translate([-10,14,31]) position(TOP+FRONT+LEFT) rotate([0,90,0]) color("red") import("parametric_ball_pulley-improved-with-flares.stl");
|
||||||
|
@ -115,16 +146,16 @@ module bottomPanel(){
|
||||||
translate([30.7,12.9,20]) position(TOP+FRONT+LEFT)
|
translate([30.7,12.9,20]) position(TOP+FRONT+LEFT)
|
||||||
cyl(h=10,d=2, anchor=FRONT+LEFT+BOTTOM);
|
cyl(h=10,d=2, anchor=FRONT+LEFT+BOTTOM);
|
||||||
}
|
}
|
||||||
|
// limit switch mount
|
||||||
|
translate([6,72,0]) position(TOP+FRONT+LEFT) rotate(-90) color("pink") limitSwitchMount();
|
||||||
}
|
}
|
||||||
// mounting hole
|
// mounting hole
|
||||||
translate([29,117,0]) {
|
translate([29,117,-0.1]) {
|
||||||
cyl(h=panelThickness+1,d=5, anchor=BOTTOM);
|
cyl(h=panelThickness+1,d=5, anchor=BOTTOM);
|
||||||
translate([0,0,panelThickness-2])
|
translate([0,0,panelThickness-2])
|
||||||
cyl(h=3,d=15, chamfer1=0.5, anchor=BOTTOM);
|
cyl(h=3,d=15, chamfer1=0.5, anchor=BOTTOM);
|
||||||
}
|
translate([7,0,0])
|
||||||
// limit switch hole
|
cuboid([15,5,panelThickness+1], anchor=BOTTOM);
|
||||||
translate([32,66,0]) {
|
|
||||||
cyl(h=panelThickness+1,d=2, anchor=BOTTOM);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -136,8 +167,9 @@ difference(){
|
||||||
middlePanel();
|
middlePanel();
|
||||||
bottomPanel();
|
bottomPanel();
|
||||||
}
|
}
|
||||||
translate([doorGutter+20,85,0]) scale(0.4) partition_cut_mask(gap=0, cutpath="dovetail", $slop=0.5);
|
for(i=[0: len(splitAt)-1]){
|
||||||
translate([doorGutter+20,230,0]) scale(0.4) partition_cut_mask(gap=0, cutpath="dovetail", $slop=0.5);
|
translate([doorGutter+19.5,splitAt[i]-60,20]) scale([0.5,0.5,1]) partition_cut_mask(gap=0, cutpath="dovetail", $slop=0.5);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
BIN
doggie-door.stl
BIN
doggie-door.stl
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1,12 +1,12 @@
|
||||||
showAssembled=1;
|
showAssembled=0;
|
||||||
|
|
||||||
$fn=12;
|
$fn=12;
|
||||||
|
|
||||||
flagHeight=15;
|
flagHeight=15;
|
||||||
flagWidth=20;
|
flagWidth=25;
|
||||||
flagDepth=10;
|
flagDepth=10;
|
||||||
baseThickness=2;
|
baseThickness=4;
|
||||||
chainHolderDiameter=3;
|
chainHolderDiameter=4;
|
||||||
|
|
||||||
gutterHeight=5;
|
gutterHeight=5;
|
||||||
gutterWidth=4;
|
gutterWidth=4;
|
||||||
|
@ -15,12 +15,13 @@ gutterWidth=4;
|
||||||
if (showAssembled) {
|
if (showAssembled) {
|
||||||
wholeModel();
|
wholeModel();
|
||||||
} else {
|
} else {
|
||||||
|
translate([0,0,baseThickness]) rotate([180,0,180])
|
||||||
difference(){
|
difference(){
|
||||||
wholeModel();
|
wholeModel();
|
||||||
translate([-50,-50,baseThickness]) cube(100);
|
translate([-50,-50,baseThickness]) cube(100);
|
||||||
}
|
}
|
||||||
|
|
||||||
translate([-50,0,0]) difference(){
|
translate([-20,0,-baseThickness]) difference(){
|
||||||
wholeModel();
|
wholeModel();
|
||||||
translate([-50,-50,-100+baseThickness]) cube(100);
|
translate([-50,-50,-100+baseThickness]) cube(100);
|
||||||
}
|
}
|
||||||
|
@ -37,15 +38,21 @@ module wholeModel(){
|
||||||
cube([flagDepth,flagWidth,flagHeight-gutterHeight], center=true);
|
cube([flagDepth,flagWidth,flagHeight-gutterHeight], center=true);
|
||||||
}
|
}
|
||||||
|
|
||||||
translate([0,-(flagWidth+20)/2,2/2]){
|
translate([0,-(flagWidth+20)/2,baseThickness/2]){
|
||||||
difference(){
|
difference(){
|
||||||
cube([flagDepth,20,baseThickness], center=true);
|
cube([flagDepth,20,baseThickness], center=true);
|
||||||
translate([0,0,0])
|
translate([0,0,0])
|
||||||
cylinder(h=4,r=2.5,center=true);
|
cylinder(h=baseThickness+1,r=2.5,center=true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
translate([0,0,baseThickness]){
|
// 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();
|
chainHolder();
|
||||||
translate([0,chainHolderDiameter+.5,0]) chainHolder();
|
translate([0,chainHolderDiameter+.5,0]) chainHolder();
|
||||||
}
|
}
|
||||||
|
@ -55,5 +62,5 @@ module wholeModel(){
|
||||||
module 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([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);
|
translate([0,-flagWidth/2+2,0]) rotate([0,90,0]) cylinder(h=flagDepth,d=1, center=true);
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user