summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--delta.jscad57
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
773function 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
767var PARTS = { 816var 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
809function main(params) { 859function 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 },{