Customized color visualization in OpenScad. Added L top supports for PCB holder
parent
9903784e1f
commit
0fd4c5506a
|
@ -116,6 +116,10 @@ workbed_thickness = 8+3;
|
|||
workbed_separation_from_Y_smooth_rod = 10;
|
||||
|
||||
|
||||
// Part colors
|
||||
color_movingPart = "yellow";
|
||||
color_stillPart = "green";
|
||||
|
||||
|
||||
// Calculations
|
||||
axes_Xreference_posX = (axes_Ysmooth_separation-axes_Xsmooth_rodLen)/2; // relative to Y reference
|
||||
|
@ -151,7 +155,6 @@ render_2D_or_3D() {
|
|||
|
||||
// Main base for the machine
|
||||
beveledBase([base_size_X,base_size_Y,base_thickness], radius=base_corner_radius, res=base_corner_res, echoPart=true, renderPart=render_bases_outline);
|
||||
//%color("brown") translate([0,0,-base_thickness/2]) bcube([base_size_X,base_size_Y,base_thickness], cr=base_corner_radius, cres=base_corner_res);
|
||||
|
||||
|
||||
// A4 paper sheet for reference
|
||||
|
|
|
@ -161,7 +161,7 @@ module Cyclone_X_carriage() {
|
|||
}
|
||||
}
|
||||
|
||||
difference() {
|
||||
color(color_movingPart) difference() {
|
||||
// Main shape
|
||||
union() {
|
||||
hull() {
|
||||
|
|
|
@ -142,7 +142,8 @@ module Cyclone_X_leftFrame(isLeft=true) {
|
|||
// Endstop holder
|
||||
translate([-partThickness-0.04,19,-5+axes_Xsmooth_separation])
|
||||
rotate([-60,0,0]) {
|
||||
rotate([0,0,-90]) mirror([1,0,0]) endstop_holder(holes, shortNuts=true);
|
||||
rotate([0,0,-90]) mirror([1,0,0])
|
||||
endstop_holder(holes, shortNuts=true, plasticColor=color_stillPart);
|
||||
if(holes)
|
||||
cube([partThickness+1,100,50]);
|
||||
}
|
||||
|
@ -175,19 +176,20 @@ module Cyclone_X_leftFrame(isLeft=true) {
|
|||
|
||||
// Translate to lower-front corner
|
||||
translate([0,frameFrontalThickness, -axes_Yreference_height-axes_Xreference_height+footThickness+0.01]) {
|
||||
difference() {
|
||||
// Main hole
|
||||
translate([-partThickness/2,holeWidth/2,holeHeight/2])
|
||||
rotate([0,90,0]) bcube([holeHeight,holeWidth,partThickness*2], cr=15, cres=10);
|
||||
// Translate to top center position
|
||||
translate([0,holeWidth/2,holeHeight]) {
|
||||
// Crocodile clip holders
|
||||
translate([0,crocodileHoldersSeparation/2,0])
|
||||
SingleCrocodileClipHolder();
|
||||
translate([0,-crocodileHoldersSeparation/2,0])
|
||||
SingleCrocodileClipHolder();
|
||||
color(color_stillPart)
|
||||
difference() {
|
||||
// Main hole
|
||||
translate([-partThickness/2,holeWidth/2,holeHeight/2])
|
||||
rotate([0,90,0]) bcube([holeHeight,holeWidth,partThickness*2], cr=15, cres=10);
|
||||
// Translate to top center position
|
||||
translate([0,holeWidth/2,holeHeight]) {
|
||||
// Crocodile clip holders
|
||||
translate([0,crocodileHoldersSeparation/2,0])
|
||||
SingleCrocodileClipHolder();
|
||||
translate([0,-crocodileHoldersSeparation/2,0])
|
||||
SingleCrocodileClipHolder();
|
||||
}
|
||||
}
|
||||
}
|
||||
if(!isLeft) {
|
||||
// Wire slot
|
||||
translate([wireSlotDepth-dimX, dimY-frameFrontalThickness-wireSlotSeparation-wireSlotThicknessSlim/2, dimZ/2+0.01]) {
|
||||
|
@ -208,7 +210,7 @@ module Cyclone_X_leftFrame(isLeft=true) {
|
|||
difference() {
|
||||
// Main block
|
||||
union() {
|
||||
translate([-axes_Xreference_posX-dimX-0.01,axes_Xreference_posY,-axes_Yreference_height]) {
|
||||
color(color_stillPart) translate([-axes_Xreference_posX-dimX-0.01,axes_Xreference_posY,-axes_Yreference_height]) {
|
||||
cube([dimX,dimY,dimZ-axes_Xsmooth_separation]);
|
||||
translate([-footWidth/2+dimX,dimY/2,footThickness/2]) bcube([footWidth,dimY,footThickness], cr=corner_radius, cres=10);
|
||||
}
|
||||
|
@ -217,7 +219,8 @@ module Cyclone_X_leftFrame(isLeft=true) {
|
|||
translate([-axes_Xreference_posX,axes_Xreference_posY,axes_Xreference_height]) {
|
||||
// TRANSLATE REFERENCE POSITION to the threaded rod
|
||||
translate([-0.01,axes_Xsmooth_separation,0]) {
|
||||
rotate([0,-90,0]) cylinder(r=axes_Xsmooth_separation,h=partThickness);
|
||||
rotate([0,-90,0])
|
||||
color(color_stillPart) cylinder(r=axes_Xsmooth_separation,h=partThickness);
|
||||
if(!isLeft)
|
||||
Cyclone_X_endstopHolder(holes=false);
|
||||
}
|
||||
|
@ -286,18 +289,19 @@ module Cyclone_X_leftFrame(isLeft=true) {
|
|||
translate([-bearingDepth,0,0]) rotate([0,90,0])
|
||||
radialBearing(echoPart=true);
|
||||
if(isLeft) {
|
||||
translate([gearWallSeparation,0,0]) rotate([0,90,0])
|
||||
translate([gearWallSeparation,0,0]) rotate([0,90,0]) color(color_movingPart)
|
||||
rodGear(r=axes_XgearSeparation/(1+1/axes_XgearRatio), h=axes_XgearThickness, echoPart=true);
|
||||
// Translate to motor position
|
||||
rotate([motorRotatedOffset,0,0]) {
|
||||
translate([0,axes_XgearSeparation,0])
|
||||
rotate([-motorRotatedOffset,0,0]) {
|
||||
translate([-motorWallSeparation,0,0]) rotate([0,90,0]) stepperMotor(screwHeight=motorWallSeparation, echoPart=true);
|
||||
translate([gearWallSeparation,0,0]) rotate([0,90,0]) motorGear(r=axes_XgearSeparation/(1+axes_XgearRatio), h=axes_XgearThickness, echoPart=true);
|
||||
translate([gearWallSeparation,0,0]) rotate([0,90,0])
|
||||
color(color_movingPart) motorGear(r=axes_XgearSeparation/(1+axes_XgearRatio), h=axes_XgearThickness, echoPart=true);
|
||||
}
|
||||
}
|
||||
translate([0.1,0,0])
|
||||
Cyclone_XsubPart_gearCover();
|
||||
color(color_stillPart) Cyclone_XsubPart_gearCover();
|
||||
}
|
||||
translate([0,0,axes_Xsmooth_separation])
|
||||
rotate([0,0,-90])
|
||||
|
@ -342,11 +346,12 @@ module rodHolder(rodD=8.5, screwSize=3, height=0, sideLen=0, thickness=5, space=
|
|||
} else {
|
||||
difference() {
|
||||
union() {
|
||||
translate([0,-dimY/2,dimZ/2+space/4]) bcube([dimX,dimY,dimZ-space/2],cr=corner_radius,cres=10);
|
||||
if(sideLen>dimX/2)
|
||||
translate([sideLen/2-dimX/4,-dimY/2,-height/2-space/4]) bcube([dimX/2+sideLen,dimY,height-space/2],cr=corner_radius,cres=10);
|
||||
else
|
||||
translate([0,-dimY/2,-height/2-space/4]) bcube([dimX,dimY,height-space/2],cr=corner_radius,cres=10);
|
||||
color(color_movingPart) translate([0,-dimY/2,dimZ/2+space/4]) bcube([dimX,dimY,dimZ-space/2],cr=corner_radius,cres=10);
|
||||
color(color_stillPart)
|
||||
if(sideLen>dimX/2)
|
||||
translate([sideLen/2-dimX/4,-dimY/2,-height/2-space/4]) bcube([dimX/2+sideLen,dimY,height-space/2],cr=corner_radius,cres=10);
|
||||
else
|
||||
translate([0,-dimY/2,-height/2-space/4]) bcube([dimX,dimY,height-space/2],cr=corner_radius,cres=10);
|
||||
}
|
||||
translate([screwSize+screwAditionalDistance,-dimY/2,dimZ])
|
||||
rotate([90,0,0])
|
||||
|
|
|
@ -27,7 +27,7 @@ module Cyclone_YsubPart_nutHolder() {
|
|||
difference() {
|
||||
// Main shape
|
||||
translate([0,0,dimZ/2-holderExtension/2])
|
||||
bcube([dimX,dimY,dimZ+holderExtension],cr=2,cres=10);
|
||||
color(color_movingPart) bcube([dimX,dimY,dimZ+holderExtension],cr=2,cres=10);
|
||||
// Hole for the rod
|
||||
hull() {
|
||||
standard_rod(diam=axes_Ythreaded_rodD+rodTolerance, length=dimY*4, threaded=true, renderPart=true, center=true);
|
||||
|
@ -102,7 +102,7 @@ module Cyclone_YsubPart_singleLinearBearingHolder(onlyScrews=false) {
|
|||
} else {
|
||||
difference() {
|
||||
// Main part
|
||||
union() {
|
||||
color(color_movingPart) union() {
|
||||
translate([0,0,dimZ/2])
|
||||
bcube([dimX,dimY,dimZ], cr=3, cres=0);
|
||||
translate([0,0,dimZ])
|
||||
|
@ -154,30 +154,67 @@ module Cyclone_YsubPart_PCBholder() {
|
|||
|
||||
holderArmLength = 30;
|
||||
|
||||
holderL_thickness = 2;
|
||||
holderL_width = workbed_size_Y-PCB_dimY-PCB_holder_tolerance*2;
|
||||
|
||||
// Draw the PCB (transparent)
|
||||
%translate([0,0,PCBholder_height])
|
||||
color([0.2,0.6,0,0.5]) cube([PCB_dimX+PCB_holder_tolerance*2,PCB_dimY+PCB_holder_tolerance*2,PCB_dimZ], center=true);
|
||||
%translate([0,0,PCBholder_height+PCB_dimZ/2])
|
||||
color([0.8,0.5,0,0.5]) cube([PCB_dimX+PCB_holder_tolerance*2,PCB_dimY+PCB_holder_tolerance*2,PCB_dimZ/10], center=true);
|
||||
|
||||
difference() {
|
||||
translate([0,0,PCBholder_height/2])
|
||||
color(color_stillPart) translate([0,0,PCBholder_height/2])
|
||||
bcube([workbed_size_X,workbed_size_Y,PCBholder_height], cr=25, cres=0);
|
||||
translate([0,0,PCBholder_height/2])
|
||||
cube([PCB_dimX-PCB_holder_edge_length*2,PCB_dimY-PCB_holder_edge_length*2,PCBholder_height+1], center=true);
|
||||
|
||||
// Hole for the PCB
|
||||
translate([0,0,PCBholder_height])
|
||||
color("green") cube([PCB_dimX+PCB_holder_tolerance*2,PCB_dimY+PCB_holder_tolerance*2,PCB_dimZ], center=true);
|
||||
cube([PCB_dimX+PCB_holder_tolerance*2,PCB_dimY+PCB_holder_tolerance*2,PCB_dimZ], center=true);
|
||||
|
||||
// Holes to split the part in two pieces
|
||||
translate([0,0,PCBholder_height/2])
|
||||
cube([PCB_dimX-PCB_holder_edge_length*2,PCB_dimY-PCB_holder_edge_length*2, 2*PCBholder_height+1], center=true);
|
||||
translate([-PCB_dimX/2+PCB_holder_edge_length,0,-0.5])
|
||||
cube([PCB_dimX-holderArmLength-PCB_holder_edge_length,workbed_size_Y,PCBholder_height+1]);
|
||||
cube([PCB_dimX-holderArmLength-PCB_holder_edge_length,workbed_size_Y, 2*PCBholder_height+1]);
|
||||
scale([-1,-1,1]) translate([-PCB_dimX/2+PCB_holder_edge_length,0,-0.5])
|
||||
cube([PCB_dimX-holderArmLength-PCB_holder_edge_length,workbed_size_Y,PCBholder_height+1]);
|
||||
cube([PCB_dimX-holderArmLength-PCB_holder_edge_length,workbed_size_Y, 2*PCBholder_height+1]);
|
||||
|
||||
// Holes for the screws
|
||||
for (x = [-1,1], y=[-1,0,1]) {
|
||||
translate([x*(PCB_dimX/2+screwSeparation),y*PCB_dimY/4,PCBholder_height+2.9])
|
||||
rotate([0,0,x*-90]) rotate([90,0,0]) hole_for_screw(size=3,length=PCBholder_height+3,nutDepth=4.5,nutAddedLen=0,captiveLen=10, rot=90);
|
||||
}
|
||||
|
||||
translate([PCB_dimX/2-holderArmLength/2,PCB_dimY/2+screwSeparation,PCBholder_height+2.9])
|
||||
rotate([90,0,0]) hole_for_screw(size=3,length=PCBholder_height+3,nutDepth=4.5,nutAddedLen=0,captiveLen=10, rot=90);
|
||||
scale([-1,-1,1]) translate([PCB_dimX/2-holderArmLength/2,PCB_dimY/2+screwSeparation,PCBholder_height+2.9])
|
||||
rotate([90,0,0]) hole_for_screw(size=3,length=PCBholder_height+3,nutDepth=4.5,nutAddedLen=0,captiveLen=10, rot=90);
|
||||
|
||||
}
|
||||
// Holder top L supports
|
||||
translate([0,0,0.1])
|
||||
difference() {
|
||||
color(color_movingPart) translate([0,0,PCBholder_height+holderL_thickness/2])
|
||||
bcube([PCB_dimX+PCB_holder_tolerance*2+holderL_width, PCB_dimY+PCB_holder_tolerance*2+holderL_width, holderL_thickness], cr=8, cres=0);
|
||||
translate([0,0,PCBholder_height/2])
|
||||
cube([PCB_dimX-PCB_holder_edge_length*2,PCB_dimY-PCB_holder_edge_length*2, 2*PCBholder_height+1], center=true);
|
||||
translate([-PCB_dimX/2+PCB_holder_edge_length,0,-0.5])
|
||||
cube([PCB_dimX-holderArmLength-PCB_holder_edge_length,workbed_size_Y, 2*PCBholder_height+1]);
|
||||
scale([-1,-1,1]) translate([-PCB_dimX/2+PCB_holder_edge_length,0,-0.5])
|
||||
cube([PCB_dimX-holderArmLength-PCB_holder_edge_length,workbed_size_Y, 2*PCBholder_height+1]);
|
||||
|
||||
// Holes for the screws
|
||||
translate([0,0,holderL_thickness]) {
|
||||
for (x = [-1,1], y=[-1,0,1]) {
|
||||
translate([x*(PCB_dimX/2+screwSeparation),y*PCB_dimY/4,PCBholder_height+2.9])
|
||||
rotate([0,0,x*-90]) rotate([90,0,0]) hole_for_screw(size=3,length=PCBholder_height*10,nutDepth=4.5,nutAddedLen=0,captiveLen=10, rot=90);
|
||||
}
|
||||
|
||||
translate([PCB_dimX/2-holderArmLength/2,PCB_dimY/2+screwSeparation,PCBholder_height+2.9])
|
||||
rotate([90,0,0]) hole_for_screw(size=3,length=PCBholder_height*10,nutDepth=4.5,nutAddedLen=0,captiveLen=10, rot=90);
|
||||
scale([-1,-1,1]) translate([PCB_dimX/2-holderArmLength/2,PCB_dimY/2+screwSeparation,PCBholder_height+2.9])
|
||||
rotate([90,0,0]) hole_for_screw(size=3,length=PCBholder_height*10,nutDepth=4.5,nutAddedLen=0,captiveLen=10, rot=90);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -149,7 +149,7 @@ module Cyclone_Y_frontFrame() {
|
|||
if(draw_references) color("blue") %frame(20);
|
||||
difference() {
|
||||
// Main block
|
||||
union() {
|
||||
color(color_stillPart) union() {
|
||||
hull() {
|
||||
rotate([-90,0,0])
|
||||
cylinder(r=dimX/2,h=dimY);
|
||||
|
@ -231,12 +231,13 @@ module Cyclone_Y_frontFrame() {
|
|||
rotate([90,0,0])
|
||||
stepperMotor(screwHeight=motorWallSeparation, echoPart=true);
|
||||
translate([0,-rod_nut_len-gear_thickness-bearing_width+bearingDepth,0])
|
||||
rotate([-90,0,0]) motorGear(r=axes_YgearSeparation/(1+axes_YgearRatio), echoPart=true);
|
||||
rotate([-90,0,0]) color(color_movingPart)
|
||||
motorGear(r=axes_YgearSeparation/(1+axes_YgearRatio), echoPart=true);
|
||||
}
|
||||
}
|
||||
// Draw the Y gear cover
|
||||
translate([0,-0.1,0])
|
||||
Cyclone_YsubPart_gearCover();
|
||||
color(color_stillPart) Cyclone_YsubPart_gearCover();
|
||||
}
|
||||
rotate([-90,0,0])
|
||||
radialBearing(echoPart=true);
|
||||
|
@ -248,7 +249,7 @@ module Cyclone_Y_frontFrame() {
|
|||
rotate([-90,0,0])
|
||||
nut(size=axes_Ythreaded_rodD, echoPart=true);
|
||||
translate([0,rod_nut_len,0])
|
||||
rotate([-90,0,0])
|
||||
rotate([-90,0,0]) color(color_movingPart)
|
||||
rodGear(r=axes_YgearSeparation/(1+1/axes_YgearRatio), echoPart=true);
|
||||
}
|
||||
|
||||
|
@ -282,22 +283,24 @@ module Cyclone_Y_backFrame() {
|
|||
translate([0,bearingDepth-bearing_width,0]) {
|
||||
difference() {
|
||||
union() {
|
||||
rotate([90,0,0])
|
||||
cylinder(r=dimX/2,h=dimY);
|
||||
translate([-dimX/2,-dimY,-axes_Y_threaded_height])
|
||||
cube([dimX,dimY,axes_Y_threaded_height]);
|
||||
translate([0,-dimY/2,-axes_Y_threaded_height])
|
||||
hull() {
|
||||
translate([-footSeparation-dimX/2,0,0])
|
||||
cylinder(r=dimY/2,h=footThickness);
|
||||
translate([footSeparation+dimX/2,0,0])
|
||||
cylinder(r=dimY/2,h=footThickness);
|
||||
translate([0,dimY/2+footSeparation+foot_additional_separation,0])
|
||||
cylinder(r=dimY/2,h=footThickness);
|
||||
}
|
||||
color(color_stillPart) {
|
||||
rotate([90,0,0])
|
||||
cylinder(r=dimX/2,h=dimY);
|
||||
translate([-dimX/2,-dimY,-axes_Y_threaded_height])
|
||||
cube([dimX,dimY,axes_Y_threaded_height]);
|
||||
translate([0,-dimY/2,-axes_Y_threaded_height])
|
||||
hull() {
|
||||
translate([-footSeparation-dimX/2,0,0])
|
||||
cylinder(r=dimY/2,h=footThickness);
|
||||
translate([footSeparation+dimX/2,0,0])
|
||||
cylinder(r=dimY/2,h=footThickness);
|
||||
translate([0,dimY/2+footSeparation+foot_additional_separation,0])
|
||||
cylinder(r=dimY/2,h=footThickness);
|
||||
}
|
||||
}
|
||||
translate([0,-dimY-0.01,dimX/2])
|
||||
rotate([0,endstopHolderRotation,0])
|
||||
endstop_holder(holes=false);
|
||||
endstop_holder(holes=false, plasticColor=color_stillPart);
|
||||
}
|
||||
|
||||
translate([0,-dimY-0.01,dimX/2])
|
||||
|
@ -391,49 +394,47 @@ module Cyclone_Y_rightSmoothRodIdler(mirrorLogo = false) {
|
|||
footSeparation = screwSize*2;
|
||||
footThickness = 10;
|
||||
|
||||
color("lightcyan") {
|
||||
difference() {
|
||||
union() {
|
||||
translate([0,0,-axes_Yreference_height])
|
||||
cube([dimX,dimY,dimZ+holderThickness+axes_Ysmooth_rodD/2]);
|
||||
translate([-holderOuterRadius,0,-axes_Yreference_height])
|
||||
cube([dimX,dimY,dimZ]);
|
||||
rotate([-90,0,0]) cylinder(r=holderOuterRadius, h=dimY);
|
||||
translate([0,dimY/2,-axes_Yreference_height])
|
||||
hull() {
|
||||
translate([-holderOuterRadius-footSeparation,0,0])
|
||||
cylinder(r=dimY/2,h=footThickness);
|
||||
translate([holderOuterRadius*2+footSeparation,0,0])
|
||||
cylinder(r=dimY/2,h=footThickness);
|
||||
translate([holderOuterRadius/2,dimY/2+footSeparation,0])
|
||||
cylinder(r=dimY/2,h=footThickness);
|
||||
}
|
||||
}
|
||||
standard_rod(diam=axes_Ysmooth_rodD, length=dimY*4, threaded=false, renderPart=true, center=true);
|
||||
translate([2.5+holderOuterRadius,dimY/2,holderOuterRadius])
|
||||
difference() {
|
||||
color(color_stillPart) union() {
|
||||
translate([0,0,-axes_Yreference_height])
|
||||
cube([dimX,dimY,dimZ+holderThickness+axes_Ysmooth_rodD/2]);
|
||||
translate([-holderOuterRadius,0,-axes_Yreference_height])
|
||||
cube([dimX,dimY,dimZ]);
|
||||
rotate([-90,0,0]) cylinder(r=holderOuterRadius, h=dimY);
|
||||
translate([0,dimY/2,-axes_Yreference_height])
|
||||
hull() {
|
||||
translate([-holderOuterRadius-footSeparation,0,0])
|
||||
cylinder(r=dimY/2,h=footThickness);
|
||||
translate([holderOuterRadius*2+footSeparation,0,0])
|
||||
cylinder(r=dimY/2,h=footThickness);
|
||||
translate([holderOuterRadius/2,dimY/2+footSeparation,0])
|
||||
cylinder(r=dimY/2,h=footThickness);
|
||||
}
|
||||
}
|
||||
standard_rod(diam=axes_Ysmooth_rodD, length=dimY*4, threaded=false, renderPart=true, center=true);
|
||||
translate([2.5+holderOuterRadius,dimY/2,holderOuterRadius])
|
||||
rotate([0,90,0])
|
||||
rotate([0,0,90])
|
||||
hole_for_screw(size=screwSize,length=screwLength+10,nutDepth=10,nutAddedLen=0,captiveLen=10, rot=90);
|
||||
translate([dimX/2,dimY/2,0])
|
||||
cube([dimX+1,dimY+1,slotHeight],center=true);
|
||||
translate([(dimX-holderOuterRadius)/2,-0.1,-(dimZ+axes_Ysmooth_rodD/2)/2])
|
||||
scale([1,-1,1])
|
||||
rotate([90,0,0])
|
||||
Cyclone_logo(sizemm = min(dimX+holderOuterRadius-5,dimZ-axes_Ysmooth_rodD/2-5), thickness = logoDepth, mirrorLogo = mirrorLogo);
|
||||
translate([0,dimY/2,-axes_Yreference_height+footThickness]) {
|
||||
translate([-holderOuterRadius-footSeparation,0,0])
|
||||
rotate([0,90,0])
|
||||
rotate([0,0,90])
|
||||
hole_for_screw(size=screwSize,length=screwLength+10,nutDepth=10,nutAddedLen=0,captiveLen=10, rot=90);
|
||||
translate([dimX/2,dimY/2,0])
|
||||
cube([dimX+1,dimY+1,slotHeight],center=true);
|
||||
translate([(dimX-holderOuterRadius)/2,-0.1,-(dimZ+axes_Ysmooth_rodD/2)/2])
|
||||
scale([1,-1,1])
|
||||
rotate([90,0,0])
|
||||
Cyclone_logo(sizemm = min(dimX+holderOuterRadius-5,dimZ-axes_Ysmooth_rodD/2-5), thickness = logoDepth, mirrorLogo = mirrorLogo);
|
||||
translate([0,dimY/2,-axes_Yreference_height+footThickness]) {
|
||||
translate([-holderOuterRadius-footSeparation,0,0])
|
||||
rotate([0,90,0])
|
||||
rotate([0,0,90])
|
||||
hole_for_screw(size=screwSize,length=footThickness+base_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0, rot=90, invert=true);
|
||||
translate([holderOuterRadius*2+footSeparation,0,0])
|
||||
rotate([0,90,0])
|
||||
rotate([0,0,90])
|
||||
hole_for_screw(size=screwSize,length=footThickness+base_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0, rot=90, invert=true);
|
||||
translate([holderOuterRadius/2,dimY/2+footSeparation,0])
|
||||
rotate([0,90,0])
|
||||
rotate([0,0,90])
|
||||
hole_for_screw(size=screwSize,length=footThickness+base_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0, rot=90, invert=true);
|
||||
}
|
||||
rotate([0,0,90])
|
||||
hole_for_screw(size=screwSize,length=footThickness+base_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0, rot=90, invert=true);
|
||||
translate([holderOuterRadius*2+footSeparation,0,0])
|
||||
rotate([0,90,0])
|
||||
rotate([0,0,90])
|
||||
hole_for_screw(size=screwSize,length=footThickness+base_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0, rot=90, invert=true);
|
||||
translate([holderOuterRadius/2,dimY/2+footSeparation,0])
|
||||
rotate([0,90,0])
|
||||
rotate([0,0,90])
|
||||
hole_for_screw(size=screwSize,length=footThickness+base_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0, rot=90, invert=true);
|
||||
}
|
||||
}
|
||||
// Draw nuts and bolts
|
||||
|
|
|
@ -182,13 +182,13 @@ module stepperMotor(screwHeight=10, renderPart=false, echoPart=false) {
|
|||
|
||||
module motorGear(r=30,h=10,renderPart=false, echoPart=false) {
|
||||
renderStandardPart(renderPart)
|
||||
color("lightgreen") cylinder(r=r,h=h)
|
||||
cylinder(r=r,h=h)
|
||||
if(echoPart) echo(str("BOM: Gear. Motor."));
|
||||
}
|
||||
|
||||
module rodGear(r=30,h=10,renderPart=false, echoPart=false) {
|
||||
renderStandardPart(renderPart)
|
||||
color("lightgreen") cylinder(r=r,h=h)
|
||||
cylinder(r=r,h=h)
|
||||
if(echoPart) echo(str("BOM: Gear. Rod."));
|
||||
}
|
||||
|
||||
|
@ -281,7 +281,7 @@ module control_board() {
|
|||
}
|
||||
|
||||
|
||||
module endstop_holder(holes=false, shortNuts=false) {
|
||||
module endstop_holder(holes=false, plasticColor="blue", shortNuts=false) {
|
||||
boardX = 41;
|
||||
boardY = 16.05;
|
||||
boardZ = 1.62;
|
||||
|
@ -312,7 +312,7 @@ module endstop_holder(holes=false, shortNuts=false) {
|
|||
hole_for_screw(size=3,length=15,nutDepth=shortNuts?5:0,nutAddedLen=shortNuts?0:5,captiveLen=10,rot=90);
|
||||
}
|
||||
} else {
|
||||
translate([holderX/2,holderY/2,-holderZ/2-boardZ])
|
||||
color(plasticColor) translate([holderX/2,holderY/2,-holderZ/2-boardZ])
|
||||
bcube([holderX,holderY,holderZ], cr=2, cres=4);
|
||||
// PCB
|
||||
color("lightgrey") translate([0,0,-boardZ])
|
||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue