Merge branch 'spindle_pen' of github.com:glenchung/Cyclone-PCB-Factory into glenchung-spindle_pen
commit
25fdf7ab1e
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
@ -55,7 +55,7 @@ X_PCB_BOARD_OFFSET = 12;
|
|||
//Travel (152 x 101 x 25)
|
||||
X_Travel = 81; //0~152
|
||||
Y_Travel = 80; //0~101
|
||||
Z_Travel = 15; //0~30
|
||||
Z_Travel = 16; //0~27
|
||||
|
||||
//To display steppers, bearings, washers, nuts, bolts, micro-switches, etc.
|
||||
Display_Extra_Parts = true;
|
||||
|
@ -129,23 +129,24 @@ module Y_nut_holder() {
|
|||
nut_holder_positioned();
|
||||
}
|
||||
|
||||
module cnc_workbed() {
|
||||
module cnc_workbed(template=false) {
|
||||
|
||||
// ---- work bed ----
|
||||
translate([0,0,-workbed_thickness/2+1]) {
|
||||
translate([0,0,-workbed_thickness/2+(template?2:0)]) {
|
||||
translate([0,0,template?-2:0])
|
||||
color([0.5,1,0.5,0.5]) { // Transparent color
|
||||
%cube([workbed_X,workbed_Y,workbed_thickness],center=true);
|
||||
%cube([workbed_X,workbed_Y,workbed_thickness+(template?4:0)],center=true);
|
||||
difference() {
|
||||
cube([workbed_X,workbed_Y,workbed_thickness],center=true);
|
||||
cube([workbed_X-1,workbed_Y-1,workbed_thickness+1],center=true);
|
||||
cube([workbed_X,workbed_Y,workbed_thickness+(template?4:0)],center=true);
|
||||
cube([workbed_X-1,workbed_Y-1,workbed_thickness+(template?4:0)+1],center=true);
|
||||
}
|
||||
}
|
||||
|
||||
translate([X_PCB_BOARD_OFFSET/2-28-X_PCB_BOARD/2,8+Y_PCB_BOARD/2,-(workbed_thickness)/2])
|
||||
rotate([180,0,0]) PCB_vise_1(with_extra_parts=Display_Extra_Parts, exploded=Exploded_Drawing);
|
||||
translate([X_PCB_BOARD_OFFSET/2+28+X_PCB_BOARD/2,-8-Y_PCB_BOARD/2,-(workbed_thickness)/2])
|
||||
rotate([180,0,180]) PCB_vise_1(with_extra_parts=Display_Extra_Parts, exploded=Exploded_Drawing);
|
||||
if(Display_Extra_Parts) {
|
||||
translate([X_PCB_BOARD_OFFSET/2-28-X_PCB_BOARD/2,8+Y_PCB_BOARD/2,-(workbed_thickness)/2])
|
||||
rotate([180,0,0]) PCB_vise_1(with_extra_parts=true, exploded=Exploded_Drawing);
|
||||
translate([X_PCB_BOARD_OFFSET/2+28+X_PCB_BOARD/2,-8-Y_PCB_BOARD/2,-(workbed_thickness)/2])
|
||||
rotate([180,0,180]) PCB_vise_1(with_extra_parts=true, exploded=Exploded_Drawing);
|
||||
// --- PCB Board ---
|
||||
echo("Non-Plastic Parts, 1, Double sided PCB ", X_PCB_BOARD, " x ", Y_PCB_BOARD, " x ", Z_PCB_BOARD);
|
||||
translate([X_PCB_BOARD_OFFSET/2,0,-(workbed_thickness)/2-15])
|
||||
|
@ -177,7 +178,7 @@ module X_carriage() {
|
|||
}
|
||||
|
||||
module Z_carriage_piece() {
|
||||
translate([0,0,33+Z_Travel])
|
||||
translate([0,0,35+Z_Travel])
|
||||
rotate([0,0,90])
|
||||
Z_carriage_assembled(z_thread_rod_length=Z_Final_Threaded_Rod_Length, with_extra_parts=Display_Extra_Parts, exploded=Exploded_Drawing);
|
||||
}
|
||||
|
@ -233,14 +234,18 @@ module cnc_base_template() {
|
|||
}
|
||||
}
|
||||
|
||||
module cnc_workbed_template() {
|
||||
projection(cut=true) translate([0,0,-1]) {
|
||||
cnc_workbed(); // Main structure
|
||||
translate([0,-20,0])
|
||||
reference(workbed_X,60);
|
||||
translate([-20,0,0])
|
||||
rotate([0,0,90])
|
||||
reference(workbed_Y,40);
|
||||
module cnc_workbed_template(top_side=false) {
|
||||
offset = top_side ? (workbed_thickness+1):-1;
|
||||
projection(cut=true) rotate([top_side?180:0,0,0]) translate([0,0,offset]) {
|
||||
cnc_workbed(template=true); // Main structure
|
||||
|
||||
rotate([top_side?180:0,0,0]) {
|
||||
translate([0,-20,offset])
|
||||
reference(workbed_X,60);
|
||||
translate([-20,0,offset])
|
||||
rotate([0,0,90])
|
||||
reference(workbed_Y,40);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -292,7 +297,8 @@ module cnc_assembled(Y_offset=0,X_offset=0,Z_offset=0) {
|
|||
rotate([0,0,90])cnc_assembled(Y_offset=30,X_offset=-50,Z_offset=10);
|
||||
|
||||
//rotate([0,0,90]) cnc_base_template(); // So the generated dxf matches inkscape's default orientation
|
||||
// cnc_workbed_template();
|
||||
// cnc_workbed_template(top_side=true);
|
||||
// cnc_workbed_template(top_side=false);
|
||||
|
||||
echo("Non-Plastic Parts, 1, Machine Base ", X_Wood_Base, " x ", Y_Wood_Base, " x ", Z_Wood_Base);
|
||||
echo("Non-Plastic Parts, 1, Work Bed ", workbed_X, " x ",workbed_Y, " x ", workbed_thickness);
|
||||
|
|
|
@ -0,0 +1,175 @@
|
|||
//By Glen Chung, 2013.
|
||||
//Dual licenced under Creative Commons Attribution-Share Alike 3.0 and LGPL2 or later
|
||||
|
||||
include <polyScrewThread_r1.scad>
|
||||
|
||||
|
||||
$fn=200;
|
||||
|
||||
radius=52/2;
|
||||
height=100;
|
||||
thick=3;
|
||||
pen_hole_radius=15/2;
|
||||
pen_radius=9.2/2;
|
||||
|
||||
|
||||
module spindle_shell(radius, thick, height) {
|
||||
hole_radius = height / 12;
|
||||
difference() {
|
||||
union() {
|
||||
if(1) difference() {
|
||||
cylinder(r=radius, h=height);
|
||||
|
||||
translate([0,0,thick])
|
||||
cylinder(r=radius-thick, h=height+0.1);
|
||||
|
||||
//holes
|
||||
for (angle = [0, 90, 180, 270])
|
||||
rotate([0,0,angle+45])
|
||||
translate([0,0,height/2])
|
||||
scale([1.0,1.0,height/(radius-0)/2])
|
||||
translate([radius-thick,0,0])
|
||||
rotate([-90,0,0])
|
||||
scale([1.5,2,1])
|
||||
sphere(r=hole_radius);
|
||||
}
|
||||
cylinder(r=22/2,h=8);
|
||||
}
|
||||
translate([0,0,-2])
|
||||
spindle_top_screw(pen_hole=11,height=21,with_hole=false);
|
||||
|
||||
for(x=[radius, -radius])
|
||||
for(y=[radius, -radius])
|
||||
translate([x/2,y/2,-1])
|
||||
cylinder(r=2, h=8);
|
||||
}
|
||||
}
|
||||
|
||||
module spindle_top_screw(pen_hole=10, thick=3, height=18, head_thick=6, with_hole=true) {
|
||||
if(1) difference() {
|
||||
if(1) translate([0,0,-head_thick])
|
||||
hex_screw(pen_hole+2*thick+1,4,55,height,1.5,2,pen_hole+2*thick+4,head_thick,0,0);
|
||||
if(with_hole)
|
||||
translate([0,0,-2+12])
|
||||
cylinder(r=(pen_hole+1)/2, h=height+3);
|
||||
}
|
||||
|
||||
translate([0,0,-2+12])
|
||||
scale([1,1,1.5])
|
||||
difference() {
|
||||
sphere(r=(pen_hole-3)/2);
|
||||
|
||||
translate([0,0,-6])
|
||||
cube([10,10,10],center=true);
|
||||
|
||||
translate([0,0,pen_hole*0.6])
|
||||
cube([pen_hole,pen_hole,pen_hole],center=true);
|
||||
}
|
||||
}
|
||||
|
||||
module pen_holder_single(thick, width, height) {
|
||||
difference() {
|
||||
translate([-thick,0,0])
|
||||
cube([thick*2, width, height]);
|
||||
|
||||
translate([2*thick,0,0])
|
||||
rotate([0,0,atan((thick/2)/width)])
|
||||
translate([-thick,0,-height/2])
|
||||
cube([thick*2, width*2, height*2]);
|
||||
|
||||
translate([-2*thick,0,0])
|
||||
rotate([0,0,-atan((thick/2)/width)])
|
||||
translate([-thick,0,-height/2])
|
||||
cube([thick*2, width*2, height*2]);
|
||||
|
||||
rotate([-40,0,0])
|
||||
translate([-thick,0,0])
|
||||
cube([thick*2, width*2, height*2]);
|
||||
}
|
||||
}
|
||||
|
||||
module pen_holder_four(height=60, radius=radius, thick=thick) {
|
||||
difference() {
|
||||
for(angle = [0, 90, 180, 270])
|
||||
rotate([0,0,angle])
|
||||
translate([0,-(radius-thick/2),0])
|
||||
rotate([0,0,-atan((pen_radius+0.4)/(radius-thick))])
|
||||
pen_holder_single(thick*0.8, radius, height);
|
||||
|
||||
cylinder(r=pen_radius, h=150);
|
||||
}
|
||||
}
|
||||
|
||||
module probe_holder()
|
||||
{
|
||||
height = 20;
|
||||
probe_radius = 2/2;
|
||||
probe_hole_radius = probe_radius + 0.8/2;
|
||||
difference() {
|
||||
union(){
|
||||
difference() {
|
||||
cylinder(r=pen_radius+thick, h=height);
|
||||
translate([0,0,-thick/2])
|
||||
cylinder(r=pen_radius-0.05, h=height+thick);
|
||||
translate([-(pen_radius+thick),0,height])
|
||||
scale([1.6,4,1.5])
|
||||
sphere(r=pen_radius+thick);
|
||||
}
|
||||
translate([pen_radius+5, 0, 0])
|
||||
{
|
||||
difference(){
|
||||
cylinder(r=probe_hole_radius+2.2, h=height);
|
||||
translate([0,0,-thick/2])
|
||||
cylinder(r=probe_hole_radius, h=height+thick);
|
||||
}
|
||||
}
|
||||
}
|
||||
translate([pen_radius+5*2, 0 , height/2])
|
||||
scale([2,4,1.8])
|
||||
sphere(r=(probe_hole_radius+2));
|
||||
translate([-10,-pen_radius/2,-1])
|
||||
cube([10, pen_radius, height]);
|
||||
translate([pen_radius+5, -probe_hole_radius*.8, height/2])
|
||||
cube([10, probe_hole_radius*1.6, height]);
|
||||
}
|
||||
translate([20, 0, 0])
|
||||
difference() {
|
||||
cylinder(r=probe_radius+2.2, h=6);
|
||||
translate([0,0,2])
|
||||
cylinder(r=probe_radius, h=6);
|
||||
translate([0,-probe_radius/2, 2])
|
||||
cube([10, probe_radius, height]);
|
||||
}
|
||||
}
|
||||
|
||||
module pen_holder() {
|
||||
difference() {
|
||||
union() {
|
||||
spindle_shell(radius, thick, height);
|
||||
|
||||
translate([40, 0, 6])
|
||||
spindle_top_screw(head_thick=6);
|
||||
|
||||
translate([0,0,height-90])
|
||||
pen_holder_four(height=90);
|
||||
|
||||
//pen
|
||||
if(0) translate([0,0,16])
|
||||
cylinder(r=pen_radius, h=135);
|
||||
}
|
||||
if(0) translate([0,0,-1]) cube([radius*2,radius*2,height+2]);
|
||||
|
||||
for(angle = [0, 180])
|
||||
rotate([0,0,angle])
|
||||
rotate([0,0,-atan((pen_radius+0.4)/(radius-thick))])
|
||||
translate([-thick,2.5*thick,height-15])
|
||||
cube([radius+2*thick,radius,radius]);
|
||||
}
|
||||
}
|
||||
|
||||
pen_holder();
|
||||
|
||||
translate([-60,0,0])
|
||||
probe_holder();
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue