summaryrefslogtreecommitdiffabout
authorMichael Krelin <hacker@klever.net>2016-01-13 15:20:12 (UTC)
committer Michael Krelin <hacker@klever.net>2016-01-13 15:20:12 (UTC)
commit4463cba1eed4a59d4eba588389a169481798a73c (patch) (unidiff)
treed97866dcfc591ee507cc008c820ce11054187169
parent991ce4f32ed5ea178c20454fab902e11e8472524 (diff)
downloadredelta-4463cba1eed4a59d4eba588389a169481798a73c.zip
redelta-4463cba1eed4a59d4eba588389a169481798a73c.tar.gz
redelta-4463cba1eed4a59d4eba588389a169481798a73c.tar.bz2
first attempt on bed holder
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
@@ -36,24 +36,30 @@ var CONFIG = {
36 bolt: { d:5, l: 19, hd: 10 }, 36 bolt: { d:5, l: 19, hd: 10 },
37 margin: 2.5, 37 margin: 2.5,
38 nut: { d: 8.6 /* TODO: */, h: 3.5 }, 38 nut: { d: 8.6 /* TODO: */, h: 3.5 },
39 shell: 4, 39 shell: 4,
40 zscalefactor: 1.6, 40 zscalefactor: 1.6,
41 foot: { ho: 2.5, hi: 5 } 41 foot: { ho: 2.5, hi: 5 }
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: {
54 h: 6, 60 h: 6,
55 o: 20,// offset to the rod mounts line 61 o: 20,// offset to the rod mounts line
56 rods_apart: 40, 62 rods_apart: 40,
57 cone: { shell: 1, angle: Math.PI/6 }, 63 cone: { shell: 1, angle: Math.PI/6 },
58 rodend: { 64 rodend: {
59 joint_w: 7,// thickness of the joint 65 joint_w: 7,// thickness of the joint
@@ -755,24 +761,67 @@ function glass() {
755 rv.properties.c_bed = new CSG.Connector([0,0,0],[0,0,1],[1,0,0]); 761 rv.properties.c_bed = new CSG.Connector([0,0,0],[0,0,1],[1,0,0]);
756 rv.properties.P = new CSG.Connector([0,0,-CONFIG.foot.h-CONFIG.heatbed.h],[0,0,1],[1,0,0]); 762 rv.properties.P = new CSG.Connector([0,0,-CONFIG.foot.h-CONFIG.heatbed.h],[0,0,1],[1,0,0]);
757 rv.properties.vitamin = true; 763 rv.properties.vitamin = true;
758 return rv.setColor(CONFIG.color.glass); 764 return rv.setColor(CONFIG.color.glass);
759} 765}
760function platform() { 766function 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();
773 return union(base_extrusions(),column_extrusions(),duet().translate([0,-20,0])); 822 return union(base_extrusions(),column_extrusions(),duet().translate([0,-20,0]));
774 }, 823 },
775 alltogethernow: function(params) { 824 alltogethernow: function(params) {
776 var cols = columns(); 825 var cols = columns();
777 var sides = base_sides(); 826 var sides = base_sides();
778 var feet = THREEWINDS.map(function(w,i) { 827 var feet = THREEWINDS.map(function(w,i) {
@@ -794,25 +843,26 @@ var PARTS = {
794 var rv = union(cols).union(sides.map(union)).union(feet).union([ 843 var rv = union(cols).union(sides.map(union)).union(feet).union([
795 d,dhsw,dhse,dhne,dhnw 844 d,dhsw,dhse,dhne,dhnw
796 ]); 845 ]);
797 var p = P(platform()); 846 var p = P(platform());
798 rv = rv.union(p); 847 rv = rv.union(p);
799 rv.properties.P = new CSG.Connector([0,0,0],[0,0,1],[1,0,0]); 848 rv.properties.P = new CSG.Connector([0,0,0],[0,0,1],[1,0,0]);
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));
813 if(!params.print) rv = rv.union(refaxes()); 863 if(!params.print) rv = rv.union(refaxes());
814 return rv; 864 return rv;
815} 865}
816 866
817function _main(params) { 867function _main(params) {
818 var e = EFFECTOR.effector(); 868 var e = EFFECTOR.effector();
@@ -862,35 +912,36 @@ function P(x) {
862 912
863function getParameterDefinitions() { 913function getParameterDefinitions() {
864 return [{ 914 return [{
865 name: 'part', 915 name: 'part',
866 type: 'choice', 916 type: 'choice',
867 values: [ 917 values: [
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 },{
891 name: 'print', 942 name: 'print',
892 type: 'checkbox', 943 type: 'checkbox',
893 caption: 'For print, no nonsense', 944 caption: 'For print, no nonsense',
894 initial: false 945 initial: false
895 }]; 946 }];
896} 947}