-rw-r--r-- | delta.jscad | 44 |
1 files changed, 43 insertions, 1 deletions
diff --git a/delta.jscad b/delta.jscad index b718fd4..fa33a0d 100644 --- a/delta.jscad +++ b/delta.jscad | |||
@@ -33,2 +33,10 @@ var CONFIG = { | |||
33 | }, | 33 | }, |
34 | foot: { | ||
35 | d: 20*Math.sqrt(2), h: 30, | ||
36 | bolt: { d:5, l: 19, hd: 10 }, | ||
37 | margin: 2.5, | ||
38 | nut: { d: 8.6 /* TODO: */, h: 3.5 }, | ||
39 | shell: 4, | ||
40 | zscalefactor: 1.6 | ||
41 | }, | ||
34 | hotend: { | 42 | hotend: { |
@@ -84,3 +92,4 @@ var CONFIG = { | |||
84 | pcb: [ 0, 0.3, 0.2, 0.8 ], | 92 | pcb: [ 0, 0.3, 0.2, 0.8 ], |
85 | bulk: [ .9, .9, .9, .2 ] | 93 | bulk: [ .9, .9, .9, .2 ], |
94 | parts: [ 0, 0.8, 0, 0.9 ] | ||
86 | } | 95 | } |
@@ -586,2 +595,34 @@ function duet() { | |||
586 | 595 | ||
596 | function foot() { | ||
597 | var F = CONFIG.foot; | ||
598 | var br = F.bolt.hd/2+F.margin; | ||
599 | var bh = F.zscalefactor*Math.sqrt(Math.pow(F.d/2,2)-Math.pow(br,2)); | ||
600 | var th = F.h-bh; | ||
601 | var r = 2*F.d; | ||
602 | var rv = CSG.sphere({ // botom contorted sphere | ||
603 | center: [0,0,0], radius: F.d/2, resolution: r | ||
604 | }).scale([1,1,F.zscalefactor]).translate([0,0,bh]).union(CSG.cylinder({ // top hat | ||
605 | start: [0,0,bh], end: [0,0,F.h], radius: F.d/2, resolution: r | ||
606 | })).intersect(CSG.cylinder({ // cut off excess | ||
607 | start: [0,0,0], end: [0,0,F.h], radius: F.d | ||
608 | })).subtract([ | ||
609 | CSG.cylinder({ // bolt hole | ||
610 | start: [0,0,-1], end: [0,0,F.h+1], radius: F.bolt.d/2+PRINT.slide_tolerance | ||
611 | }), CSG.cylinder({ // nut hole | ||
612 | start: [0,0,F.h-F.nut.h-PRINT.play_tolerance], | ||
613 | end: [0,0,F.h], | ||
614 | radius: F.nut.d/2+PRINT.slide_tolerance, resolution: 6 | ||
615 | }), CSG.cylinder({ // bolthead/washer hole | ||
616 | start: [0,0,-1], end: [0,0,F.h-F.nut.h-PRINT.play_tolerance-F.shell], | ||
617 | radius: F.bolt.hd/2+PRINT.play_tolerance | ||
618 | }) | ||
619 | ]).union(CSG.cylinder({ // bridging patch | ||
620 | start: [0,0,F.h-F.nut.h-PRINT.play_tolerance-PRINT.layer_height], | ||
621 | end: [0,0,F.h-F.nut.h-PRINT.play_tolerance], | ||
622 | radius: F.nut.d/2 | ||
623 | })); | ||
624 | rv.properties.P = new CSG.Connector([0,0,F.h],[0,0,-1],[1,0,0]); | ||
625 | return rv.setColor(CONFIG.color.parts); | ||
626 | } | ||
627 | |||
587 | function refaxes(o) { | 628 | function refaxes(o) { |
@@ -602,2 +643,3 @@ var PARTS = { | |||
602 | wip: function(params) { | 643 | wip: function(params) { |
644 | return foot(); | ||
603 | return union(base_extrusions(),column_extrusions(),duet()); | 645 | return union(base_extrusions(),column_extrusions(),duet()); |