summaryrefslogtreecommitdiff
path: root/x-carriage-adapter.scad
Side-by-side diff
Diffstat (limited to 'x-carriage-adapter.scad') (more/less context) (ignore whitespace changes)
-rw-r--r--x-carriage-adapter.scad13
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
ms_switch_offset = 2.5; // the offset of the switch from the center
ms_bump = ms_size[1]; // how far from hinge microswitch is mounted
lower_by = 15; // lower hotend from the original intention by this long
gap = 5; // gap between microswitch and heatsink
ps_offset = 3+3; // pushscrew offset from the hinge
back_thickness = 8; // thickness of the part behind the hinge
nut_thickness = 2.5; // intelligent guess should suffice
nut_width = 5.5; // intelligent guess should suffice
+link_thickness=3; // thickness of link holder protrusion
+link_or=3.5; // link outer diameter
+link_ir=1.5; // link inner diameter
+
use <threads.scad>;
/* the internal thread for e3d bowden coupling: http://e3d-online.com/E3D-v6/Spares/Threaded-Bowden-Coupling-1.75mm-Filament */
module pushfit_thread(h=thread_h) {
thr = 3/8 + .5/25.4;
slit = 25.4*thr/2 + 0.4;
translate([0,0,-1]) if(draft) cylinder(d=thr*25.4,h=h+2);
else english_thread(diameter=thr,threads_per_inch=28,length=(h+2)/25.4,internal=true);
translate([-2,-slit,-1]) cube([4,slit,h+2]);
}
sff = hs_nozzles_from_back+gap; // switch from feeds
@@ -57,24 +61,33 @@ module holder() {
rf = 6; drf = feed_shell_d/2-rf;
for(sx=[-1,1]) translate([sx*feeds_apart/2,0,0]) {
translate([0,0,drf])
cylinder(d=feed_shell_d,h=thread_h-drf,$fn=60);
cylinder(r=rf,h=thread_h,$fn=30);
}
for(mhot = mounting_holes_on_top) translate([mhot[0],mhot[1],0]) {
translate([0,0,drs])
cylinder(d=screw_shell_d,h=thread_h-drs,$fn=30);
cylinder(r=rs,h=thread_h,$fn=30);
}
}
+ difference() {
+ hx0 = max(mounting_holes_on_top[1][1],mounting_holes_on_top[2][1])+screw_shell_d/2;
+ hull() {
+ for(ls=[-1,1]) translate([0,hx0+ls*link_or,thread_h+ls*link_or])
+ rotate([0,90,0]) cylinder(r=link_or,h=link_thickness,center=true,$fn=30);
+ }
+ translate([0,hx0+link_or,thread_h+link_or])
+ rotate([0,90,0]) cylinder(r=link_ir,h=link_thickness+2,center=true,$fn=30);
+ } // difference
hull() {
translate([0,0,thread_h/2]) cube(size=[hs_size[0]-2*hinge_s-2*slide_tolerance,feed_shell_d,thread_h],center=true);
translate([0,-hff,thread_h/2])
rotate([0,90,0])
cylinder(d=thread_h,h=hs_size[0]-2*hinge_s-2*slide_tolerance,center=true,$fn=60);
}
}//union
for(sx=[-1,1]) translate([sx*feeds_apart/2,0,0])
pushfit_thread();
for(mhot = mounting_holes_on_top) translate([mhot[0],mhot[1],0]) {
translate([0,0,-1]) cylinder(d=3,h=thread_h+2,$fn=12); // TODO: sink heads
translate([0,0,thread_h/2]) cylinder(d=screwhead_d+slide_tolerance,h=thread_h/2+1,$fn=30);