-rw-r--r-- | delta.jscad | 57 |
1 files changed, 54 insertions, 3 deletions
diff --git a/delta.jscad b/delta.jscad index 24c1c7e..0e8fd62 100644 --- a/delta.jscad +++ b/delta.jscad | |||
@@ -42,12 +42,18 @@ var CONFIG = { | |||
42 | }, | 42 | }, |
43 | duetholder: { | 43 | duetholder: { |
44 | bolt: { d: 3, l: 10, head: { d: 5.33, h: 3 } }, | 44 | bolt: { d: 3, l: 10, head: { d: 5.33, h: 3 } }, |
45 | margin: 3, | 45 | margin: 3, |
46 | s: 2.5 | 46 | s: 2.5 |
47 | }, | 47 | }, |
48 | bedholder: { | ||
49 | h: 15, | ||
50 | margin: 3, | ||
51 | nut: { w: 5.4, h: 2.5 }, | ||
52 | bolt: { d: 3, l: 10, head: { d: 5.33, h: 3 } } | ||
53 | }, | ||
48 | hotend: { | 54 | hotend: { |
49 | h: 62.4, // full assembly height | 55 | h: 62.4, // full assembly height |
50 | groove: { d:12, h:6 }, // grove diameter and height | 56 | groove: { d:12, h:6 }, // grove diameter and height |
51 | ungroove: { d:16, above:3.7, below: 3+4 } | 57 | ungroove: { d:16, above:3.7, below: 3+4 } |
52 | }, | 58 | }, |
53 | effector: { | 59 | effector: { |
@@ -761,12 +767,55 @@ function platform() { | |||
761 | var b = heatbed(); | 767 | var b = heatbed(); |
762 | var g = glass(); | 768 | var g = glass(); |
763 | g = g.connectTo(g.properties.c_bed,b.properties.c_glass,false,0); | 769 | g = g.connectTo(g.properties.c_bed,b.properties.c_glass,false,0); |
764 | return b.union(g); | 770 | return b.union(g); |
765 | } | 771 | } |
766 | 772 | ||
773 | function bedholder(params) { | ||
774 | var h0 = CONFIG.foot.h+CONFIG.extrusion.w*2+CONFIG.base.gap; | ||
775 | var bolt_s = CONFIG.bedholder.bolt.l-CONFIG.extrusion.slotdepth+PRINT.play_tolerance*2; | ||
776 | var nuth=h0+CONFIG.bedholder.h*3/4; | ||
777 | var nutth = nuth+CONFIG.bedholder.nut.h/2+PRINT.slide_tolerance/2; | ||
778 | var rv = CSG.roundedCube({ | ||
779 | corner1: [-CONFIG.extrusion.w/2,-CD.base.inner_inscription_r,h0], | ||
780 | corner2: [ CONFIG.extrusion.w/2,-CONFIG.heatbed.sr-3/2-CONFIG.bedholder.margin,h0+CONFIG.bedholder.h], | ||
781 | roundradius: CONFIG.bedholder.margin | ||
782 | }); | ||
783 | rv = rv.subtract([ | ||
784 | CSG.cylinder({ // base screw | ||
785 | start: [0,-CD.base.mid_inscription_r,h0-1], | ||
786 | end: [0,-CD.base.mid_inscription_r,h0+CONFIG.bedholder.h+1], | ||
787 | radius: CONFIG.bedholder.bolt.d/2+PRINT.screw_tolerance/2 | ||
788 | }), | ||
789 | CSG.cylinder({ // bed screw | ||
790 | start: [0,-CONFIG.heatbed.sr,h0-1], | ||
791 | end: [0,-CONFIG.heatbed.sr,h0+CONFIG.bedholder.h+1], | ||
792 | radius: CONFIG.bedholder.bolt.d/2+PRINT.screw_tolerance/2 | ||
793 | }), | ||
794 | CSG.cube({ // nut pocket | ||
795 | center: [0,-CONFIG.heatbed.sr,nuth], | ||
796 | radius: [CONFIG.extrusion.w/2+1,(CONFIG.bedholder.nut.w+PRINT.slide_tolerance)/2,(CONFIG.bedholder.nut.h+PRINT.slide_tolerance)/2] | ||
797 | }), | ||
798 | CSG.cylinder({ // sink base screw | ||
799 | start: [0,-CD.base.mid_inscription_r,h0+bolt_s], | ||
800 | end: [0,-CD.base.mid_inscription_r,h0+CONFIG.bedholder.h+1], | ||
801 | radius: CONFIG.bedholder.bolt.head.d/2+PRINT.play_tolerance | ||
802 | }) | ||
803 | ]); | ||
804 | rv = rv.union(CSG.cylinder({ | ||
805 | start: [0,-CONFIG.heatbed.sr,nutth], end: [0,-CONFIG.heatbed.sr,nutth+PRINT.layer_height], | ||
806 | radius: (CONFIG.bedholder.nut.w+PRINT.slide_tolerance)/2+PRINT.extrusion_width | ||
807 | })); | ||
808 | rv = rv.intersect(CSG.cylinder({ | ||
809 | start: [0,0,h0-1], end: [0,0,h0+CONFIG.bedholder.h+1], | ||
810 | radius: CONFIG.heatbed.r, resolution: 270 | ||
811 | })); | ||
812 | rv.properties.P = new CSG.Connector([0,-CD.base.mid_inscription_r,h0],[0,0,1],[1,0,0]); | ||
813 | return rv.setColor(CONFIG.color.parts); | ||
814 | } | ||
815 | |||
767 | var PARTS = { | 816 | var PARTS = { |
768 | wip: function(params) { | 817 | wip: function(params) { |
769 | return duetholder(params); | 818 | return duetholder(params); |
770 | return PARTS.alltogethernow(params); | 819 | return PARTS.alltogethernow(params); |
771 | return base_extrusions(); | 820 | return base_extrusions(); |
772 | return foot(); | 821 | return foot(); |
@@ -800,13 +849,14 @@ var PARTS = { | |||
800 | return rv; | 849 | return rv; |
801 | }, | 850 | }, |
802 | duetholder: function(params) { | 851 | duetholder: function(params) { |
803 | return duetholder(); | 852 | return duetholder(); |
804 | }, | 853 | }, |
805 | foot: foot, | 854 | foot: foot, |
806 | shoe: shoe | 855 | shoe: shoe, |
856 | bedholder: bedholder | ||
807 | }; | 857 | }; |
808 | 858 | ||
809 | function main(params) { | 859 | function main(params) { |
810 | var part = params.part && PARTS[params.part]; | 860 | var part = params.part && PARTS[params.part]; |
811 | if(!part) return refaxes(); | 861 | if(!part) return refaxes(); |
812 | var rv = P(part(params)); | 862 | var rv = P(part(params)); |
@@ -868,23 +918,24 @@ function getParameterDefinitions() { | |||
868 | 'platform', | 918 | 'platform', |
869 | 'hinged', | 919 | 'hinged', |
870 | 'clamp', | 920 | 'clamp', |
871 | 'fanholder', | 921 | 'fanholder', |
872 | 'duetholder', | 922 | 'duetholder', |
873 | 'foot', 'shoe', | 923 | 'foot', 'shoe', |
924 | 'bedholder', | ||
874 | 'alltogethernow', | 925 | 'alltogethernow', |
875 | 'wip' | 926 | 'wip' |
876 | ], | 927 | ], |
877 | captions: [ | 928 | captions: [ |
878 | 'Effector platform', | 929 | 'Effector platform', |
879 | 'Hinged part', | 930 | 'Hinged part', |
880 | 'Clamp', | 931 | 'Clamp', |
881 | 'Fan holder', | 932 | 'Fan holder', |
882 | 'Duet holder', | 933 | 'Duet holder', |
883 | 'Foot', | 934 | 'Foot', 'Shoe', |
884 | 'Shoe', | 935 | 'Bed holder', |
885 | 'All together now!', | 936 | 'All together now!', |
886 | 'Work in progress' | 937 | 'Work in progress' |
887 | ], | 938 | ], |
888 | caption: 'Part', | 939 | caption: 'Part', |
889 | initial: 'wip' | 940 | initial: 'wip' |
890 | },{ | 941 | },{ |