-rw-r--r-- | x-carriage-adapter.scad | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/x-carriage-adapter.scad b/x-carriage-adapter.scad index 9cf6c08..9891072 100644 --- a/x-carriage-adapter.scad +++ b/x-carriage-adapter.scad | |||
@@ -26,24 +26,28 @@ ms_screws_apart = 9.5; // distance between microswitch mounting screws | |||
26 | ms_switch_offset = 2.5; // the offset of the switch from the center | 26 | ms_switch_offset = 2.5; // the offset of the switch from the center |
27 | ms_bump = ms_size[1]; // how far from hinge microswitch is mounted | 27 | ms_bump = ms_size[1]; // how far from hinge microswitch is mounted |
28 | 28 | ||
29 | lower_by = 15; // lower hotend from the original intention by this long | 29 | lower_by = 15; // lower hotend from the original intention by this long |
30 | gap = 5; // gap between microswitch and heatsink | 30 | gap = 5; // gap between microswitch and heatsink |
31 | 31 | ||
32 | ps_offset = 3+3; // pushscrew offset from the hinge | 32 | ps_offset = 3+3; // pushscrew offset from the hinge |
33 | 33 | ||
34 | back_thickness = 8; // thickness of the part behind the hinge | 34 | back_thickness = 8; // thickness of the part behind the hinge |
35 | nut_thickness = 2.5; // intelligent guess should suffice | 35 | nut_thickness = 2.5; // intelligent guess should suffice |
36 | nut_width = 5.5; // intelligent guess should suffice | 36 | nut_width = 5.5; // intelligent guess should suffice |
37 | 37 | ||
38 | link_thickness=3; // thickness of link holder protrusion | ||
39 | link_or=3.5; // link outer diameter | ||
40 | link_ir=1.5; // link inner diameter | ||
41 | |||
38 | use <threads.scad>; | 42 | use <threads.scad>; |
39 | /* the internal thread for e3d bowden coupling: http://e3d-online.com/E3D-v6/Spares/Threaded-Bowden-Coupling-1.75mm-Filament */ | 43 | /* the internal thread for e3d bowden coupling: http://e3d-online.com/E3D-v6/Spares/Threaded-Bowden-Coupling-1.75mm-Filament */ |
40 | module pushfit_thread(h=thread_h) { | 44 | module pushfit_thread(h=thread_h) { |
41 | thr = 3/8 + .5/25.4; | 45 | thr = 3/8 + .5/25.4; |
42 | slit = 25.4*thr/2 + 0.4; | 46 | slit = 25.4*thr/2 + 0.4; |
43 | translate([0,0,-1]) if(draft) cylinder(d=thr*25.4,h=h+2); | 47 | translate([0,0,-1]) if(draft) cylinder(d=thr*25.4,h=h+2); |
44 | else english_thread(diameter=thr,threads_per_inch=28,length=(h+2)/25.4,internal=true); | 48 | else english_thread(diameter=thr,threads_per_inch=28,length=(h+2)/25.4,internal=true); |
45 | translate([-2,-slit,-1]) cube([4,slit,h+2]); | 49 | translate([-2,-slit,-1]) cube([4,slit,h+2]); |
46 | } | 50 | } |
47 | 51 | ||
48 | 52 | ||
49 | sff = hs_nozzles_from_back+gap; // switch from feeds | 53 | sff = hs_nozzles_from_back+gap; // switch from feeds |
@@ -57,24 +61,33 @@ module holder() { | |||
57 | rf = 6; drf = feed_shell_d/2-rf; | 61 | rf = 6; drf = feed_shell_d/2-rf; |
58 | for(sx=[-1,1]) translate([sx*feeds_apart/2,0,0]) { | 62 | for(sx=[-1,1]) translate([sx*feeds_apart/2,0,0]) { |
59 | translate([0,0,drf]) | 63 | translate([0,0,drf]) |
60 | cylinder(d=feed_shell_d,h=thread_h-drf,$fn=60); | 64 | cylinder(d=feed_shell_d,h=thread_h-drf,$fn=60); |
61 | cylinder(r=rf,h=thread_h,$fn=30); | 65 | cylinder(r=rf,h=thread_h,$fn=30); |
62 | } | 66 | } |
63 | for(mhot = mounting_holes_on_top) translate([mhot[0],mhot[1],0]) { | 67 | for(mhot = mounting_holes_on_top) translate([mhot[0],mhot[1],0]) { |
64 | translate([0,0,drs]) | 68 | translate([0,0,drs]) |
65 | cylinder(d=screw_shell_d,h=thread_h-drs,$fn=30); | 69 | cylinder(d=screw_shell_d,h=thread_h-drs,$fn=30); |
66 | cylinder(r=rs,h=thread_h,$fn=30); | 70 | cylinder(r=rs,h=thread_h,$fn=30); |
67 | } | 71 | } |
68 | } | 72 | } |
73 | difference() { | ||
74 | hx0 = max(mounting_holes_on_top[1][1],mounting_holes_on_top[2][1])+screw_shell_d/2; | ||
75 | hull() { | ||
76 | for(ls=[-1,1]) translate([0,hx0+ls*link_or,thread_h+ls*link_or]) | ||
77 | rotate([0,90,0]) cylinder(r=link_or,h=link_thickness,center=true,$fn=30); | ||
78 | } | ||
79 | translate([0,hx0+link_or,thread_h+link_or]) | ||
80 | rotate([0,90,0]) cylinder(r=link_ir,h=link_thickness+2,center=true,$fn=30); | ||
81 | } // difference | ||
69 | hull() { | 82 | hull() { |
70 | translate([0,0,thread_h/2]) cube(size=[hs_size[0]-2*hinge_s-2*slide_tolerance,feed_shell_d,thread_h],center=true); | 83 | translate([0,0,thread_h/2]) cube(size=[hs_size[0]-2*hinge_s-2*slide_tolerance,feed_shell_d,thread_h],center=true); |
71 | translate([0,-hff,thread_h/2]) | 84 | translate([0,-hff,thread_h/2]) |
72 | rotate([0,90,0]) | 85 | rotate([0,90,0]) |
73 | cylinder(d=thread_h,h=hs_size[0]-2*hinge_s-2*slide_tolerance,center=true,$fn=60); | 86 | cylinder(d=thread_h,h=hs_size[0]-2*hinge_s-2*slide_tolerance,center=true,$fn=60); |
74 | } | 87 | } |
75 | }//union | 88 | }//union |
76 | for(sx=[-1,1]) translate([sx*feeds_apart/2,0,0]) | 89 | for(sx=[-1,1]) translate([sx*feeds_apart/2,0,0]) |
77 | pushfit_thread(); | 90 | pushfit_thread(); |
78 | for(mhot = mounting_holes_on_top) translate([mhot[0],mhot[1],0]) { | 91 | for(mhot = mounting_holes_on_top) translate([mhot[0],mhot[1],0]) { |
79 | translate([0,0,-1]) cylinder(d=3,h=thread_h+2,$fn=12); // TODO: sink heads | 92 | translate([0,0,-1]) cylinder(d=3,h=thread_h+2,$fn=12); // TODO: sink heads |
80 | translate([0,0,thread_h/2]) cylinder(d=screwhead_d+slide_tolerance,h=thread_h/2+1,$fn=30); | 93 | translate([0,0,thread_h/2]) cylinder(d=screwhead_d+slide_tolerance,h=thread_h/2+1,$fn=30); |