author | Michael Krelin <hacker@klever.net> | 2017-10-31 22:22:38 (UTC) |
---|---|---|
committer | Michael Krelin <hacker@klever.net> | 2017-10-31 22:22:38 (UTC) |
commit | 5539359e3a7a4437e043854865fc254209d1cb86 (patch) (unidiff) | |
tree | 715aa476b433773971d05f5755303b0c5126bfe0 | |
parent | 91595f88cbae50b7f12821f947b55c17d8c50dd7 (diff) | |
download | extrudery-5539359e3a7a4437e043854865fc254209d1cb86.zip extrudery-5539359e3a7a4437e043854865fc254209d1cb86.tar.gz extrudery-5539359e3a7a4437e043854865fc254209d1cb86.tar.bz2 |
material mixer: embedded pushfits support
-rw-r--r-- | mixer-embedded.scad | 10 | ||||
-rw-r--r-- | mixer-threaded.scad | 3 | ||||
-rw-r--r-- | mixer.scad | 40 |
3 files changed, 44 insertions, 9 deletions
diff --git a/mixer-embedded.scad b/mixer-embedded.scad new file mode 100644 index 0000000..397572f --- a/dev/null +++ b/mixer-embedded.scad | |||
@@ -0,0 +1,10 @@ | |||
1 | extrusion_width=.4; | ||
2 | |||
3 | use <mixer.scad>; | ||
4 | |||
5 | the_mixer( | ||
6 | pushfit_type="embedded", | ||
7 | pushfit_d = 12, | ||
8 | pushfit_h = 7, | ||
9 | interpushfit = extrusion_width | ||
10 | ); | ||
diff --git a/mixer-threaded.scad b/mixer-threaded.scad new file mode 100644 index 0000000..ff3c0aa --- a/dev/null +++ b/mixer-threaded.scad | |||
@@ -0,0 +1,3 @@ | |||
1 | use <mixer.scad>; | ||
2 | |||
3 | the_mixer(); | ||
@@ -1,4 +1,4 @@ | |||
1 | layer_height=0.2; extrusion_width=0.4; | 1 | layer_height=0.2; extrusion_width=0.45; |
2 | epsilon=0.01; | 2 | epsilon=0.01; |
3 | $fs=0.125; | 3 | $fs=0.125; |
4 | 4 | ||
@@ -15,12 +15,15 @@ module pushfit_thread(h=10) { | |||
15 | 15 | ||
16 | module the_mixer( | 16 | module the_mixer( |
17 | pushfit_d = 10, pushfit_h = 10, | 17 | pushfit_d = 10, pushfit_h = 10, |
18 | pushfit_type = "threaded", // threaded|embedded | ||
19 | pushfit_ring_h = 4.7, // height of embedded pushfit ring | ||
20 | pushfit_insert_d = 8, // diameter of pushfit insert legs hole | ||
18 | liner_d = 4, liner_id = 2, | 21 | liner_d = 4, liner_id = 2, |
19 | filament_d = 1.75, | 22 | filament_d = 1.75, |
20 | join_angle = 30, | 23 | join_angle = 30, |
21 | 24 | ||
22 | interpushfit = 2*extrusion_width, // space between two pushfit's threads | 25 | interpushfit = 2*extrusion_width, // space between two pushfit holes |
23 | pushfit_s = 2, // shell around pushfit threads | 26 | pushfit_s = 2, // shell around pushfit holes |
24 | output_l = 4, // length of output after before pushfit | 27 | output_l = 4, // length of output after before pushfit |
25 | outer_r = 3, // outer radius | 28 | outer_r = 3, // outer radius |
26 | 29 | ||
@@ -35,12 +38,22 @@ module the_mixer( | |||
35 | cylinder(d1=ld+epsilon,d2=liner_id-epsilon,h=inh+2*epsilon); | 38 | cylinder(d1=ld+epsilon,d2=liner_id-epsilon,h=inh+2*epsilon); |
36 | } | 39 | } |
37 | } | 40 | } |
41 | module pushfit() { | ||
42 | if(pushfit_type=="threaded") { | ||
43 | pushfit_thread(h=pushfit_h); | ||
44 | }else if(pushfit_type=="embedded") { | ||
45 | translate([0,0,pushfit_h-pushfit_ring_h]) | ||
46 | cylinder(d=pushfit_d,h=pushfit_ring_h,$fn=pushfit_d*PI*2); | ||
47 | cylinder(d=pushfit_insert_d,h=pushfit_h,$fn=pushfit_insert_d*PI*2); | ||
48 | } | ||
49 | } | ||
38 | 50 | ||
39 | ld = liner_d+liner_d_tolerance; | 51 | ld = liner_d+liner_d_tolerance; |
40 | linero = ld/2/tan(join_angle/2); // liner offset | 52 | linero = ld/2/tan(join_angle/2); // liner offset |
41 | pfrx = interpushfit/2/cos(join_angle/2); // radial margin | 53 | pfrx = interpushfit/2/cos(join_angle/2); // radial margin |
42 | pfR = pushfit_d/2+pfrx; // radius of pushfit with margin | 54 | pfR = pushfit_d/2+pfrx; // radius of pushfit with margin |
43 | pfo = pfR/tan(join_angle/2); // pushfit thread ofset | 55 | pfoo = pushfit_type=="threaded" ? 0 : (pushfit_h-pushfit_ring_h); // offset of pushfit offset |
56 | pfo = pfR/tan(join_angle/2)-pfoo; // pushfit thread ofset | ||
44 | 57 | ||
45 | h = pushfit_d+pushfit_s*2; | 58 | h = pushfit_d+pushfit_s*2; |
46 | difference() { | 59 | difference() { |
@@ -59,13 +72,13 @@ module the_mixer( | |||
59 | liner(l=pfo-linero+1,in="bottom"); | 72 | liner(l=pfo-linero+1,in="bottom"); |
60 | //cylinder(d=ld,h=pfo-linero+1,$fn=ld*PI*4); | 73 | //cylinder(d=ld,h=pfo-linero+1,$fn=ld*PI*4); |
61 | translate([0,pfo,0]) rotate([-90,0,0]) | 74 | translate([0,pfo,0]) rotate([-90,0,0]) |
62 | pushfit_thread(h=pushfit_h); | 75 | pushfit(); |
63 | } | 76 | } |
64 | rotate([90,0,0]) { | 77 | rotate([90,0,0]) { |
65 | liner(l=output_l+1,in="top"); | 78 | liner(l=output_l+1,in="top"); |
66 | //cylinder(d=ld,h=output_l+1,$fn=ld*PI*4); | 79 | //cylinder(d=ld,h=output_l+1,$fn=ld*PI*4); |
67 | translate([0,0,output_l]) | 80 | translate([0,0,output_l]) |
68 | pushfit_thread(h=pushfit_h); | 81 | pushfit(); |
69 | } | 82 | } |
70 | hull() { | 83 | hull() { |
71 | for(s=[-1,1]) rotate([0,0,s*join_angle/2]) { | 84 | for(s=[-1,1]) rotate([0,0,s*join_angle/2]) { |
@@ -79,10 +92,19 @@ module the_mixer( | |||
79 | } | 92 | } |
80 | } | 93 | } |
81 | 94 | ||
82 | if(false) { | 95 | module this() { |
96 | the_mixer( | ||
97 | pushfit_type="embedded", | ||
98 | pushfit_d = 12, | ||
99 | pushfit_h = 7, | ||
100 | interpushfit = extrusion_width | ||
101 | ); | ||
102 | } | ||
103 | |||
104 | if(!false) { | ||
83 | difference() { | 105 | difference() { |
84 | the_mixer(); | 106 | this(); |
85 | cylinder(d=100,h=100); | 107 | cylinder(d=100,h=100); |
86 | } | 108 | } |
87 | }else | 109 | }else |
88 | the_mixer(); | 110 | this(); |