|
|
|
@@ -26,2 +26,3 @@ module the_mixer( |
26 | join_angle = 30, |
26 | join_angle = 30, |
| |
27 | joint = "wide", // wide|narrow |
27 | |
28 | |
@@ -29,3 +30,3 @@ module the_mixer( |
29 | pushfit_s = 2, // shell around pushfit holes |
30 | pushfit_s = 2, // shell around pushfit holes |
30 | output_l = 4, // length of output after before pushfit |
31 | output_l = 4, // length of output liner after before pushfit |
31 | outer_r = 3, // outer radius |
32 | outer_r = 3, // outer radius |
@@ -33,5 +34,35 @@ module the_mixer( |
33 | liner_d_tolerance = .2, |
34 | liner_d_tolerance = .2, |
| |
35 | filament_d_tolerance = .25 |
34 | ) { |
36 | ) { |
35 | fnd = PI*2*2; fnr = fnd*2; |
37 | fnd = PI*2*2; fnr = fnd*2; |
36 | module liner(l,in) { |
38 | |
| |
39 | ld = liner_d+liner_d_tolerance; |
| |
40 | fd = filament_d+filament_d_tolerance; |
| |
41 | linero = ld/2/tan(join_angle/2); // liner offset |
| |
42 | |
| |
43 | jd = (joint=="narrow") ? fd : ld; // joint diameter |
| |
44 | jo = (joint=="narrow") ? jd/2/tan(join_angle/2) : linero; // joint offset |
| |
45 | |
| |
46 | pfrx = interpushfit/2/cos(join_angle/2); // radial margin |
| |
47 | pfR = pushfit_d/2+pfrx; // radius of pushfit with margin |
| |
48 | // offset of pushfit offset |
| |
49 | pfoo = (pushfit_type=="threaded") ? 0 : |
| |
50 | (pushfit_type=="embedded") ? (pushfit_h-pushfit_ring_h) : |
| |
51 | (pushfit_type=="embeddest") ? 0 : undef; |
| |
52 | pfo = pfR/tan(join_angle/2)-pfoo; // pushfit thread ofset |
| |
53 | |
| |
54 | h = pushfit_d+pushfit_s*2; |
| |
55 | |
| |
56 | module liner(l,in,offset=0,linero) { |
| |
57 | lo = linero==undef ? l/2 : linero; |
| |
58 | translate([0,0,offset]) |
| |
59 | if(joint=="narrow") { |
| |
60 | $fn = max(fd,ld,jd)*fnd; |
| |
61 | cylinder(d=fd,h=l); |
| |
62 | //if(in=="top") cylinder(d1=jd,d2=fd,h=(jd-fd)/2); |
| |
63 | translate([0,0,lo]) |
| |
64 | cylinder(d=ld,h=l-lo); |
| |
65 | if(in=="bottom") translate([0,0,lo+epsilon]) mirror([0,0,1]) |
| |
66 | cylinder(d1=(liner_id+ld)/2,d2=fd,h=(liner_id+ld-fd)/2); |
| |
67 | }else{ |
37 | inh=ld-liner_id; |
68 | inh=ld-liner_id; |
@@ -44,2 +75,3 @@ module the_mixer( |
44 | } |
75 | } |
| |
76 | } |
45 | module pushfit() { |
77 | module pushfit() { |
@@ -54,3 +86,3 @@ module the_mixer( |
54 | cylinder(d=pushfit_d,h=pushfit_legspace_h,$fn=pushfit_d*fnd); |
86 | cylinder(d=pushfit_d,h=pushfit_legspace_h,$fn=pushfit_d*fnd); |
55 | dd = pushfit_d-pushfit_id; |
87 | dd = (pushfit_d-pushfit_id)/2; |
56 | translate([0,0,pushfit_legspace_h-epsilon]) |
88 | translate([0,0,pushfit_legspace_h-epsilon]) |
@@ -62,13 +94,2 @@ module the_mixer( |
62 | |
94 | |
63 | ld = liner_d+liner_d_tolerance; |
| |
64 | linero = ld/2/tan(join_angle/2); // liner offset |
| |
65 | pfrx = interpushfit/2/cos(join_angle/2); // radial margin |
| |
66 | pfR = pushfit_d/2+pfrx; // radius of pushfit with margin |
| |
67 | // offset of pushfit offset |
| |
68 | pfoo = (pushfit_type=="threaded") ? 0 : |
| |
69 | (pushfit_type=="embedded") ? (pushfit_h-pushfit_ring_h) : |
| |
70 | (pushfit_type=="embeddest") ? 0 : undef; |
| |
71 | pfo = pfR/tan(join_angle/2)-pfoo; // pushfit thread ofset |
| |
72 | |
| |
73 | h = pushfit_d+pushfit_s*2; |
| |
74 | difference() { |
95 | difference() { |
@@ -85,5 +106,4 @@ module the_mixer( |
85 | for(s=[-1,1]) rotate([0,0,s*join_angle/2]) { |
106 | for(s=[-1,1]) rotate([0,0,s*join_angle/2]) { |
86 | translate([0,linero,0]) rotate([-90,0,0]) |
107 | rotate([-90,0,0]) |
87 | liner(l=pfo-linero+epsilon,in="bottom"); |
108 | liner(l=pfo-jo+epsilon,in="bottom",offset=jo); |
88 | //cylinder(d=ld,h=pfo-linero+1,$fn=ld*fnd); |
| |
89 | translate([0,pfo,0]) rotate([-90,0,0]) |
109 | translate([0,pfo,0]) rotate([-90,0,0]) |
@@ -92,3 +112,3 @@ module the_mixer( |
92 | rotate([90,0,0]) { |
112 | rotate([90,0,0]) { |
93 | liner(l=output_l+epsilon,in="top"); |
113 | liner(l=output_l+epsilon,in="top",linero=0); |
94 | //cylinder(d=ld,h=output_l+1,$fn=ld*fnd); |
114 | //cylinder(d=ld,h=output_l+1,$fn=ld*fnd); |
@@ -100,7 +120,7 @@ module the_mixer( |
100 | rotate([-90,0,0]) |
120 | rotate([-90,0,0]) |
101 | translate([0,0,linero]) |
121 | translate([0,0,jo]) |
102 | cylinder(d=ld,h=epsilon,$fn=ld*fnd); |
122 | cylinder(d=jd,h=epsilon,$fn=jd*fnd); |
103 | } |
123 | } |
104 | rotate([90,0,0]) |
124 | rotate([90,0,0]) |
105 | cylinder(d=ld,h=epsilon,$fn=ld*fnd); |
125 | cylinder(d=jd,h=epsilon,$fn=jd*fnd); |
106 | } |
126 | } |
@@ -114,3 +134,4 @@ module this() { |
114 | pushfit_h = 7, |
134 | pushfit_h = 7, |
115 | interpushfit = extrusion_width |
135 | interpushfit = extrusion_width, |
| |
136 | joint = "narrow" |
116 | ); |
137 | ); |
|