Structural changes
authorprusajr <josefprusa@me.com>
Mon, 13 Aug 2012 10:36:53 +0000 (12:36 +0200)
committerprusajr <josefprusa@me.com>
Mon, 13 Aug 2012 10:36:53 +0000 (12:36 +0200)
45 files changed:
Makefile [deleted file]
bushing.scad [deleted file]
extras/foldingclamp.scad [deleted file]
extras/gregs-wade-v3.scad [deleted file]
extras/groovemount.scad [deleted file]
output/README [deleted file]
src/bearing-guide.scad [moved from bearing-guide.scad with 100% similarity]
src/bushing.scad [new file with mode: 0644]
src/common.tdoc [moved from common.tdoc with 100% similarity]
src/compact-extruder.scad [moved from compact-extruder.scad with 68% similarity]
src/configuration.scad.dist [moved from configuration.scad.dist with 100% similarity]
src/corners.scad [moved from corners.scad with 80% similarity]
src/doc/boxframe.scad [moved from doc/boxframe.scad with 100% similarity]
src/doc/complete-printer.scad [moved from doc/complete-printer.scad with 100% similarity]
src/doc/framestep1.png [moved from doc/framestep1.png with 100% similarity]
src/doc/framestep2.png [moved from doc/framestep2.png with 100% similarity]
src/doc/framestep3.png [moved from doc/framestep3.png with 100% similarity]
src/doc/framestep4.png [moved from doc/framestep4.png with 100% similarity]
src/doc/framestep5.png [moved from doc/framestep5.png with 100% similarity]
src/doc/framestep6.png [moved from doc/framestep6.png with 100% similarity]
src/doc/manual.txt [moved from doc/manual.txt with 100% similarity]
src/doc/ystep1.png [moved from doc/ystep1.png with 100% similarity]
src/doc/ystep10.png [moved from doc/ystep10.png with 100% similarity]
src/doc/ystep11.png [moved from doc/ystep11.png with 100% similarity]
src/doc/ystep2.png [moved from doc/ystep2.png with 100% similarity]
src/doc/ystep3.png [moved from doc/ystep3.png with 100% similarity]
src/doc/ystep4.png [moved from doc/ystep4.png with 100% similarity]
src/doc/ystep5.png [moved from doc/ystep5.png with 100% similarity]
src/doc/ystep6.png [moved from doc/ystep6.png with 100% similarity]
src/doc/ystep7.png [moved from doc/ystep7.png with 100% similarity]
src/doc/ystep8.png [moved from doc/ystep8.png with 100% similarity]
src/doc/ystep9.png [moved from doc/ystep9.png with 100% similarity]
src/frame-connector.scad [new file with mode: 0644]
src/inc/functions.scad [moved from inc/functions.scad with 100% similarity]
src/inc/metric.scad [moved from inc/metric.scad with 100% similarity]
src/test-holder.scad [new file with mode: 0644]
src/x-carriage.scad [moved from x-carriage.scad with 87% similarity]
src/x-end.scad [moved from x-end.scad with 100% similarity]
src/y-belt-holder.scad [new file with mode: 0644]
src/y-drivetrain.scad [moved from y-drivetrain.scad with 100% similarity]
src/z-axis-bottom.scad [new file with mode: 0644]
src/z-axis-top.scad [new file with mode: 0644]
y-belt-holder.scad [deleted file]
y-bottom-plate-mount.scad [deleted file]
z-axis.scad [deleted file]

diff --git a/Makefile b/Makefile
deleted file mode 100644 (file)
index 59d06dc..0000000
--- a/Makefile
+++ /dev/null
@@ -1,14 +0,0 @@
-#openscad -o output/bushing.stl bushing.scad
-
-INCLUDES = $(wildcard inc/*.scad)
-
-MODELS = $(filter-out configuration.scad, $(wildcard *.scad))
-
-STL_FILES_1 = $(foreach src, $(MODELS),output/$(src))
-STL_FILES = $(STL_FILES_1:%.scad=%.stl)
-
-all: $(STL_FILES)
-
-output/%.stl: %.scad $(INCLUDES) configuration.scad
-       mkdir -p output
-       openscad -o $@ $<
diff --git a/bushing.scad b/bushing.scad
deleted file mode 100644 (file)
index c4c6c44..0000000
+++ /dev/null
@@ -1,183 +0,0 @@
-// PRUSA iteration3
-// Bushing/bearing housings
-// GNU GPL v3
-// Josef Průša <josefprusa@me.com>
-// Václav 'ax' Hůla <axtheb@gmail.com>
-// http://www.reprap.org/wiki/Prusa_Mendel
-// http://github.com/prusajr/PrusaMendel
-
-include <configuration.scad>
-
-/**
- * @id bushing
- * @name Bushing
- * @category Printed
- * @id bushing
- */
-
-// Linear bearing options
-lm8uu_diameter=(bearing_type==1) ? 16 : 15;
-lm8uu_length=(bearing_type==1) ? 25 : 24;
-lm8uu_radius = lm8uu_diameter / 2;
-block_height = 2*lm8uu_length+17;
-
-// basic building blocks, housings for 1 bushing/bearing
-// at [0,0] there is center of the smooth rod, pointing in Z
-
-module linear_bushing_square(h=11) {
-    translate([0,0,h/2]) {
-        difference(){
-            union(){
-                translate([-10.5/2,0,0]) cube([10.5,13.8,h], center = true);
-                cube([13.8,13.8,h], center = true);
-            }
-            cube([9,9,h+0.02], center = true);
-        }
-    }
-}
-
-module linear_bushing_round(h=11) {
-    difference(){
-        union(){
-            translate([-10.5/2,0,h/2]) cube([10.5,13.8,h], center = true);
-            cylinder(r=7.5, h=h);
-        }
-        translate([0,0,-0.01])  cylinder(r=5.1, h=h+0.02);
-    }
-}
-
-module linear_bushing_bronze(h=11) {
-    difference(){
-        union(){
-            translate([-10.5/2,0,h/2]) cube([10.5,13.8,h], center = true);
-            cylinder(r=10.7, h=h);
-        }
-        translate([0,0,-0.01])  cylinder(r=8.1, h=h+0.02);
-    }
-}
-
-// select right bushing and cut it at angle, so it can be printed upside down
-module linear_bushing_long(h=30){
-    intersection(){
-        if (bushing_type == 0) {
-            linear_bushing_square(h);
-        }
-        if (bushing_type == 1) {
-            linear_bushing_round(h);
-        }
-        if (bushing_type == 2) {
-            linear_bushing_bronze(h);
-        }
-        if (bushing_type == 2) {
-            translate([0, 0, 0]) rotate([0,-55,0]) cube([30, 40, 80], center=true);
-        } else {
-            translate([0, 0, -4]) rotate([0,-45,0]) cube([30, 40, 80], center=true);
-        }
-    }
-}
-
-module linear_bushing(h=65){
-    translate([-9.5,0,h/2]) cube([2,13.8,h], center=true);
-    linear_bushing_long(h);
-    if (h>30) {
-        translate([0,0,h]) mirror([0,0,1]) linear_bushing_long(30);
-    }
-}
-
-//this is for Z axis
-module bushing_negative(h=lm8uu_length+4){
-    if (bearing_choice == 1) {
-        if (bushing_type == 0) {
-            translate([0,0,h/2]) cube([9,9,h+0.02], center = true);
-        }
-        if (bushing_type == 1) {
-            translate([0,0,-0.01])  cylinder(r=5.1, h=h+0.02);
-        }
-        if (bushing_type == 2) {
-            translate([0,0,-0.01])  cylinder(r=8.1, h=h+0.02);
-        }
-    } else {
-        translate([0,0,-0.01])  cylinder(r=lm8uu_radius+0.4, h=h+0.02);
-    }
-
-}
-
-module firm_foot(){
-    difference(){
-        union() {
-            translate([0,13,0]) cube_fillet([3,18,20], top=[11,0,0,0], center=true);
-        }
-        translate([1.5,14,0]) rotate([0,-90,0]) screw();
-    }
-}
-
-module spring_foot(){
-
-    difference(){
-        union() {
-            translate([0.5,23.5,0]) cube_fillet([3,14,20], top=[11,0,0,0], center=true);
-            translate([5,17,0]) rotate([0,0,-15]) cube_fillet([12,3,20], center=true);
-            translate([5,13,0]) rotate([0,0,25]) cube_fillet([13,3,20], center=true);
-            translate([0,9,0]) cube_fillet([3,6,20], vertical=[0,2,0,0], center=true);
-        }
-        translate([2,24,0]) rotate([0,-90,0]) screw();
-    }
-}
-
-module y_bearing(float=false){
-    if (bearing_choice == 2) {
-        linear_bearing(lm8uu_length+4);
-    } else {
-        linear_bushing_long(20);
-    }
-    translate([-9,0,10]) {
-        if (float) {
-            spring_foot();
-            mirror([0,1,0]) spring_foot();
-        } else {
-            firm_foot();
-            mirror([0,1,0]) firm_foot();
-        }
-    }
-}
-
-
-module linear_bearing(h=0, fillet=false){
-    linear_holder_base((h > lm8uu_length+4)? h : lm8uu_length+4, fillet);
-    translate([-(3)/2-lm8uu_radius+2,0,1]) cube([3,18,2], center = true);
-    translate([-(3)/2-lm8uu_radius+2,0,((h > lm8uu_length+4)? h : lm8uu_length+4)-1]) cube([3,18,2], center = true);
-    if ( (h-4)/2 > lm8uu_length){
-        translate([-(3)/2-lm8uu_radius+2,0,h/2]) cube([3,18, (h-4)-2*lm8uu_length], center = true);
-    }
-}
-
-module linear_holder_base(length, fillet=false){
-
-    difference(){
-        union(){
-            //main block
-            translate([-10.5/2,0,length/2]) cube([10.5,lm8uu_diameter+5,length], center = true);
-            translate([0,0,0]) cylinder(h = length, r=lm8uu_radius+2.5, $fn=60);
-        }
-        //main axis
-        translate([0,0,-2]) cylinder(h = length+4, r=(lm8uu_diameter+0.2)/2, $fn=50);
-        // not needed for zip tie
-        //main cut
-        translate([10,0,length/2]) cube([20,14,length+4], center = true);
-        //smooth entry cut
-        translate([12,0,length/2]) rotate([0,0,45]) cube([20,20,length+4], center = true);
-        if (fillet) {
-            translate([0,0,length/2 ]) cube_negative_fillet([21,lm8uu_diameter+5,length], vertical=[0,3,3,0]);
-        }
-    }
-}
-
-
-%cylinder(r=4, h=90);
-y_bearing();
-translate([0,46,0]) y_bearing();
-if (bearing_choice == 2) {
-    translate([-22, 23, 0]) y_bearing();
-} else {
-    translate ([-26,23,0]) mirror([1,0,0]) y_bearing(true);
-}
diff --git a/extras/foldingclamp.scad b/extras/foldingclamp.scad
deleted file mode 100644 (file)
index 4d7d6de..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-// rod holder for prusa i3 in folded position
-module foldingclamp() {
-difference(){
-union(){
-translate([-7.5,0,0])rotate([0,0,0])cube(size = [15,30,15]);
-translate([-20,0,0])rotate([0,0,0])cube(size = [40,5,15]);
-//translate([0,23,0])rotate([0,0,45])cube(size = [6,6,15]);
-}
-translate([-2.5,5,-2])rotate([0,0,0])cube(size = [5,12,20]); //lightening hole
-translate([0,25,-1])rotate([0,0,0])cylinder(h=20, r=4); //main rod attachment hole
-translate([-13,10,7.5])rotate([90,0,0])cylinder(h=20, r=1.5); //screw attachment hole
-translate([13,10,7.5])rotate([90,0,0])cylinder(h=20, r=1.5); //screw attachment hole
-translate([-3,23,-2])rotate([0,0,0])cube(size = [6,12,20]); //rod access hole
-
-}
-}
-
-//foldingclamp();
-translate([-15,1,0])rotate([0,0,0])foldingclamp();
-translate([15,31,0])rotate([0,0,180])foldingclamp();
-translate([-15,-31,0])rotate([0,0,0])foldingclamp();
-translate([15,-1,0])rotate([0,0,180])foldingclamp();
diff --git a/extras/gregs-wade-v3.scad b/extras/gregs-wade-v3.scad
deleted file mode 100644 (file)
index 0190662..0000000
+++ /dev/null
@@ -1,877 +0,0 @@
-// Greg's Wade Extruder. \r
-// It is licensed under the Creative Commons - GNU GPL license. \r
-//  2010 by GregFrost\r
-// Extruder based on prusa git repo.\r
-// http://www.thingiverse.com/thing:6713\r
-// modified for i3 by vlnofka <vlnofka@gmail.com>\r
-\r
-include<../configuration.scad>\r
-include<../inc/functions.scad>\r
-\r
-///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r
-// Define the hotend_mounting style you want by specifying hotend_mount=style1+style2 etc.\r
-//e.g. wade(hotend_mount=groovemount+peek_reprapsource_mount);\r
-malcolm_hotend_mount=1;\r
-groovemount=2;\r
-peek_reprapsource_mount=4;\r
-arcol_mount=8;\r
-mendel_parts_v6_mount=16; \r
-grrf_peek_mount=32;\r
-wildseyed_mount=64;\r
-geared_extruder_nozzle=128; // http://reprap.org/wiki/Geared_extruder_nozzle\r
-jhead_mount=256;\r
-geeksbase_mount=512;\r
-malcolm_extrusion_mount=1024;  //broken\r
-\r
-//default_extruder_mount=malcolm_extrusion_mount;\r
-default_extruder_mount=groovemount;\r
-\r
-///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r
-\r
-mounting_holes_legacy=1;\r
-mounting_holes_symmetrical=2;\r
-default_mounting_holes=mounting_holes_symmetrical;\r
-\r
-///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r
-\r
-wade(hotend_mount=default_extruder_mount,\r
-       mounting_holes=default_mounting_holes);\r
-\r
-////CarriageVisualisation\r
-translate([-25.5,20,base_extra_depth+wade_block_depth+10]) rotate([-90,180,-90]) %import("../output/x-carriage.stl");\r
-%translate(large_wheel_translation) {\r
-       translate([0,0,-5])import("../output/wade-big-h.stl");\r
-       rotate([0,0,25]) translate([gear_separation,0,-1]) {\r
-               rotate([180,0,0]) import("../output/wade-small-h.stl");\r
-               rotate([0,0,-25]) translate([0,0,2]) {//nema17(places=[1,1,1,1], holes=true, shadow=5, $fn=7, h=8);\r
-               }\r
-       }\r
-}\r
-\r
-//translate([-14,39,0])\r
-//bearing_washer();\r
-\r
-//Place for printing\r
-\r
-//translate([50,56,15.25]) // This is the translation for the 3mm version.\r
-////translate([50,56,13.92]) // This is the translation for the 1.75mm version.\r
-//rotate(180)\r
-translate([-20,0,15.25])\r
-rotate([0,-90,0])\r
-//\r
-////Place for assembly.\r
-wadeidler(); \r
-\r
-///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r
-/**\r
- * Extruder\r
- * @name Extruder\r
- * @assembled\r
- * @using 1 small-gear\r
- * @id extruder\r
- * @using 1 idler\r
- * @using 1 extruder-body\r
- * @using 1 m3nut\r
- * @using 1 m3washer\r
- * @using 1 m3x25\r
- * @step Take idler and insert nut into small nut-trap inside the hinge.\r
- * @step While holding the nut in place, preprare M3x25 bolt with washer and screw it into the hinge just enough to hold the nut.\r
- * @step Now take the extruder body and idler. Place idler on the hinge counterpart and compleately screw the M3x25 bolt. This will create secured hinge.\r
- * \r
- * @using 2 m4nut\r
- * @step Place M4 nuts into their nut traps, secure them with piece of tape. We need them in place, since later they would be harder to access.\r
- * \r
- * @using 3 m3x10\r
- * @using 3 m3washer\r
- * @using 1 NEMA17\r
- * @step Prepare your NEMA17 stepper motor and three M3x10 screws with washers.\r
- * @step Hold motor on place and lightly tighten the screws. We need to adjust motor position later, no need to tighten it hard.\r
- * \r
- * @using 1 large-gear\r
- * @using 1 m8washer\r
- * @using 2 m8nut\r
- * @using 2 bearing-608\r
- * @step Place two skate bearings on ther position, they should snuggly fit in.\r
- * @step Insert prepared large gear into the body with mounted bearings.\r
- * @step Check if the alignment of hobbed part with the filament path. Adjust it accordingly with adding or removing M8 washers.\r
- * @step After adjusting, we need to fix the bolt in. So we place washer at the end of hobbed bolt and with two M8 nuts we will do locknut by tightening them against each other.\r
- * @step Check if large gear turns freely.\r
- * \r
- * @using 2 m3x40\r
- * @using 4 m3washer\r
- * @using 2 extruder-spring\r
- * @step Prepare two M3x40 screws with sandwitch of washer-spring-washer.\r
- * @step Insert two M3 nuts into nut traps on top of drive mechanism. [[extruder/top-nut-traps.png]]\r
- * @step Insert prepared screws into the holes on idler. Close the idler and tighten the screws into the trapped nuts. More you tighten those screws, more pressure will be on fillament.\r
- * @step Your extruder is done. [[extruder/assembled.jpg]]\r
- */\r
-\r
-/**\r
- * Extruder body\r
- * @name Extruder body\r
- * @category Printed\r
- * @id extruder-body\r
- */\r
-\r
-/**\r
- * Extruder idler\r
- * @name Extruder Idler\r
- * @id idler\r
- * @category Printed\r
- * @using 1 bearing-608\r
- * @using 1 idler-m8-piece\r
- * @step Insert piece of M8 rod into bearing.\r
- * @step Insert 608 bearing with rod into printed idler part.\r
- */\r
-\r
-/**\r
- * Small M8 rod \r
- * @name Idler\r
- * @id idler-m8-piece\r
- * @category Rods and Bars\r
- */\r
-\r
-/**\r
- * Spring used for idler on extruder.\r
- * @name Extruder spring\r
- * @id extruder-spring\r
- */\r
-\r
-//===================================================\r
-// Parameters defining the wade body:\r
-\r
-wade_block_height=55;\r
-wade_block_width=24;\r
-wade_block_depth=28;\r
-\r
-block_bevel_r=6;\r
-\r
-base_thickness=12;\r
-base_length=70+2-6;\r
-base_leadout=25+2+1-6;\r
-base_extra_depth=10;\r
-\r
-nema17_hole_spacing=31; \r
-nema17_width=1.7*25.4;\r
-nema17_support_d=nema17_width-nema17_hole_spacing;\r
-\r
-screw_head_recess_diameter=7.2;\r
-screw_head_recess_depth=3;\r
-\r
-motor_mount_rotation=0;\r
-//motor_mount_translation=[50.5,34+5,0];\r
-motor_mount_translation=[46.78,50.78,0];\r
-motor_mount_thickness=9;\r
-\r
-large_wheel_translation=[50.5-(7.4444+32.0111+0.25),34,0];\r
-\r
-m8_clearance_hole=8.8;\r
-hole_for_608=22.3;\r
-608_diameter=22;\r
-\r
-block_top_right=[wade_block_width,wade_block_height];\r
-\r
-layer_thickness=0.35;\r
-filament_diameter=3;\r
-filament_feed_hole_d=(filament_diameter*1.1)/cos(180/8);\r
-hobbing_depth=2;\r
-echo ("filament_feed_hole_d", filament_feed_hole_d);\r
-\r
-//This is the distance from the centre of the filament to the centre of the hobbed bolt.\r
-filament_feed_hole_offset=8/2-hobbing_depth+filament_diameter/2;\r
-\r
-echo ("filament_feed_hole_offset", filament_feed_hole_offset);\r
-\r
-idler_nut_trap_depth=7.5;\r
-idler_nut_thickness=4;\r
-\r
-gear_separation=7.4444+32.0111+0.25;\r
-\r
-function motor_hole(hole)=[\r
-       motor_mount_translation[0],\r
-       motor_mount_translation[1]]+\r
-       rotated(45+motor_mount_rotation+hole*90)*nema17_hole_spacing/sqrt(2);\r
-\r
-// Parameters defining the idler.\r
-\r
-filament_pinch=[\r
-       large_wheel_translation[0]-filament_feed_hole_offset-filament_diameter/2,\r
-       large_wheel_translation[1],\r
-       wade_block_depth/2];\r
-idler_axis=filament_pinch-[608_diameter/2,0,0];\r
-idler_fulcrum_offset=608_diameter/2+3.5+m3_diameter/2;\r
-idler_fulcrum=idler_axis-[0,idler_fulcrum_offset,0];\r
-idler_corners_radius=4; \r
-idler_height=12;\r
-idler_608_diameter=608_diameter+2;\r
-idler_608_height=9;\r
-idler_mounting_hole_across=8;\r
-idler_mounting_hole_up=15;\r
-idler_short_side=wade_block_depth-2;\r
-idler_hinge_r=m3_diameter/2+3.5;\r
-idler_hinge_width=6.5;\r
-idler_end_length=(idler_height-2)+5;\r
-idler_mounting_hole_diameter=m4_diameter+0.25;\r
-idler_mounting_hole_elongation=1;\r
-idler_long_top=idler_mounting_hole_up+idler_mounting_hole_diameter/2+idler_mounting_hole_elongation+2.5;\r
-idler_long_bottom=idler_fulcrum_offset;\r
-idler_long_side=idler_long_top+idler_long_bottom;\r
-\r
-module bearing_washer()\r
-{\r
-       difference()\r
-       {\r
-               cylinder(r=hole_for_608/2-0.05,h=1);\r
-               translate([0,0,-1])\r
-               cylinder(r=8,h=3);\r
-       }\r
-}\r
-\r
-module wade(\r
-       hotend_mount=default_extruder_mount,\r
-       mounting_holes=default_mounting_holes)\r
-{\r
-       difference ()\r
-       {\r
-               union()\r
-               {\r
-                       // The wade block.\r
-                       cube([wade_block_width,wade_block_height,wade_block_depth]);\r
-\r
-                       // Filler between wade block and motor mount.\r
-                       translate([10-2,0,0])\r
-                       cube([wade_block_width,\r
-                               wade_block_height,\r
-                               motor_mount_thickness]);\r
-\r
-                       // Round the ends of the base\r
-                       translate([base_length-base_leadout,0,0])\r
-                       cylinder(r=base_thickness/2,h=wade_block_depth+base_extra_depth,$fn=20);\r
-\r
-                       translate([-base_leadout,0,0])\r
-                       cylinder(r=base_thickness/2,h=wade_block_depth+base_extra_depth,$fn=20);\r
-\r
-                       //Provide the bevel betweeen the base and the wade block.\r
-                       render()\r
-                       difference()\r
-                       {\r
-                               translate([-block_bevel_r,0,0])\r
-                               cube([block_bevel_r*2+wade_block_width,\r
-                                       base_thickness/2+block_bevel_r,wade_block_depth+base_extra_depth]);                             \r
-                               translate([-block_bevel_r,block_bevel_r+base_thickness/2])\r
-                               cylinder(r=block_bevel_r,h=wade_block_depth+base_extra_depth,$fn=60);\r
-                               translate([wade_block_width+block_bevel_r,\r
-                                       block_bevel_r+base_thickness/2])\r
-                               cylinder(r=block_bevel_r,h=wade_block_depth+base_extra_depth,$fn=60);\r
-                       }\r
-\r
-                       // The idler hinge.\r
-                       translate(idler_fulcrum)\r
-                       {\r
-                               translate([idler_hinge_r,0,0])\r
-                               cube([idler_hinge_r*2,idler_hinge_r*2,idler_short_side-2*idler_hinge_width-0.5],\r
-                                       center=true);\r
-                               rotate(-30)\r
-                               {\r
-                                       cylinder(r=idler_hinge_r,\r
-                                               h=idler_short_side-2*idler_hinge_width-0.5,\r
-                                               center=true,$fn=60);\r
-                                       translate([idler_hinge_r,0,0])\r
-                                       cube([idler_hinge_r*2,idler_hinge_r*2,\r
-                                               idler_short_side-2*idler_hinge_width-0.5],\r
-                                               center=true);\r
-                               }\r
-                       }\r
-\r
-                       // The idler hinge support.\r
-                       translate(idler_fulcrum)\r
-                       {\r
-                               rotate(-15)\r
-                               translate([-(idler_hinge_r+3),-idler_hinge_r-2,-wade_block_depth/2])\r
-                               difference()\r
-                               {\r
-                               cube([idler_hinge_r+3,\r
-                                       idler_hinge_r*2+4,\r
-                                       wade_block_depth/2-\r
-                                       idler_short_side/2+\r
-                                       idler_hinge_width+0.25+\r
-                                       layer_thickness]);\r
-                               translate([idler_hinge_r+2,(idler_hinge_r*2+4)/2,layer_thickness*3])\r
-                               cylinder(r=idler_hinge_r+1,h=10,$fn=50);\r
-                               }\r
-                               rotate(-15)\r
-                               translate([-(idler_hinge_r+3),-idler_hinge_r-2,\r
-                                       -idler_short_side/2+idler_hinge_width+0.25])\r
-                               cube([idler_hinge_r+3+15,\r
-                                       idler_hinge_r*2+4,\r
-                                       layer_thickness]);\r
-                       }\r
-\r
-                       //The base.\r
-                       translate([-base_leadout,-base_thickness/2,0])\r
-                       cube([base_length,base_thickness,wade_block_depth+base_extra_depth]);\r
-                       //Base aligement helper\r
-                       translate([-base_leadout,-base_thickness/2,wade_block_depth+base_extra_depth])\r
-                       cube([base_length,1,layer_thickness]);\r
-                       \r
-\r
-                       motor_mount ();\r
-               }\r
-\r
-               block_holes(mounting_holes=mounting_holes);\r
-               motor_mount_holes ();\r
-\r
-               translate([large_wheel_translation[0]-filament_feed_hole_offset,\r
-                       -base_thickness/2,wade_block_depth/2])\r
-               rotate([-90,0,0])\r
-               {\r
-                       if (in_mask (hotend_mount,malcolm_hotend_mount))\r
-                               malcolm_hotend_holes ();\r
-                       if (in_mask (hotend_mount,groovemount))\r
-                               groovemount_holes ();\r
-                       if (in_mask (hotend_mount,peek_reprapsource_mount))\r
-                               peek_reprapsource_holes ();\r
-                       if (in_mask (hotend_mount,arcol_mount))\r
-                               arcol_mount_holes ();\r
-                       if (in_mask (hotend_mount,mendel_parts_v6_mount)) \r
-                               mendel_parts_v6_holes(insulator_d=12.7);\r
-                       if (in_mask(hotend_mount,grrf_peek_mount))\r
-                               grrf_peek_mount_holes();\r
-                       if (in_mask(hotend_mount,wildseyed_mount))\r
-                               wildseyed_mount_holes(insulator_d=12.7);\r
-                       if (in_mask(hotend_mount,geared_extruder_nozzle))\r
-                               mendel_parts_v6_holes(insulator_d=15);\r
-                       if (in_mask(hotend_mount,jhead_mount))\r
-                               wildseyed_mount_holes(insulator_d=16);\r
-                       if (in_mask (hotend_mount,geeksbase_mount))\r
-                               geeksbase_holes ();\r
-                       if (in_mask (hotend_mount,malcolm_extrusion_mount))\r
-                               malcolm_extrusion_holes ();\r
-               }\r
-       }\r
-}\r
-\r
-function in_mask(mask,value)=(mask%(value*2))>(value-1); \r
-\r
-//block_holes();\r
-\r
-module block_holes(mounting_holes=default_mounting_holes)\r
-{\r
-echo("bhmh", mounting_holes)\r
-       //Round off the top of the block. \r
-       translate([0,wade_block_height-block_bevel_r,-1])\r
-       render()\r
-       difference()\r
-       {\r
-               translate([-1,0,0])\r
-               cube([block_bevel_r+1,block_bevel_r+1,wade_block_depth+2]);\r
-               translate([block_bevel_r,0,0])\r
-               cylinder(r=block_bevel_r,h=wade_block_depth+2,$fn=40);\r
-       }\r
-\r
-       //carriage mountig holes\r
-       translate([-24.5+64+4,0,3]) {\r
-               translate([-50,0,0]) {\r
-                       translate([0,0,(wade_block_depth+base_extra_depth)/2+4+layer_thickness]) cylinder(r=m4_diameter/2, h=wade_block_depth+base_extra_depth, center=true,$fn=20);\r
-                       cylinder(r=m4_nut_diameter/2, h=8, center=true,$fn=20);\r
-               }\r
-               \r
-               translate([0,0,0]) {\r
-                       translate([0,0,(wade_block_depth+base_extra_depth)/2+4+layer_thickness]) cylinder(r=m4_diameter/2, h=wade_block_depth+0.2+base_extra_depth, center=true,$fn=20);\r
-                       cylinder(r=m4_nut_diameter/2, h=8, center=true,$fn=20);\r
-               }\r
-       }\r
-\r
-       // Idler fulcrum hole.\r
-       translate(idler_fulcrum+[0,0,0.4])\r
-       cylinder(r=m3_diameter/2,h=idler_short_side-2*idler_hinge_width-0.5,center=true,$fn=16);\r
-\r
-       translate(idler_fulcrum+[0,0,idler_short_side/2-idler_hinge_width-1])\r
-       cylinder(r=m3_nut_diameter/2+0.25,h=1,$fn=40);\r
-\r
-       //Rounded cutout for idler hinge.\r
-       render()\r
-       translate(idler_fulcrum)\r
-       difference()\r
-       {\r
-               cylinder(r=idler_hinge_r+0.5,h=idler_short_side+0.5,center=true,$fn=60);\r
-               cylinder(r=idler_hinge_r+1,h=idler_short_side-2*idler_hinge_width-0.5,center=true);\r
-       }\r
-\r
-       //translate(motor_mount_translation)\r
-       translate(large_wheel_translation)\r
-       {\r
-\r
-                       // Open the top to remove overhangs and to provide access to the hobbing.\r
-                       translate([-wade_block_width+2,0,9.5])\r
-                       cube([wade_block_width,\r
-                               wade_block_height-large_wheel_translation[1]+1,\r
-                               wade_block_depth]);\r
-               \r
-                       translate([0,0,-1])\r
-                       b608(h=9);\r
-               \r
-                       translate([0,0,20])\r
-                       b608(h=9);\r
-               \r
-                       translate([-13,0,9.5])\r
-                       b608(h=wade_block_depth);\r
-               \r
-                       translate([0,0,8+layer_thickness])\r
-                       cylinder(r=m8_clearance_hole/2,h=wade_block_depth-(8+layer_thickness)+2);       \r
-\r
-                       translate([0,0,20-2])\r
-                       cylinder(r=16/2,h=wade_block_depth-(8+layer_thickness)+2);      \r
-\r
-                       // Filament feed.\r
-                       translate([-filament_feed_hole_offset,0,wade_block_depth/2])\r
-                       rotate([90,0,0])\r
-                       rotate(360/16)\r
-                       cylinder(r=filament_feed_hole_d/2,h=wade_block_depth*3,center=true,$fn=8);      \r
-\r
-                       //Widened opening for hobbed bolt access.\r
-                       translate([2,wade_block_height/2+2,wade_block_depth/2+0.2])\r
-                       rotate([90,0,0])\r
-                       rotate(-45)\r
-                       union()\r
-                       {\r
-                       cylinder(r=5,h=wade_block_height,center=true,$fn=30);   \r
-                       translate([-5,0,0])\r
-                       cube([10,10,wade_block_height],center=true);\r
-                       }\r
-\r
-                       // Mounting holes on the base.\r
-                       //translate([0,-base_thickness/2,0])\r
-                       translate(\r
-                               (mounting_holes==mounting_holes_legacy)?[-3.4,0,-1]:[0,0,0])\r
-                       for (mount=[0:1])\r
-                       {\r
-                               translate([-filament_feed_hole_offset+25*((mount<1)?1:-1),\r
-                                       -large_wheel_translation[1]-1-base_thickness/2,wade_block_depth/2])\r
-                               rotate([-90,0,0])\r
-                               rotate(360/16)\r
-                               cylinder(r=m4_diameter/2,h=base_thickness+2,$fn=8);     \r
-       \r
-                               translate([-filament_feed_hole_offset+25*((mount<1)?1:-1),\r
-                                       -large_wheel_translation[1],\r
-                                       wade_block_depth/2])\r
-                               rotate([-90,0,0])\r
-                       //fixme: (correct height\r
-                               //cylinder(r=m4_nut_diameter/2,h=base_thickness,$fn=6); \r
-                               cylinder(r=m4_nut_diameter/2,h=29.3,$fn=6);\r
-                       }\r
-\r
-       }\r
-\r
-       // Idler mounting holes and nut traps.\r
-       for (idle=[-1,1])\r
-       {\r
-               translate([0,\r
-                       idler_mounting_hole_up+large_wheel_translation[1],\r
-                       wade_block_depth/2+idler_mounting_hole_across*idle])\r
-               rotate([0,90,0])\r
-               {\r
-                       rotate([0,0,180/8])\r
-                       translate([0,0,-1])\r
-                       cylinder(r=m4_diameter/2,h=wade_block_depth+6,$fn=8);   \r
-                       rotate([0,0,180/6])\r
-                       translate([0,0,wade_block_width-idler_nut_trap_depth])\r
-                       cylinder(r=m4_nut_diameter/2,h=idler_nut_thickness,$fn=6);      \r
-\r
-                       translate([0,10/2,wade_block_width-idler_nut_trap_depth+idler_nut_thickness/2])\r
-                       cube([m4_nut_diameter*cos(30),10,idler_nut_thickness],center=true);\r
-               }\r
-       }\r
-}\r
-\r
-module motor_mount()\r
-{\r
-       linear_extrude(height=motor_mount_thickness)\r
-       {\r
-               barbell (motor_hole(1),motor_hole(2),nema17_support_d/2, nema17_support_d/2,20,160);\r
-               barbell (motor_hole(2),motor_hole(3),nema17_support_d/2, nema17_support_d/2,20,160);\r
-\r
-               // Connect block to top of motor mount.\r
-               barbell(block_top_right-[0,5],motor_hole(1),5,nema17_support_d/2,100,60);\r
-\r
-               //Connect motor mount to base.\r
-               barbell([base_length-base_leadout,\r
-                       0],motor_hole(3),base_thickness/2,\r
-                       nema17_support_d/2,100,60);\r
-       }\r
-}\r
-\r
-module motor_mount_holes()\r
-{\r
-       radius=4/2;\r
-       slot_left=1;\r
-       slot_right=2;\r
-\r
-       {\r
-               translate([0,0,screw_head_recess_depth+layer_thickness])\r
-               for (hole=[0:3])\r
-               translate([motor_hole(hole)[0],motor_hole(hole)[1],0])\r
-               rotate([0,0,25])\r
-               {\r
-                       translate([-slot_left,0,0])\r
-                       cylinder(h=motor_mount_thickness-screw_head_recess_depth,r=radius,$fn=16);\r
-                       translate([slot_right,0,0])\r
-                       cylinder(h=motor_mount_thickness-screw_head_recess_depth,r=radius,$fn=16);\r
-\r
-                       translate([-slot_left,-radius,0])\r
-                       cube([slot_left+slot_right,radius*2,motor_mount_thickness-screw_head_recess_depth]);\r
-               }\r
-\r
-               translate([0,0,-1])\r
-               for (hole=[0:3])\r
-               translate([motor_hole(hole)[0],motor_hole(hole)[1],0])\r
-               rotate([0,0,25])\r
-               {\r
-                       translate([-slot_left,0,0])\r
-                       cylinder(h=screw_head_recess_depth+1,\r
-                               r=screw_head_recess_diameter/2,$fn=16);\r
-                       translate([slot_right,0,0])\r
-                       cylinder(h=screw_head_recess_depth+1,\r
-                               r=screw_head_recess_diameter/2,$fn=16);\r
-\r
-                       translate([-slot_left,-screw_head_recess_diameter/2,0])\r
-                       cube([slot_left+slot_right,\r
-                               screw_head_recess_diameter,\r
-                               screw_head_recess_depth+1]);\r
-               }\r
-       }\r
-}\r
-\r
-module wadeidler() \r
-{\r
-       guide_height=12.3;\r
-       guide_length=10;\r
-\r
-       difference()\r
-       {\r
-               union()\r
-               {\r
-                       //The idler block.\r
-                       translate(idler_axis+[-idler_height/2+2,+idler_long_side/2-idler_long_bottom,0])\r
-                       {\r
-                       cube([idler_height,idler_long_side,idler_short_side],center=true);\r
-\r
-                       //Filament Guide.\r
-                       translate([guide_height/2+idler_height/2-1,idler_long_side/2-guide_length/2,0])\r
-                       cube([guide_height+1,guide_length,8],center=true);\r
-                       }\r
-\r
-                       // The fulcrum Hinge\r
-                       translate(idler_fulcrum)\r
-                       rotate([0,0,-30])\r
-                       {\r
-                               cylinder(h=idler_short_side,r=idler_hinge_r,center=true,$fn=60);\r
-                               translate([-idler_end_length/2,0,0])\r
-                               cube([idler_end_length,idler_hinge_r*2,idler_short_side],center=true);\r
-                       }\r
-               }\r
-\r
-               //Filament Path \r
-               translate(idler_axis+[2+guide_height,+idler_long_side-idler_long_bottom-guide_length/2,0])\r
-               {\r
-               cube([7,guide_length+2,filament_diameter+0.5],center=true);\r
-               translate([-7/2,0,0])\r
-               rotate([90,0,0])\r
-               cylinder(h=guide_length+4,r=(filament_diameter+0.5)/2,center=true,$fn=16);\r
-               }\r
-\r
-               //Back of idler.\r
-               translate(idler_axis+[-idler_height/2+2-idler_height,\r
-                       idler_long_side/2-idler_long_bottom-10,0])\r
-               cube([idler_height,idler_long_side,idler_short_side+2],center=true);\r
-\r
-               //Slot for idler fulcrum mount.\r
-               translate(idler_fulcrum)\r
-               {\r
-                       cylinder(h=idler_short_side-2*idler_hinge_width,\r
-                               r=idler_hinge_r+0.5,center=true,$fn=60);\r
-                       rotate(-30)\r
-                       translate([0,-idler_hinge_r-0.5,0])\r
-                       cube([idler_hinge_r*2+1,idler_hinge_r*2+1,\r
-                               idler_short_side-2*idler_hinge_width],center=true);\r
-               }\r
-\r
-               //Bearing cutout.\r
-               translate(idler_axis)\r
-               {\r
-                       difference()\r
-                       {\r
-                               cylinder(h=idler_608_height,r=idler_608_diameter/2,\r
-                                       center=true,$fn=60);\r
-                               for (i=[0,1])\r
-                               rotate([180*i,0,0])\r
-                               translate([0,0,6.9/2])\r
-                               cylinder(r1=12/2,r2=16/2,h=2);\r
-                       }\r
-                       cylinder(h=idler_short_side-6,r=m8_diameter/2-0.25/*Tight*/,\r
-                               center=true,$fn=20);\r
-               }\r
-\r
-               //Fulcrum hole.\r
-               translate(idler_fulcrum)\r
-               rotate(180/8)\r
-               cylinder(h=idler_short_side+2,r=m3_diameter/2-0.1,center=true,$fn=8);\r
-\r
-               //Nut trap for fulcrum screw.\r
-               translate(idler_fulcrum+[0,0,idler_short_side/2-idler_hinge_width-1])\r
-               rotate(360/16)\r
-               cylinder(h=3,r=m3_nut_diameter/2,$fn=6);\r
-\r
-               for(idler_screw_hole=[-1,1])\r
-               translate(idler_axis+[2-idler_height,0,0])\r
-               {\r
-                       //Screw Holes.\r
-                       translate([-1,idler_mounting_hole_up,\r
-                               idler_screw_hole*idler_mounting_hole_across])\r
-                       rotate([0,90,0])\r
-                       {\r
-                               cylinder(r=idler_mounting_hole_diameter/2,h=idler_height+2,$fn=16);\r
-                               translate([0,idler_mounting_hole_elongation,0])\r
-                               cylinder(r=idler_mounting_hole_diameter/2,h=idler_height+2,$fn=16);\r
-                               translate([-idler_mounting_hole_diameter/2,0,0])\r
-                               cube([idler_mounting_hole_diameter,idler_mounting_hole_elongation,\r
-                                       idler_height+2]);\r
-                       }\r
-\r
-                       // Rounded corners.\r
-                       render()\r
-                       translate([idler_height/2,idler_long_top,\r
-                               idler_screw_hole*(idler_short_side/2)])\r
-                       difference()\r
-                       {\r
-                               translate([0,-idler_corners_radius/2+0.5,-idler_screw_hole*(idler_corners_radius/2-0.5)])\r
-                               cube([idler_height+2,idler_corners_radius+1,idler_corners_radius+1],\r
-                                       center=true);\r
-                               rotate([0,90,0])\r
-                               translate([idler_screw_hole*idler_corners_radius,-idler_corners_radius,0])\r
-                               cylinder(h=idler_height+4,r=idler_corners_radius,center=true,$fn=40);\r
-                       }\r
-               }\r
-       }\r
-}\r
-\r
-module b608(h=8)\r
-{\r
-       translate([0,0,h/2]) cylinder(r=hole_for_608/2,h=h,center=true,$fn=60);\r
-}\r
-\r
-module barbell (x1,x2,r1,r2,r3,r4) \r
-{\r
-       x3=triangulate (x1,x2,r1+r3,r2+r3);\r
-       x4=triangulate (x2,x1,r2+r4,r1+r4);\r
-       render()\r
-       difference ()\r
-       {\r
-               union()\r
-               {\r
-                       translate(x1)\r
-                       circle (r=r1);\r
-                       translate(x2)\r
-                       circle(r=r2);\r
-                       polygon (points=[x1,x3,x2,x4]);\r
-               }\r
-               \r
-               translate(x3)\r
-               circle(r=r3,$fa=5);\r
-               translate(x4)\r
-               circle(r=r4,$fa=5);\r
-       }\r
-}\r
-\r
-function triangulate (point1, point2, length1, length2) = \r
-point1 + \r
-length1*rotated(\r
-atan2(point2[1]-point1[1],point2[0]-point1[0])+\r
-angle(distance(point1,point2),length1,length2));\r
-\r
-function distance(point1,point2)=\r
-sqrt((point1[0]-point2[0])*(point1[0]-point2[0])+\r
-(point1[1]-point2[1])*(point1[1]-point2[1]));\r
-\r
-function angle(a,b,c) = acos((a*a+b*b-c*c)/(2*a*b)); \r
-\r
-function rotated(a)=[cos(a),sin(a),0];\r
-\r
-//========================================================\r
-// Modules for defining holes for hotend mounts:\r
-// These assume the extruder is verical with the bottom filament exit hole at [0,0,0].\r
-\r
-//malcolm_hotend_holes ();\r
-module malcolm_hotend_holes ()\r
-{\r
-       extruder_recess_d=16; \r
-       extruder_recess_h=3.5;\r
-\r
-       // Recess in base\r
-       translate([0,0,-1])\r
-       cylinder(r=extruder_recess_d/2,h=extruder_recess_h+1);  \r
-}\r
-\r
-//groovemount_holes ();\r
-module groovemount_holes ()\r
-{\r
-       extruder_recess_d=16; \r
-       extruder_recess_h=5.5;\r
-\r
-       // Recess in base\r
-       translate([0,0,-1])\r
-       cylinder(r=extruder_recess_d/2,h=extruder_recess_h+1);  \r
-}\r
-\r
-//peek_reprapsource_holes ();\r
-module peek_reprapsource_holes ()\r
-{\r
-       extruder_recess_d=11;\r
-       extruder_recess_h=19; \r
-\r
-       // Recess in base\r
-       translate([0,0,-1])\r
-       cylinder(r=extruder_recess_d/2,h=extruder_recess_h+1);  \r
-\r
-       // Mounting holes to affix the extruder into the recess.\r
-       translate([0,0,min(extruder_recess_h/2, base_thickness/2)])\r
-       rotate([-90,0,0])\r
-       cylinder(r=m4_diameter/2-0.5/* tight */,h=wade_block_depth+2,center=true); \r
-}\r
-\r
-//arcol_mount_holes();\r
-module arcol_mount_holes() \r
-{ \r
-       hole_axis_rotation=42.5; \r
-       hole_separation=30;\r
-       hole_slot_height=4;\r
-       for(mount=[-1,1])\r
-       translate([hole_separation/2*mount,-7,0]) \r
-       {\r
-               translate([0,0,-1])\r
-               cylinder(r=m4_diameter/2,h=base_thickness+2,$fn=8);\r
-               \r
-               translate([0,0,base_thickness/2])\r
-               //rotate(hole_axis_rotation)\r
-               {\r
-                       cylinder(r=m4_nut_diameter/2,h=base_thickness/2+hole_slot_height,$fn=6);\r
-                       translate([0,-m4_nut_diameter,hole_slot_height/2+base_thickness/2]) \r
-                       cube([m4_nut_diameter,m4_nut_diameter*2,hole_slot_height],\r
-                       center=true);\r
-               }\r
-       }\r
-}\r
-\r
-//mendel_parts_v6_holes ();\r
-module mendel_parts_v6_holes (insulator_d=12.7) \r
-{\r
-       extruder_recess_d=insulator_d+0.7;\r
-       extruder_recess_h=10; \r
-       hole_axis_rotation=42.5; \r
-       hole_separation=30;\r
-       hole_slot_height=5;\r
-       \r
-       // Recess in base\r
-       translate([0,0,-1])\r
-       cylinder(r=extruder_recess_d/2,h=extruder_recess_h+1); \r
-       \r
-       for(mount=[-1,1])\r
-       rotate([0,0,hole_axis_rotation+90+90*mount])\r
-       translate([hole_separation/2,0,0])\r
-       {\r
-               translate([0,0,-1])\r
-               cylinder(r=m4_diameter/2,h=base_thickness+2,$fn=8);\r
-\r
-               translate([0,0,base_thickness/2])\r
-               rotate(-hole_axis_rotation+180)\r
-               {\r
-//                     rotate(30)\r
-                       cylinder(r=m4_nut_diameter/2,h=base_thickness/2+hole_slot_height,$fn=6);\r
-                       translate([0,-m4_nut_diameter,hole_slot_height/2+base_thickness/2]) \r
-                       cube([m4_nut_diameter,m4_nut_diameter*2,hole_slot_height],\r
-                                       center=true);\r
-               }\r
-       }\r
-}\r
-\r
-//grrf_peek_mount_holes();\r
-module grrf_peek_mount_holes()  \r
-{  \r
-       extruder_recess_d=16.5;\r
-       extruder_recess_h=10;\r
-\r
-       // Recess in base\r
-       translate([0,0,-1])\r
-       cylinder(r=extruder_recess_d/2,h=extruder_recess_h+1);\r
-       \r
-       for (hole=[-1,1])\r
-       rotate(90,[1,0,0])\r
-       translate([hole*(extruder_recess_d/2-1.5),3+1.5,-wade_block_depth/2-1])\r
-       cylinder(r=1.5,h=wade_block_depth+2,$fn=10);\r
-}\r
-\r
-//wildseyed_mount_holes(insulator_d=16);\r
-module wildseyed_mount_holes(insulator_d=12.7)  \r
-{  \r
-       extruder_recess_d=insulator_d+0.7;\r
-       extruder_recess_h=10;\r
-\r
-       // Recess in base\r
-       translate([0,0,-1])\r
-       cylinder(r=extruder_recess_d/2,h=extruder_recess_h+1);\r
-       \r
-       for (hole=[-1,1])\r
-       rotate(90,[1,0,0])\r
-       translate([hole*(extruder_recess_d/2-1.5),3+1.5,-wade_block_depth/2-1])\r
-       cylinder(r=1.5,h=wade_block_depth+2,$fn=10);\r
-}\r
-\r
-module geeksbase_holes ()\r
-{\r
-       extruder_recess_d=10.8;\r
-       extruder_recess_h=20; \r
-\r
-       // Recess in base\r
-       translate([0,0,-1])\r
-       cylinder(r=extruder_recess_d/2,h=extruder_recess_h+1);  \r
-\r
-       // Mounting holes to affix the extruder into the recess.\r
-       translate([5,0,min(extruder_recess_h/2, base_thickness/2-2)])\r
-       rotate([-90,0,0])\r
-       cylinder(r=m3_diameter/2-0.5,/*tight*/,h=wade_block_depth+2,center=true); \r
-       translate([-5,0,min(extruder_recess_h/2, base_thickness/2-2)])\r
-       rotate([-90,0,0])\r
-       cylinder(r=m3_diameter/2-0.5,/*tight*/,h=wade_block_depth+2,center=true); \r
-\r
-       //cylinder(r=m4_diameter/2-0.5/* tight */,h=wade_block_depth+2,center=true); \r
-}\r
-\r
-module malcolm_extrusion_holes () \r
-{\r
-       extruder_recess_d=16;\r
-       extruder_recess_h=4; \r
-       hole_axis_rotation=22; \r
-       hole_separation=33.2;\r
-       hole_slot_height=5;\r
-       \r
-       // Recess in base\r
-       translate([0,0,-1])\r
-       cylinder(r=extruder_recess_d/2,h=extruder_recess_h+1); \r
-       \r
-       for(mount=[-1,1])\r
-       rotate([0,0,hole_axis_rotation-90+90*mount])\r
-       translate([hole_separation/2,0,0])\r
-       {\r
-               translate([0,0,-1])\r
-               cylinder(r=m3_diameter/2,h=base_thickness+2,$fn=8);\r
-\r
-               translate([0,0,base_thickness-2])\r
-               rotate(-hole_axis_rotation+180)\r
-               {\r
-                       cylinder(r=m3_nut_diameter/2,h=base_thickness/2+hole_slot_height,$fn=6);\r
-                       translate([0,-m3_nut_diameter,hole_slot_height/2+base_thickness/2]) \r
-                       cube([m3_nut_diameter,m3_nut_diameter*2,hole_slot_height],\r
-                                       center=true);\r
-               }\r
-       }\r
-}\r
diff --git a/extras/groovemount.scad b/extras/groovemount.scad
deleted file mode 100644 (file)
index 3525aac..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-module groovemount(){
-
-difference(){
-translate([-12,-35,0])cube(size=[29,70,12], center=false);
-
-translate([-10,0,5])cube(size=[20,12.5,15], center=true);
-translate([-10,0,5+4.4])cube(size=[20,16.5,10], center=true);
-
-cylinder(h=20, r=12.5/2);
-translate([0,0,4.4])cylinder(h=20, r=16.5/2);
-translate([0,-25,0])cylinder(h=20, r=5/2);
-translate([0,25,0])cylinder(h=20, r=5/2);
-}
-}
-
-groovemount();
diff --git a/output/README b/output/README
deleted file mode 100644 (file)
index 3995603..0000000
+++ /dev/null
@@ -1 +0,0 @@
-stl are here after make
similarity index 100%
rename from bearing-guide.scad
rename to src/bearing-guide.scad
diff --git a/src/bushing.scad b/src/bushing.scad
new file mode 100644 (file)
index 0000000..09608b7
--- /dev/null
@@ -0,0 +1,212 @@
+module bushing(stiff, lenght=11){
+       difference(){
+               union(){
+                       translate(v=[-7.5,-8,0])cube(size = [15,8,lenght]);
+                       cylinder(h = lenght, r=7.5);
+               }
+       //cutout inside
+       //Opening
+       rotate(a=[0,0,45]) translate(v=[1,1,-1]) cube(size = [16,16,lenght+2]);
+       //Cutouts to make it more bendy
+       if(stiff){
+               translate(v=[-4.8,-6,-1]) cube(size = [0.8,6,lenght+2]);
+               translate(v=[4,-6,-1]) cube(size = [0.8,6,lenght+2]);
+       }else{
+               translate(v=[-4.8,-8,-1]) cube(size = [0.8,8,lenght+2]);
+               translate(v=[4,-8,-1]) cube(size = [0.8,8,lenght+2]);
+       }
+       translate(v=[0,5,(lenght+2)/2]) cube(size = [7,8,lenght+2], center=true);
+       translate(v=[0,0,-1]) cylinder(h = lenght+2, r=5);
+       }
+}
+
+
+module standart_bushing(){
+
+difference(){translate(v=[0,5,8])rotate(a=[90,0,0]){
+bushing(false, 10);
+translate(v=[-7,-13,0])cube(size = [14,5,10]);
+translate(v=[-2,-13,-3])cube(size = [4,5,16]);
+translate(v=[-2,-12,-3])cube(size = [4,7.5,2]);
+translate(v=[-2,-12,11])cube(size = [4,7.5,2]);
+}
+translate(v=[-3,-1,-16])rotate(a=[45,0,0])cube(size = [6,5,16]);
+
+mirror([ 0, 1, 0 ]) translate(v=[-3,-1,-16])rotate(a=[45,0,0])cube(size = [6,5,16]);}
+}
+
+
+// Includes small cutouts for better prints
+module vertical_bushing(stiff, lenght){
+difference(){
+bushing(stiff, lenght);
+translate(v=[-5,0,-1]) cube(size = [10,2.5,lenght+2]);
+}
+}
+
+
+//vertical_bushing(true, 11);
+
+module z_bushings(){
+// STUFF FOR X-ENDS
+difference(){
+// Slider.
+translate([0,6.5,30]) 
+cube([23,17,60],center=true);
+// Slider cutout.
+translate([0,10,32.5]) 
+cube([17,17,70],center=true);
+}
+union(){translate([0,9.5,0])vertical_bushing(true,13);
+       //translate([0,4,0.5])cube(size = [8,2,1], center = true);
+       //translate([0,4,12.5])cube(size = [8,2,1], center = true);
+       translate([0,9.5,48])vertical_bushing(true,13);
+       //translate([0,4,48+0.5])cube(size = [8,2,1], center = true);
+       //translate([0,4,48+12.5])cube(size = [8,2,1], center = true);
+       translate([0,9.5,32])
+       {
+               difference()
+               {
+                       bushing(true,16);
+                       translate([0,3,2]) 
+                       rotate([45,0,0])
+                       cube([16,30,16], center=true);
+               }
+       }
+}
+}
+
+
+// Linear bushing options
+
+lm8uu_diameter=(lme8uu==true) ? 16 : 15;
+lm8uu_length=24;
+lm8uu_radius = lm8uu_diameter / 2;
+block_height = 2*lm8uu_length+17;
+
+
+
+//z_bushings();
+//
+//linear_holder_base(60);
+//cut_corners(true, false, true, false); 
+
+module cut_corners(lf,lb,rf,rb){
+       difference(){
+       lm8uu_bearing_holder();
+       if(lf) translate(v=[(10)-3,(-28.5/2)+3,0]) rotate(a=[0,0,45]) rotate(a=[35,0,0]) translate(v=[0,-5,0]) cube(size = [20,10,20], center = true);
+       if(lb)translate(v=[(-10)+3,(-28.5/2)+3,0]) rotate(a=[0,0,-45]) rotate(a=[35,0,0]) translate(v=[0,-5,0]) cube(size = [20,10,20], center = true);
+       mirror([ 0, 1, 0 ]){
+       if(rf)translate(v=[(10)-3,(-28.5/2)+3,0]) rotate(a=[0,0,45]) rotate(a=[35,0,0]) translate(v=[0,-5,0]) cube(size = [20,10,20], center = true);
+       if(rb)translate(v=[(-10)+3,(-28.5/2)+3,0]) rotate(a=[0,0,-45]) rotate(a=[35,0,0]) translate(v=[0,-5,0]) cube(size = [20,10,20], center = true);
+       }
+}
+//lm8uu_bearing_holder();
+}
+
+module linear_holder_base(length){
+
+difference(){
+union(){
+//main block
+translate(v=[-(lm8uu_radius+2.5)/2,0,length/2]) cube(size = [lm8uu_radius+2.5,lm8uu_diameter+5,length], center = true);
+//translate(v=[-5,0,length/2]) cube(size = [10,20,length], center = true);
+
+//holder for main block in x-end
+// leaving it out now
+//translate(v=[0,0,0]) cylinder(h = length, r=10, $fn=60);
+
+//translate(v=[-5,0,15.8/2]) cube(size = [12,23,15.8], center = true);
+translate(v=[0,0,0]) cylinder(h = length, r=lm8uu_radius+2.5, $fn=60);
+}
+//main axis
+translate(v=[0,0,-2]) cylinder(h = length+4, r=(lm8uu_diameter+0.8)/2, $fn=50);
+// not needed for zip tie
+//main cut
+translate(v=[10,0,length/2]) cube(size = [20,14,length+4], center = true);
+//smooth entry cut
+translate(v=[12,0,length/2]) rotate(a=[0,0,45]) cube(size = [20,20,length+4], center = true);
+}
+}
+
+
+module y_linear_bearings(){
+       difference(){
+               union(){
+translate(v=[0,0,1.5]) cube(size = [26,14,3], center = true);
+translate(v=[-13,0,0])rotate(a=[0,0,30])cylinder(h = 3, r=7, $fn=6);
+translate(v=[13,0,0])rotate(a=[0,0,30])cylinder(h = 3, r=7, $fn=6); 
+}
+
+
+translate(v=[-14,0,0])polyhole(m3_diameter, 10);
+translate(v=[14,0,0])polyhole(m3_diameter, 10);
+//hack
+translate(v=[0,14.25,4.5]) rotate(a=[90,0,0]) translate(v=[0,9.5,0]) rotate(a=[0,0,90]){
+       translate(v=[0,0,lm8uu_length/2+0.5]) ziptie();
+}
+}
+
+cut_corners(true, true, true, true); 
+
+
+}
+
+lm8uu_holder_length = lm8uu_length+4.5;
+lm8uu_holder_width= lm8uu_diameter+5;
+
+module lm8uu_bearing_holder(){
+translate(v=[0,14.25,4.5])rotate(a=[90,0,0])translate(v=[0,9.5,0]) rotate(a=[0,0,90]){
+
+difference(){
+       union(){
+               linear_holder_base(lm8uu_length+4.5);
+               translate(v=[-10-2,0,lm8uu_holder_length/2]) cube(size = [4,20,lm8uu_holder_length], center = true);
+       }
+       translate(v=[0,0,12.5]) ziptie();
+}
+
+
+translate(v=[-(10-5.5)/2-5.5,0,0.75]) cube(size = [10-5.5,20,1.5], center = true);
+translate(v=[-(10-5.5)/2-5.5,0,lm8uu_length+3.75]) cube(size = [10-5.5,20,1.5], center = true);
+
+}
+}
+
+module lm8uu_bearing_cut()
+       {
+               translate([-lm8uu_holder_width/2,-lm8uu_holder_length/2,-5])cube([lm8uu_holder_width,lm8uu_holder_length,20]);
+       }
+
+
+module z_linear_bearings(){
+
+       translate(v=[0,9.5,0]) rotate(a=[0,0,90]){
+               //difference(){
+                       linear_holder_base(65);
+               //      translate(v=[0,0,14.5+2]) ziptie();
+               //      translate(v=[0,0,block_height-(12+2)-5]) ziptie();
+               //}
+
+               //x-end adapter
+               //difference(){ 
+               //      translate(v=[-6,0,15.8/2]) cube(size = [10,23,15.8], center = true);
+               //      translate(v=[0,0,-2]) cylinder(h = 20, r=7.9, $fn=50);
+               //}
+               translate(v=[-(10-5.5)/2-lm8uu_radius+2,0,0+1]) cube(size = [10-5.5,20,2], center = true);
+               //translate(v=[-(10-5.5)/2-lm8uu_radius+2,0,lm8uu_length+4.0]) cube(size = [10-5.5,20,2], center = true);
+               //translate(v=[-(10-5.5)/2-lm8uu_radius+2,0,64-lm8uu_length-3]) cube(size = [10-5.5,20,2], center = true);
+               translate(v=[-(10-5.5)/2-lm8uu_radius+2,0,64]) cube(size = [10-5.5,20,2], center = true);
+       }
+}
+
+module ziptie(){
+difference(){
+translate(v=[0,0,0]) cylinder(h = 3.9, r=lm8uu_diameter);
+translate(v=[0,0,0]) cylinder(h = 5, r=lm8uu_diameter-3, $fn=50);
+translate(v=[0,0,3]) cylinder(h = 1, r1=lm8uu_diameter-3, r2=lm8uu_diameter, $fn=50);
+}}
+
+
+z_linear_bearings();
\ No newline at end of file
similarity index 100%
rename from common.tdoc
rename to src/common.tdoc
similarity index 68%
rename from compact-extruder.scad
rename to src/compact-extruder.scad
index 7573d31..b1cb7e7 100644 (file)
@@ -1,22 +1,35 @@
 module base(){
-translate([-1,-2,0]) cube([22,54,20]);
-
+translate([-1,-2,0]) cube([22,56,23]);
+translate([-16,49,0]) cube([55,5,23]);
+translate([11,25,0]){
+translate([-12,24,0]) cylinder(r=5, h=23);
+translate([12,24,0]) cylinder(r=5, h=23);
+}
 }
 
 module holes(){
 //translate to center of the main block
  translate([11,25,0]){
-  translate([0,0,-1]) cylinder(r=9, h=22);
+  translate([0,0,-1]) cylinder(r=8.5, h=25);
   translate([0,21,-1]) cylinder(r=2, h=22);
   translate([0,-21,-1]) cylinder(r=2, h=22);
   translate([0,21,3]) cylinder(r=3.5, h=22);
   translate([0,-21,3]) cylinder(r=3.5, h=22);
+
+translate([-12,24,-3]) cylinder(r=3.5, h=23);
+translate([12,24,-3]) cylinder(r=3.5, h=23);
+translate([-12,24,20.5]) cylinder(r=2, h=23);
+translate([12,24,20.5]) cylinder(r=2, h=23);
+
   //cutout for bearing
 
   translate([11,0,-4.5+10]) cylinder(r=11, h=20);
  }
 //filament hole 
  translate([1.5+11+3.5,65,10]) rotate([90,0,0])cylinder(r=2, h=70);
+
+ translate([1.5+11+3.5+15,65,10]) rotate([90,0,0])cylinder(r=2, h=70);
+ translate([1.5+11+3.5-25,65,10]) rotate([90,0,0])cylinder(r=2, h=70);
        //idler holse
        translate([11,25,10]){
        translate([-30,15,-5]) rotate([0,90,0]) cylinder(r=2.2, h=70);
@@ -56,7 +69,7 @@ translate([-5,-15,-1])cylinder(r=2.2, h=24);
 }
 }
 
-//difference(){
-//idler_base();
-//idler_holes();
-//}
\ No newline at end of file
+difference(){
+idler_base();
+idler_holes();
+}
\ No newline at end of file
similarity index 80%
rename from corners.scad
rename to src/corners.scad
index 3b3ba66..75aa177 100644 (file)
@@ -25,7 +25,7 @@ module nutrod(){
  */
 
 module corner_base(){  
- translate([-11,-11,0])cube([22,22,49]);
+ translate([-11,-11,0])cube([22,22,47]);
 }
 
 module corner_holes(){
@@ -33,8 +33,10 @@ module corner_holes(){
   translate([0,11,10]) rotate([0,0,0]) nutrod();
   translate([0,11,30]) rotate([0,0,0]) nutrod();
   translate([11,0,20]) rotate([0,0,90]) rotate([00,0,0]) nutrod();
-  translate([11,2,50]) rotate([0,90,90]) cylinder(h = 270, r=4.1);
-  translate([11,2,45]) rotate([0,90,90]) cylinder(h = 270, r=4.1);
+  translate([11,-2,49.5]) rotate([0,90,90]) cylinder(h = 270, r=5, $fn=30); // entry cutout
+  translate([11,2,45]) rotate([0,90,90]) cylinder(h = 270, r=4.2, $fn=30); // cutout for rod insert
+  translate([11-1,-2,38]) cube([2,25,8]); // flex allowing cutout
+  translate([-1,11-0.05,41]) cube([25,0.1,8]); // microcutout to make top sturdier
  }
 }
 
@@ -66,7 +68,7 @@ module corner(){
 corner();
 translate([25,0,0]) mirror([1,0,0]) corner();
 translate([0,25,0]) {
- corner();
- translate([25,0,0]) mirror([1,0,0]) corner();
//corner();
//translate([25,0,0]) mirror([1,0,0]) corner();
 }
 
similarity index 100%
rename from doc/boxframe.scad
rename to src/doc/boxframe.scad
similarity index 100%
rename from doc/framestep1.png
rename to src/doc/framestep1.png
similarity index 100%
rename from doc/framestep2.png
rename to src/doc/framestep2.png
similarity index 100%
rename from doc/framestep3.png
rename to src/doc/framestep3.png
similarity index 100%
rename from doc/framestep4.png
rename to src/doc/framestep4.png
similarity index 100%
rename from doc/framestep5.png
rename to src/doc/framestep5.png
similarity index 100%
rename from doc/framestep6.png
rename to src/doc/framestep6.png
similarity index 100%
rename from doc/manual.txt
rename to src/doc/manual.txt
similarity index 100%
rename from doc/ystep1.png
rename to src/doc/ystep1.png
similarity index 100%
rename from doc/ystep10.png
rename to src/doc/ystep10.png
similarity index 100%
rename from doc/ystep11.png
rename to src/doc/ystep11.png
similarity index 100%
rename from doc/ystep2.png
rename to src/doc/ystep2.png
similarity index 100%
rename from doc/ystep3.png
rename to src/doc/ystep3.png
similarity index 100%
rename from doc/ystep4.png
rename to src/doc/ystep4.png
similarity index 100%
rename from doc/ystep5.png
rename to src/doc/ystep5.png
similarity index 100%
rename from doc/ystep6.png
rename to src/doc/ystep6.png
similarity index 100%
rename from doc/ystep7.png
rename to src/doc/ystep7.png
similarity index 100%
rename from doc/ystep8.png
rename to src/doc/ystep8.png
similarity index 100%
rename from doc/ystep9.png
rename to src/doc/ystep9.png
diff --git a/src/frame-connector.scad b/src/frame-connector.scad
new file mode 100644 (file)
index 0000000..870e838
--- /dev/null
@@ -0,0 +1,14 @@
+difference(){
+       translate([-10,-10,0])cube([20,20,30]);
+translate([16,16,0]) rotate([0,0,45])translate([-20,-20,-1]) cube([40,40,40]);
+translate([-23,-23,0]) rotate([0,0,45])translate([-20,-20,-1]) cube([40,40,40]);
+translate([0,-20,5]) rotate([0,90,90]) cylinder(h = 50, r=2, $fn=20);
+translate([0,-20,25]) rotate([0,90,90]) cylinder(h = 50, r=2, $fn=20);
+translate([-20,0,5]) rotate([0,90,0]) cylinder(h = 50, r=2, $fn=20);
+translate([-20,0,25]) rotate([0,90,0]) cylinder(h = 50, r=2, $fn=20);
+
+translate([0,-5,5]) rotate([0,90,90]) cylinder(h = 50, r=4, $fn=20);
+translate([0,-5,25]) rotate([0,90,90]) cylinder(h = 50, r=4, $fn=20);
+translate([-5,0,5]) rotate([0,90,0]) cylinder(h = 50, r=4, $fn=20);
+translate([-5,0,25]) rotate([0,90,0]) cylinder(h = 50, r=4, $fn=20);
+}
similarity index 100%
rename from inc/functions.scad
rename to src/inc/functions.scad
similarity index 100%
rename from inc/metric.scad
rename to src/inc/metric.scad
diff --git a/src/test-holder.scad b/src/test-holder.scad
new file mode 100644 (file)
index 0000000..a6d50ff
--- /dev/null
@@ -0,0 +1,13 @@
+difference(){cube([13,25,20]);
+
+//rotate([0, -90, 0])
+translate([0,0,1]){
+translate([2, -1, 8]) cube([9,60,5.2]);
+translate([-1, 5, 5]) cube([15,2.5,7]);
+translate([-1, 5, 0]) cube([15,2.5,2]);
+
+translate([-1, 15, 5]) cube([15,2.5,7]);
+translate([-1, 15, 0]) cube([15,2.5,2]);
+translate([6.5, -1, 8]) rotate([-90, 0, 0]) rotate([0, 0, 30])  cylinder(h=70, r=5.2, $fn=6);
+translate([6.5, -3, 8]) rotate([-90, 0, 0])  cylinder(h=70, r=4, $fn=30);
+}}
\ No newline at end of file
similarity index 87%
rename from x-carriage.scad
rename to src/x-carriage.scad
index 6ae78fd..ea733ae 100644 (file)
@@ -8,12 +8,32 @@
 
 include <configuration.scad>
 use <bushing.scad>
-// mounting plate
-use <extras/groovemount.scad>
 
 carriage_l = 74;
-carriage_hole_to_side = 5;
-carriage_hole_height = 4;
+
+module x_carriage_base(){
+       
+       translate([-65,22,0]) cube([65,1,15]);
+       rotate([0,-90,0]) translate([10,0,0]) linear_holder_base(65);
+       translate([0,45,0]) rotate([0,-90,0]) translate([10,0,0]) linear_holder_base(32);
+       translate([-65,9,0]) cube([65,25,5]);
+       translate([-65,22,0]) cube([65,15,15]);
+       
+}
+
+module x_carriage_beltcut(){
+       translate([-66,21.5+10,3]) cube([67,1.5,15]);
+       translate([-66,21.5+10,12]) rotate([45,0,0]) cube([67,15,15]);
+       for ( i = [0 : 23] )
+       {
+           translate([0-i*3,21.5+8,3]) cube([1.7,3,15]);
+       }
+       
+       
+}
+
+difference(){x_carriage_base();
+x_carriage_beltcut();}
 
 
 module x_carriage(){
@@ -110,5 +130,5 @@ module x_carriage(){
     }
 }
 
-x_carriage();
+//x_carriage();
 //holding_plate();
similarity index 100%
rename from x-end.scad
rename to src/x-end.scad
diff --git a/src/y-belt-holder.scad b/src/y-belt-holder.scad
new file mode 100644 (file)
index 0000000..8b3e325
--- /dev/null
@@ -0,0 +1,139 @@
+// PRUSA iteration3
+// X carriage
+// GNU GPL v3
+// Josef Průša <josefprusa@me.com>
+// Václav 'ax' Hůla <axtheb@gmail.com>
+// http://www.reprap.org/wiki/Prusa_Mendel
+// http://github.com/prusajr/PrusaMendel
+
+include <configuration.scad>
+use <bushing.scad>
+
+carriage_l = 74;
+
+module x_carriage_base(){
+ translate([-33-8.5,0,0]) cube([33,15,15]); 
+ translate([-33-8.5,11,0]) cube([33,15,15]);
+ translate([-50,22,0]) cube([50,4,15]);        
+}
+
+
+position_tweak=-0.2;
+module x_carriage_beltcut(){
+ translate([-66,-0.5+10,3]) cube([67,1,15]);
+ translate([-66,-0.5+10,12]) rotate([45,0,0]) cube([67,15,15]);
+ for ( i = [0 : 23] ){
+  translate([0-i*3+position_tweak,-0.5+8,3]) cube([1.7,3,15]);
+ }
+ //top opening
+ translate([-2-25,-1,3]) cube([4,11,15]);      
+}
+
+module holes(){
+ translate([-5,0,7.5]) rotate([-90,0,0]) cylinder(h=30, r=1.7, $fn=10);
+ translate([-45,0,7.5]) rotate([-90,0,0]) cylinder(h=30, r=1.7, $fn=10);
+}
+
+difference(){
+ x_carriage_base();
+ x_carriage_beltcut();
+ holes();
+}
+
+
+module x_carriage(){
+    mirror([1,0,0]) {
+        difference() {
+            union() {
+                //upper bearing
+                rotate([0,0,180]) {
+                    if (bearing_choice == 2) {
+                        linear_bearing(fillet = true);
+                    } else {
+                        linear_bushing(27);
+                    }
+                }
+
+                //lower bearing
+                translate([xaxis_rod_distance,0,0]) {
+                    if (bearing_choice == 2) {
+                        linear_bearing(carriage_l, fillet = true);
+                    } else {
+                        linear_bushing(carriage_l);
+                    }
+                }
+
+                // main plate
+                //difference(){
+                translate([5.5,-10,0]) cube_fillet([xaxis_rod_distance - 11,5,carriage_l], radius=2);
+                //translate([55,-17.5, 67]) rotate([0,70,0]) cube([80,60,60], center = true);
+                //}
+
+                //reduce springiness
+
+                translate([6,5,20]) cube([xaxis_rod_distance - 13,5,8]);
+
+
+            translate([20,0,carriage_hole_to_side]) {
+                rotate([90,0,0]) cylinder(r=(carriage_hole_to_side > 5 ? 5 : carriage_hole_to_side), h=12, center=true);
+                }
+            translate([20,0,carriage_l - carriage_hole_to_side]) {
+               rotate([90,0,0]) cylinder(r=(carriage_hole_to_side > 5 ? 5 : carriage_hole_to_side), h=12, center=true);
+                }
+
+                translate([45/2,0,0]){
+
+                    // belt dummy
+                    %translate([0,0,carriage_l/2]) cube([20,6,carriage_l], center = true);
+
+                    //belt flat side
+                    difference() {
+                    translate([-13.5,0,carriage_l/2]) cube_fillet([7,14,carriage_l], vertical = [3,3,0,0], center = true);
+                    translate([-45/2,0,0]) bushing_negative();
+                    }
+
+                    difference(){
+                        translate([-3.0,0,carriage_l/2]) cube_fillet([11,14,carriage_l], vertical = [2,2,0,0], center = true);
+#translate([-3.5,0,carriage_l/2]) cube([13,10,40], center = true);
+
+                        intersection() {
+                            for (i = [0 : carriage_l/belt_tooth_distance])
+                            {
+                                translate([-8.5, 0, 1+i*belt_tooth_distance]) cube([2, 10, belt_tooth_distance*belt_tooth_stride], center = true);
+                            }
+                            translate([0, 0, carriage_l/2]) cube([20, 10, carriage_l], center = true);
+                        }
+                    }
+
+                }
+            }
+            #translate([20,-2,carriage_hole_to_side]) {
+                rotate([90,0,0]) cylinder(r=2.2, h=22, center=true);
+                translate([0,3,0]) rotate([90,90,0]) cylinder(r=9/2, h=carriage_hole_height, $fn=6, center=true);
+                translate([0,3,-3]) cube([8,carriage_hole_height,8], center=true);
+            }
+            #translate([20,-2,carriage_l-carriage_hole_to_side]) {
+                rotate([90,0,0]) cylinder(r=2.2, h=22, center=true);
+                translate([0,3,0]) rotate([90,90,0]) cylinder(r=9/2, h=carriage_hole_height, $fn=6, center=true);
+                translate([0,3,3]) cube([8,carriage_hole_height,8], center=true);
+            }
+
+        }
+    }
+
+    module holding_plate(){
+        translate([13,-10,0]){
+            difference(){
+                translate([2.5-13.8/2, -17.5,35]) cube([5,35,carriage_l], center = true);
+                translate([2.5-13.8/2, -17.5,35]) cube([7,25,25], center = true);
+                translate([0,-17.5, 35-25]) rotate([0,-90,0]) cylinder(h = 80, r=2.5, $fn=30);
+                translate([0,-17.5, 35+25]) rotate([0,-90,0]) cylinder(h = 80, r=2.5, $fn=30);
+            }
+
+            %translate([-7, -18 ,carriage_l/2]) rotate([-90,0,90]) groovemount();
+        }
+    }
+}
+
+//x_carriage();
+//holding_plate();
similarity index 100%
rename from y-drivetrain.scad
rename to src/y-drivetrain.scad
diff --git a/src/z-axis-bottom.scad b/src/z-axis-bottom.scad
new file mode 100644 (file)
index 0000000..34fbc76
--- /dev/null
@@ -0,0 +1,69 @@
+module holder_base(){
+translate([0,0,0]) cube([8,40,16+25]); // plate touching the base
+translate([0,-5,0]) cube([50,15,5]); // plate touching the base
+translate([0,-5,0]) cube([18,50,5]);
+}
+
+module holder_fancy(){
+ // corner cutouts
+ translate([0.5,0.5,0]) rotate([0,0,-45-180]) translate([-15,0,-1]) cube([30,30,51]);
+ translate([0.5,40-0.5,0]) rotate([0,0,-45+90]) translate([-15,0,-1]) cube([30,30,51]);
+ translate([-4,40+5,5]) rotate([0,0,-45-0]) translate([0,0,0.1])cube([30,30,51]);
+
+ translate([-4+11,40+5+5,0]) rotate([0,0,-45-0]) translate([0,0,-1])cube([30,30,51]);
+
+
+ translate([8,0,12+20+3]) rotate([0,-45,0]) translate([0,-5,0]) cube([30,50,30]);
+ translate([8,0,12+5]) rotate([45,0,0]) rotate([0,-45,0]) translate([0,-5,0]) cube([30,50,30]);
+ translate([8,20,12+25]) rotate([-45,0,0]) rotate([0,-45,0]) translate([0,-5,0]) cube([30,50,30]);
+
+ translate([50-2.5,-5+2.5,0]) rotate([0,0,-45-90]) translate([-15,0,-1]) cube([30,30,51]);
+ translate([50-1.5,10-1.5,0]) rotate([0,0,-45]) translate([-15,0,-1]) cube([30,30,51]);
+
+ translate([0,0,5]) rotate([45+180,0,0]) rotate([0,0,-45+90]) translate([0,0,-15]) cube([30,30,30]);
+}
+
+module holder_holes(){
+ // screw holes
+ translate([-1,10,10+5]) rotate([0,90,0]) cylinder(h = 20, r=1.8, $fn=30);
+ translate([-1,10+20,10+5]) rotate([0,90,0]) cylinder(h = 20, r=1.8, $fn=30);
+
+ translate([-1,10+10,10+20+5]) rotate([0,90,0]) cylinder(h = 20, r=1.8, $fn=30);
+
+ // screw heads
+ translate([4,10,10+5]) rotate([0,90,0]) cylinder(h = 20, r=3.1, $fn=30);
+ //translate([4,10-3.1,10]) cube([10,6.2,10]);
+ translate([4,10+20,10+5]) rotate([0,90,0]) cylinder(h = 20, r=3.1, $fn=30);
+ //translate([4,10+20-3.1,10]) cube([10,6.2,10]);
+
+ translate([4,10+10,10+20+5]) rotate([0,90,0]) cylinder(h = 20, r=3.1, $fn=30);
+ translate([4,10+10-3.1,10+20+5]) cube([10,6.2,10]);
+
+ // Z rod holder
+ translate([25+4.3,4.2,-1]) rotate([0,0,0]) cylinder(h = 50, r=4.1, $fn=15);
+ translate([25+4.3-1,3,0.6]) cube([2,10,7]); // it's bit up because it helps with printing
+
+ // motor mounting
+ translate([25+4.3,21,-1]){
+ //translate([15.5,15.5,-1]) cylinder(h = 20, r=1.8, $fn=30);
+ translate([15.5,-15.5,3.3]) cylinder(h = 20, r=1.8, $fn=30);
+ translate([-15.5,15.5,3.3]) cylinder(h = 20, r=1.8, $fn=30);
+ translate([-15.5,-15.5,3.3]) cylinder(h = 20, r=1.8, $fn=30);
+ translate([15.5,-15.5,-1]) cylinder(h = 4, r=3.1, $fn=30);
+ translate([-15.5,15.5,-1]) cylinder(h = 4, r=3.1, $fn=30);
+ translate([-15.5,-15.5,-1]) cylinder(h = 4, r=3.1, $fn=30);
+ }
+
+}
+
+difference(){
+ holder_base();
+ holder_fancy();
+ holder_holes();
+}
+translate([0,-13,0]) mirror([0,1,0]) difference(){
+ holder_base();
+ holder_fancy();
+ holder_holes();
+}
\ No newline at end of file
diff --git a/src/z-axis-top.scad b/src/z-axis-top.scad
new file mode 100644 (file)
index 0000000..b13be0c
--- /dev/null
@@ -0,0 +1,46 @@
+module holder_base(){
+translate([0,0,0]) cube([8,40,16]); // plate touching the base
+translate([0,-5,0]) cube([38,15,5]); // plate touching the base
+}
+
+module holder_fancy(){
+ // corner cutouts
+ translate([0.5,0.5,0]) rotate([0,0,-45-180]) translate([-15,0,-1]) cube([30,30,51]);
+ translate([0.5,40-0.5,0]) rotate([0,0,-45+90]) translate([-15,0,-1]) cube([30,30,51]);
+ translate([-4,40+5,0]) rotate([0,0,-45-0]) translate([0,0,-1]) cube([30,30,51]);
+
+
+ translate([8,0,12]) rotate([0,-45,0]) translate([0,-5,0]) cube([30,50,30]);
+
+ translate([38-2.5,-5+2.5,0]) rotate([0,0,-45-90]) translate([-15,0,-1]) cube([30,30,51]);
+ translate([38-1.5,10-1.5,0]) rotate([0,0,-45]) translate([-15,0,-1]) cube([30,30,51]);
+
+ translate([0,0,5]) rotate([45+180,0,0]) rotate([0,0,-45+90]) translate([0,0,-15]) cube([30,30,30]);
+}
+
+module holder_holes(){
+ // screw holes
+ translate([-1,10,10]) rotate([0,90,0]) cylinder(h = 20, r=1.8, $fn=30);
+ translate([-1,10+20,10]) rotate([0,90,0]) cylinder(h = 20, r=1.8, $fn=30);
+
+ // screw heads
+ translate([4,10,10]) rotate([0,90,0]) cylinder(h = 20, r=3.1, $fn=30);
+ translate([4,10-3.1,10]) cube([10,6.2,10]);
+ translate([4,10+20,10]) rotate([0,90,0]) cylinder(h = 20, r=3.1, $fn=30);
+ translate([4,10+20-3.1,10]) cube([10,6.2,10]);
+
+ // Z rod holder
+ translate([25+4.3,4.2,-1]) rotate([0,0,0]) cylinder(h = 50, r=4.1, $fn=15);
+ translate([25+4.3-1,3,0.6]) cube([2,10,7]); // it's bit up because it helps with printing
+}
+
+difference(){
+ holder_base();
+ holder_fancy();
+ holder_holes();
+}
+translate([0,-13,0]) mirror([0,1,0]) difference(){
+ holder_base();
+ holder_fancy();
+ holder_holes();
+}
diff --git a/y-belt-holder.scad b/y-belt-holder.scad
deleted file mode 100644 (file)
index f4c913e..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-// PRUSA iteration3
-// Y belt holder
-// GNU GPL v3
-// Josef Průša <josefprusa@me.com>
-// Václav 'ax' Hůla <axtheb@gmail.com>
-// http://www.reprap.org/wiki/Prusa_Mendel
-// http://github.com/prusajr/PrusaMendel
-
-include <configuration.scad>
-translate([10+16, 0, 0]){
-
-    %translate([0, 0, 35/2]) cube([20, 6, 35], center = true);
-    translate([-24.5+6.5, 0, 17.5]) cube_fillet([16, 14, 35], center = true, vertical=[3,0,0,0], fn=8 );
-    translate([-20+5.5, 1.5-7, 17.5]) cube([16, 3, 35], center = true);
-
-    difference(){
-        union(){
-
-            translate([-37.5+13, 0, 5]) cube_fillet([3, 35, 10], center = true, radius=1, $fn=8);
-            translate([-37.5+13, 0, 22.5]) cube([3, 14, 45], center = true);
-            translate([-5.0, 0, 17.5]) cube_fillet([7, 14, 35], center = true, vertical = [2,2,0,2], fn=8);
-
-        }
-        translate([-5.5, 0, 17.5]) cube([9, 10, 10], center = true);
-        translate([0, -12, 5]) rotate([0, -90, 0]) cylinder(h=50, r= 2.5);
-        translate([0, 12, 5]) rotate([0, -90, 0]) cylinder(h=50, r= 2.5);
-
-        translate([0, 0, 40]) rotate([0, -90, 0]) cylinder(h=50, r= 2.5);
-        #intersection() {
-            for (i = [0 : 35/belt_tooth_distance])
-            {
-                translate([-8.0, 0, 1+i*belt_tooth_distance]) cube([2, 10, belt_tooth_distance*belt_tooth_stride], center = true);
-            }
-            translate([0, 0, 35/2]) cube([20, 10, 35], center = true);
-        }
-    }
-}
diff --git a/y-bottom-plate-mount.scad b/y-bottom-plate-mount.scad
deleted file mode 100644 (file)
index bde6690..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-// PRUSA iteration3
-// GNU GPL v3
-// Josef Průša
-// josefprusa@me.com
-// prusadjs.cz
-
-
-include <configuration.scad>
-
-
-module rodclamp(){ 
-       rotate([0,-270,0]) difference(){
-               cube([14,30,10],center=true);
-               translate([-3,0,0]) cylinder(r=4.1,h=20,center=true,$fn=32);
-               translate([-5,0,0]) cube(size=[4.1,8.2,10], center=true);
-               
-               translate([7,10,0]) rotate([0,-90,0]) screw(head_drop=5);
-               translate([7,-10,0]) rotate([0,-90,0]) screw(head_drop=5);
-       }
-}
-
-
-rodclamp();
-
diff --git a/z-axis.scad b/z-axis.scad
deleted file mode 100644 (file)
index e3278e1..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-// PRUSA iteration3
-// Z axis
-// GNU GPL v3
-// Josef Průša <josefprusa@me.com>
-// Václav 'ax' Hůla <axtheb@gmail.com>
-// http://www.reprap.org/wiki/Prusa_Mendel
-// http://github.com/prusajr/PrusaMendel
-
-include <configuration.scad>
-
-
-module zmotorholder(thickness=13){
-    difference(){
-        union(){
-            // Motor holding part
-            difference(){
-                union(){
-                    zrodholder(thickness=thickness, xlen=45, ylen=45);
-                    translate([board_to_xz_distance, board_to_xz_distance, 0]) {
-                        nema17(places=[0,1,1,1], h=thickness);
-                    }
-                }
-
-                // motor screw holes
-                translate([board_to_xz_distance, board_to_xz_distance, thickness]) {
-                    mirror([0,0,1]) translate([0,0,thickness-8])
-                        nema17(places=[0,1,1,1], holes=true, h=thickness, shadow=5);
-                }
-            }
-        }
-    }
-}
-
-
-module zrodholder(thickness=13, ylen=40, xlen=34){
-    difference(){
-        union(){
-            // Rod holding part
-            difference(){
-                union(){
-                    //piece along the flat side of a board
-                    cube_fillet([14, ylen, thickness]);
-                    //hole for Z axis is thru this
-                    cube_fillet([xlen, 14, thickness]);
-                    //piece along cut side of the board
-                    translate([-board_thickness,0,0]) cube_fillet([board_thickness*2, 5, thickness], radius=2);
-                }
-                //smooth rod hole
-                translate([board_to_xz_distance,5+(smooth_bar_diameter*1.05/2),-1]) cylinder(h=board_thickness+2, r=(smooth_bar_diameter*1.05/2));
-                //inside rouned corner
-                translate([0,5,-1]) cylinder(r=1.2, h=thickness+2, $fn=8);
-                //side screw
-                translate([-board_thickness/2, 0, thickness/2]) rotate([-90, 0, 0]) screw();
-                //front screw
-                translate([13.3, 19, thickness/2]) rotate([0, -90, 0]) screw(head_drop=5);
-                translate([14, 33, thickness/2]) rotate([0, -90, 0]) screw(head_drop=5);
-            }
-        }
-    }
-}
-
-translate([0, -2, 0]) mirror([0,1,0]) zmotorholder();
-translate([0,2,0]) zmotorholder();
-
-translate([21,-59,0]) zrodholder();
-translate([20,59,0]) mirror([0,1,0]) zrodholder();