summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--e3dv6.scad99
1 files changed, 99 insertions, 0 deletions
diff --git a/e3dv6.scad b/e3dv6.scad
new file mode 100644
index 0000000..902eb52
--- a/dev/null
+++ b/e3dv6.scad
@@ -0,0 +1,99 @@
+include <stuff.scad>;
+
+hb_w = 16; // width (along X axis)
+hb_l = 20; // length (along Y axis)
+hb_h = 11.5; // height (guess!)
+hb_d = 6; // heatbreak diameter
+n_offset_w = 8; // nozzle offset from the left
+n_offset_l = 4.5; // nozzle offset from the front
+n_d = 7/cos(30); // nozzle (outermost) diameter
+hs_offset_w = 8; // heater screw offset from the left
+hs_offset_l = 17.5; // heater screw offset from the front
+hs_d = 5.7; // heater screw diameter
+hs_t = 1.5; // heater screw head thickness
+ts_offset_l = 3.5; // thermistor screw offset from the front
+ts_offset_h = 4.8; // thermistor screw offset from the bottom
+ts_d = 7; // thermistor screw diameter
+ts_t = 2.6; // thermistor screw head thickness
+c_offset_l = 11.5; // cartrdige offset from the from
+c_offset_h = 4; // cartridge offset from the bottom
+c_d = 6.1; // cartrdige diameter
+c_t = 1.7; // cartridge protrusion length (thickness)
+c_tw = 4.3; // thickness of the other cartridge end with wires
+
+sv=hs_t+ss;
+
+the_w = ss + max(c_tw,ts_t)+hb_w+c_t + ss;
+the_l = ss + hb_l + ss;
+the_h = sv + hb_h + ss;
+
+use <bubbles.scad>;
+module heatershape(bubbled=true) {
+ m = n_offset_l-hb_d/2;
+ module topholes(h) {
+ hull() {
+ for(sx=[-1,1]) for(sy=[-1,1])
+ translate([hb_w/2+sx*(hb_w/2-m-hb_d/2),hb_l/2+sy*(hb_l/2-m-hb_d/2),0])
+ cylinder(d=hb_d,h=h,$fn=24);
+ }
+ translate([-c_tw,c_offset_l-c_d/2,0])
+ cube(size=[hb_w/2+c_tw,c_d,h]);
+ }
+ // main body and protrusion
+ // body
+ cube(size=[hb_w,hb_l,hb_h]);
+ // protrusion
+ translate([0,0,hb_h]) {
+ // irrelevant, because we print upside-down: mo = m+max(c_t,c_tw)+ss; th=3*ss;
+ mo = protrude/4; th = protrude/2;
+ translate([0,0,-1]) topholes(h=ss+protrude);
+ translate([0,0,ss+protrude-mo-th]) hull() {
+ topholes(h=layer_height);
+ translate([-c_tw-ss,-ss,mo])
+ cube(size=[the_w,the_l,th]);
+ }
+ }
+ // nozzle
+ translate([n_offset_w,n_offset_l,1]) mirror([0,0,1]) cylinder(d=n_d,h=sv+1,$fn=24);
+ // heater screw
+ translate([hs_offset_w,hs_offset_l,1]) mirror([0,0,1]) cylinder(d=hs_d,h=hs_t+1,$fn=24);
+ // thermistor screw
+ translate([1,ts_offset_l,ts_offset_h]) rotate([0,-90,0]) cylinder(d=ts_d,h=ts_t+1,$fn=24);
+ // cartridge on the right
+ translate([hb_w-1,c_offset_l,c_offset_h]) rotate([0,90,0]) cylinder(d=c_d,h=c_t+1,$fn=24);
+ // cartrdige on the left
+ translate([1,c_offset_l,c_offset_h]) rotate([0,-90,0]) cylinder(d=c_d,h=c_tw+1,$fn=24);
+ translate([-c_tw,c_offset_l-c_d/2,c_offset_h]) cube(size=[c_tw+1,c_d,hb_h-c_offset_h]);
+
+ if(bubbled) {
+ for(y=[0,hb_l]) translate([0,y,0]) bubbles(size=[hb_w,ss/2,hb_h]);
+ rotate([0,0,90]) bubbles(size=[hb_l,(c_tw+ss)/2,hb_h],d=(c_tw+ss)/2,s=1.1*(c_tw+ss)/2);
+ translate([hb_w,0,0]) rotate([0,0,90]) bubbles(size=[hb_l,(c_t+ss)/2,hb_h],d=(c_t+ss),s=1.1*(c_t+ss));
+ rotate([-90,0,0]) bubbles(size=[hb_w,sv/2,hb_l]);
+ }
+}
+
+function vc(d,h) = PI*pow(d/2,2)*h; // cylinder volume
+
+vol_ = the_w*the_l*the_h
+ - hb_w*hb_l*hb_h // heater block
+ - vc(d=n_d,h=sv) // nozzle
+ - vc(d=hs_d,h=hs_t) // heater screw
+ - vc(d=ts_d,h=ts_t) // thermistor_screw
+ - vc(d=c_d,h=c_t) // cartridge on the right
+ - vc(d=c_d,h=c_tw)/2 - c_d*c_tw*(hb_h-c_offset_h) // cartridge on the left
+;
+vol = vol_*1.2;
+echo("volume",vol);
+
+use <view.scad>;
+use <mold.scad>;
+
+view="*";
+
+view(view=view,volume=vol) {
+ mold(size=[the_w,the_l,the_h],s=ms,v_protrude=protrude,introffset=ss+c_offset_l);
+ translate([ms+c_tw+ss,ms+ss,ms+sv]) heatershape();
+ translate([ms+epsilon,ms+epsilon,ms+epsilon]) cube(size=[the_w-2*epsilon,the_l-2*epsilon,the_h-2*epsilon]);
+}
+/* vim:set ai sw=1: */