Going everywhere is easy with [mapquest driving directions](https://mapquest-directions.io)
No matter where you are or where you want to go, MapQuest can help you get there.
jedacandy
over 3 years
It's necessary, I need more information
<a href="https://driving-directionsmaps.com/">driving directions</a>
Viktor Malenyov
about 7 years
What about endstops? On v.1.2 i see only X-endstop. What about YZ?
sobo84
over 7 years
And where to get an actual model? STLs with my settings?
Cristian Barilari
over 7 years
This model is obsolete... And I don't think that nema14 have enough torque to drive the printer
sobo84
over 7 years
Hey there....
it is not possible to generate accurate parts via OpenJSCAD for Nema14 and wood thickness of 24mm. There are solids in the space where the wood should fit in the MotorXY holders...can anyone help?
docdawning
over 8 years
This seems fairly awesome. How are your prints? Any sense what your BoM cost was?
fpv_tobi
over 8 years
Hi,
The BOM is missing at least the Endstop Switches and a Fan for the Hotend right?
matrix
over 8 years
hi thk u for the design.
can u help me with v1.2, there is a problem with z slide part, if u use z rod 10mm there is a hole on the lm10uu holder and there is no stability for the part.
MonZon
over 8 years
Files here are obsolete, use https://cad.onshape.com/documents/086229ea796640d29acd68ff/w/2030a3358fd641da896d20a5 instead.
Mark van Wijk
over 8 years
the STL outputs are not usable with 8mm rods, non manifold -> slic3r can't do anything with them...
punkrockseb
over 8 years
12mm prints fine for 11.8mm wood.
punkrockseb
over 8 years
I happen to have wood that is 11.80mm. However the openjscad script rounds down to 11mm. May it be possible to adjust the script to accept 0.xx values for the wood frame?
I guess printing with 12mm might fit aswell, taking an extruders deviation into account but it would be really nice to see 0.xx values being accepted by the script.
Thanks
Cristiano Gariboldo
almost 9 years
hi.
Beautiful design.
Just a tough. Why don't code an option for GT2.5 belts and a screwless Z rod?
Cheers and Keep up the good mood
Vincent Y
almost 9 years
The sensor mentioned in the BOM ( LJ18A3-8-Z/BX) is an inductive sensor, so do you not need a metal bed for it to work ? All the pictures I see use a glass bed.
Anonymous
almost 9 years
which reached the speed of printing on this printer? And what parameters are used for printing speeds this design?
Anonymous
almost 9 years
which reached the speed of printing on this printer? And what parameters are used for printing speeds this design?
Anonymous
almost 9 years
which reached the speed of printing on this printer? And what parameters are used for printing speeds this design?
adamantos.amatisto
almost 9 years
Not work wit nema 14 motors, error in xy motor a rosa spare part
marcething
almost 9 years
Hello Serge,
now smartcore v1.2.JSCAD works perfectly in OPenJSCAD !
Marc
smartfriendz
almost 9 years
updated smartcore v1.2 . now it works in openjscad.org. I wonder if it will work again here ? preview dows nothing right now.
marcething
almost 9 years
If you edit smartcore-v1.2.jscad, and change in line 525 "grey" by 3 number with a "," in between ( e.g. (1,1,1 ) instead of ( "GREY"° and save it , it works fine in OpenJScad
marcething
almost 9 years
Oops, OK never Mind, found it :-)
lacuevadeltrollsv
almost 9 years
Is there any file I can print so I can add two sets of Z supports using the gt2 belt instead of the threaded rod solution on prev iterations?
marcething
almost 9 years
I opened Smartcore V1.0.1 in openJscad and in the menu, I selected Box wood thickness ; 12mm , X Y Rods : 8mm and Z threaded rods: true. So far so good. How do you now generate the separate STL's so I can slice them in Slic3r and print them?
Many thanks in advance for the feedback
Anonymous
almost 9 years
following up on the comment below, just copy and paste this code into openjscad, and it should work.
/**********
Smartcore : L'empileuse
author: serge.vi / smartfriendz
licence : GPL
TODO:
- clips glass
***********/
// global vars - updated from interface but need to be avalaible in all functions
var _globalResolution; // used to speed up rendering. ugly for preview . use 24 or 32 for generating stl.
var _globalWidth; // exernal dimension of the all printer
var _globalHeight; // exernal dimension of the all printer
var _globalDepth; // exernal dimension of the all printer
var _printableWidth;
var _printableDepth;
var _printableHeight;
var _wallThickness; // box wood thickness
var _XYrodsDiam; // usually 6 or 8 .. or 10?
var _XYlmDiam; // lm6uu, lm8uu ... will be calculated from rods diam
var _XYlmLength;
var _ZrodsDiam; // usually 6, 8, 10 or 12
var _ZlmDiam; // lm6uu, lm8uu ... will be calculated from rods diam
var _ZlmLength;
var _nemaXYZ; // nema 14 , nema 17
var _XrodsWidth=60; //space between rods on X axis
var _ZrodsWidth=60; //space between rods on Z axis
var XrodLength = 300; // will be calculated in main from parameters.
var YrodLength = 300; // will be calculated in main from parameters.
var ZrodLength = 300; // will be calculated in main from parameters.
var _rodsSupportThickness = 3; // thickness around rods for all supports
var outputPlateWidth = 180; //used when output to printable plates for elements
var outputPlateDepth = 180;
var mk7Diam = 10;
var beltXAddon = 120; // belt extra length over rod size - bearing guides and difference between bearing edge to end of rod
var beltYAddon = 30; // belt extra length over y rod size - distance from motor pulley edge to Y rod mount and
// global for work
var _bearingsDepth = 35; // hack.need to be cleaned.
var headoffset = -90; // used to place the head along X axis
var XaxisOffset = -40; // used to palce the X axis on Y
var _ZaxisOffset = -30; // used to place Z stage.
var endxJheadAttachHolesWidth = 32; // tempo..
var output; // show hide objects from output choosen in the parameters.
// interactive parameters
function getParameterDefinitions() {
return [
{ name: '_version', caption: 'Version', type: 'text', initial: "1.2.3 june 12 2015" },
{
name: '_output',
caption: 'What to show :',
type: 'choice',
values: [0,1,2,3,4,-1,5,6,7,8,9,10,11,12],
initial: 1,
captions: ["-----", //0
"All printer assembly", //1
"printed parts plate", //2
"parts only", //3
"Walls and rods sizes", //4
"-----", // nope
"motor xy", //5
"bearings xy", //6
"slide y", //7
"z top", //8
"z bottom", //9
"z slide", //10
"head", //11
"extruder" //12
]
},
{ name: '_globalResolution', caption: 'output resolution (16, 24, 32)', type: 'int', initial: 8 },
{ name: '_printableWidth', caption: 'Print width:', type: 'int', initial: 200 },
{ name: '_printableHeight', caption: 'Print height :', type: 'int', initial: 150 },
{ name: '_printableDepth', caption: 'Print depth :', type: 'int', initial: 200 },
{ name: '_wallThickness', caption: 'Box wood thickness:', type: 'int', initial: 10 },
{ name: '_XYrodsDiam', caption: 'X Y Rods diameter (6 or 8 ):', type: 'int', initial: 6},
{ name: '_ZrodsDiam', caption: 'Z Rods diameter (6,8,10,12):', type: 'int', initial: 8},
{name: '_nemaXYZ',
type: 'choice',
caption: 'Stepper motors type',
values: [35, 42],
captions: ["nema14","nema17"],
initial: 42
}
/*
{name: 'extrusionType',
type: 'choice',
caption: 'Extrusion type',
values: [0, 1],
captions: ["direct","bowden"],
initial: 1
}
*/
];
}
// ----------------- printed elements
function zTop(){
var width = _ZrodsWidth+_ZrodsDiam+(_rodsSupportThickness*2)+26;
var height = 12;
var depth = 24;
var insideWidth = 28;
var mesh = union(
difference(
cube({size:[width,depth,height],center:true}),
// outside form left
cube({size:[13,depth,height],center:true}).translate([-width/2+6.5,-5,0]),
// outside form right
cube({size:[13,depth,height],center:true}).translate([width/2-6.5,-5,0]),
//screw left
slottedHole(4,8,depth).rotateX(90).rotateY(90).translate([-(width)/2+4,20,0]),
//screw right
slottedHole(4,8,depth).rotateX(90).rotateY(90).translate([(width)/2-9,20,0]),
// z rod left
cylinder({r:_ZrodsDiam/2,h:height,fn:_globalResolution}).translate([-_ZrodsWidth/2,depth/2-12,-height/2]),
//z rod right
cylinder({r:_ZrodsDiam/2,h:height,fn:_globalResolution}).translate([_ZrodsWidth/2,depth/2-12,-height/2]),
// chamfer
roundBoolean2(10,height,"bl").rotateX(90).rotateZ(-90).translate([-width/2+22,-depth/2+9,-height/2]),
roundBoolean2(10,height,"bl").rotateX(90).translate([width/2-22,-depth/2+9,-height/2]),
// inside form
difference(
cube({size:[insideWidth,8,height],center:true}).translate([3,-5.5,0]),
// bearing washers
cylinder({r:5,h:0.5,fn:_globalResolution}).rotateX(-90).translate([3,-9.5,0]),
cylinder({r:5,h:0.5,fn:_globalResolution}).rotateX(-90).translate([3,-2,0])
),
// bearing hole
cylinder({r:4,h:depth,fn:_globalResolution}).rotateX(-90).translate([3,-depth/2-4,0])
)
);
return mesh;
}
function zBottom(){
var width = _ZrodsWidth+_ZrodsDiam+(_rodsSupportThickness*2)+26;
var height = 10;
var depth = 22;
var inside_cut_x = _ZrodsWidth-_ZrodsDiam-_rodsSupportThickness*2;
var mesh = difference(
//main
union(
cube({size:[width,depth,height],center:true}).setColor(0.2,0.7,0.2),
cube({size:[width/2,depth,10],center:true}).translate([0,-depth/2,0]).setColor(0.2,0.7,0.2)
),
// inside form
nemaHole(_nemaXYZ).rotateX(90).translate([0,0,_nemaXYZ/2-height/2]),
cube({size:[inside_cut_x,depth,height],center:true}).translate([0,10,0]),
// outside form left
cube({size:[13,depth,height],center:true}).translate([-width/2+6.5,-5,0]),
// outside form right
cube({size:[13,depth,height],center:true}).translate([width/2-6.5,-5,0]),
// z rod left
cylinder({r:_ZrodsDiam/2,h:height,fn:_globalResolution}).translate([-_ZrodsWidth/2,depth/2-12,-height/2]),
//z rod right
cylinder({r:_ZrodsDiam/2,h:height,fn:_globalResolution}).translate([_ZrodsWidth/2,depth/2-12,-height/2]),
// screws attach holes
cylinder({r:2,h:5,fn:_globalResolution}).rotateX(-90).translate([width/2-5,depth/2-5,0]),
cylinder({r:2,h:5,fn:_globalResolution}).rotateX(-90).translate([-width/2+5,depth/2-5,0])
);
return mesh;
}
function slideZ2(){
var width = _ZrodsWidth-5;
var height = 50;
var depth = 5;
var insideWidth = 35;
var lmXuu_support_r = _rodsSupportThickness + _ZlmDiam / 2;
var side_plate_size = 7;
var side_form_size = lmXuu_support_r + side_plate_size;
// lmXuu set screws offset
var set_screw_offset = lmXuu_support_r + side_plate_size / 2 - 1;
var nutRadius = 14.5/2;
return difference(
//main form
union(
cube({size:[width,depth,height]}),
Gt2Holder2().rotateX(90).rotateY(90).translate([width/2-10,3,height-13]),
//Gt2Holder(3).rotateX(90).rotateY(90).translate([width/2-10,1,10]).setColor(0.2,0.7,0.2),
// lmXuu support
cylinder({r:lmXuu_support_r,h:height,fn:_globalResolution}),
cylinder({r:lmXuu_support_r,h:height,fn:_globalResolution}).translate([_ZrodsWidth,0,0]),
// side forms for lmXuu attach
cube({size:[side_form_size,10,height]}).translate([_ZrodsWidth,-4,0]),
cube({size:[side_form_size,10,height]}).translate([-side_form_size,-4,0]),
// extra forms front bearings holes
cube([16,70,height]).translate([-8,-65,0]),
cube([16,70,height]).translate([_ZrodsWidth-8,-65,0])
),
// big hole middle
cylinder({r:8,h:50,fn:_globalResolution}).rotateX(90).translate([width/2+12,40,height/2+10]),
cylinder({r:5,h:50,fn:_globalResolution}).rotateX(90).translate([width/2+15,40,height/2-10]),
cylinder({r:5,h:50,fn:_globalResolution}).rotateX(90).translate([width/2-10,40,height/2-10]),
// boolean front horizontal
cylinder({r:70,h:width+40,fn:_globalResolution}).rotateY(90).translate([-20,-70,-30]),
cylinder({r:5,h:width+40,fn:_globalResolution}).rotateY(90).translate([-20,-15,height-10]),
// front form
cube([12,70,height]).translate([-10,-85,-5]),
cube([12,70,height]).translate([_ZrodsWidth-2,-85,-5]),
// z rod left linear bearing lm
cylinder({r:_ZlmDiam/2,h:height,fn:_globalResolution}).translate([0,0,0]),
//z rod right linear bearing lm
cylinder({r:_ZlmDiam/2,h:height,fn:_globalResolution}).translate([_ZrodsWidth,0,0]),
// side holes for lmXuu attach
cube({size:[side_form_size+1,2,height]}).translate([_ZrodsWidth,0,0]),
cube({size:[side_form_size+1,2,height]}).translate([-side_form_size-1,0,0]),
// side holes for lmXuu screws
cylinder({r:1.4,h:30,fn:_globalResolution}).rotateX(90).translate([_ZrodsWidth+set_screw_offset,20,height-10]),
cylinder({r:1.4,h:30,fn:_globalResolution}).rotateX(90).translate([_ZrodsWidth+set_screw_offset,20,10]),
cylinder({r:1.4,h:30,fn:_globalResolution}).rotateX(90).translate([-set_screw_offset,20,height-10]),
cylinder({r:1.4,h:30,fn:_globalResolution}).rotateX(90).translate([-set_screw_offset,20,10]),
// top holes
cylinder({r:2,h:30,fn:_globalResolution}).translate([-4,-20,height-30]),
cylinder({r:2,h:30,fn:_globalResolution}).translate([_ZrodsWidth+2,-20,height-30]),
cylinder({r:2,h:30,fn:_globalResolution}).translate([-4,-55,height-30]),
cylinder({r:2,h:30,fn:_globalResolution}).translate([_ZrodsWidth+2,-55,height-30]),
// special hole in gt2 holder to be able to get the belt out .. but still printable vertically.
linear_extrude({height:20},polygon({points:[[0,0],[6,0],[4,10],[2,10]]})).rotateY(-90).translate([width/2+5,-10,height-15])
);
}
function slideY(side){
var mesh;
var Y = 20;
var Z = 40;
var bearingsOffsetZ = 15;
var bearingsOffsetX = 20;
var bearingHoleOffsetX = bearingsOffsetX+13;
var X = 40;
mesh = difference(
union(
difference(
//main
cube({size:[X,Y,Z]}).translate([15,0,0]),
// support bearings
cube({size:[X,Y,8]}).translate([6.5,0,bearingsOffsetZ]),
cube({size:[X,Y,8]}).translate([6.5,0,bearingsOffsetZ+11])
),
// rodx extra form on top and bottom to fix the rods
//cube({size:[10,Y,5]}).translate([X+5,0,-5]),
cube({size:[10,Y,5]}).translate([X+5,0,Z]),
//cylinder({r:5,h:Y,fn:_globalResolution}).rotateX(-90).translate([X+10,0,-5]),
cylinder({r:5,h:Y,fn:_globalResolution}).rotateX(-90).translate([X+10,0,Z+5]),
//rodx extra fillet
// fillet
roundBoolean2(3,Y,"tl").translate([X+2,0,Z]),
roundBoolean2(3,Y,"bl").translate([X+2,0,-3]),
// round bearings supports in middle
cylinder({r:5,h:0.5,fn:_globalResolution}).translate([bearingHoleOffsetX,Y/2,bearingsOffsetZ]),
cylinder({r:5,h:4,fn:_globalResolution}).translate([bearingHoleOffsetX,Y/2,bearingsOffsetZ+7.5]),
cylinder({r:5,h:0.5,fn:_globalResolution}).translate([bearingHoleOffsetX,Y/2,bearingsOffsetZ+11+7.5]),
//extra rod Y support
cylinder({r:_XYlmDiam/2+3.5,h:Y+10,fn:_globalResolution}).rotateX(-90).translate([14,-10,5]),
cube({size:[10,Y+10,6]}).translate([0,-10,2])
),
// cut bearings support part
cube({size:[10,Y,30]}).translate([10,0,20]),
// and add some chamfreins
roundBoolean2(3,20,"tr").rotateX(-90).translate([20,0,40]),
roundBoolean2(3,20,"br").rotateX(-90).translate([20,Y-3,40]),
// long bearing hole
cylinder({r:4.1,h:Z-bearingsOffsetZ,fn:_globalResolution}).translate([bearingHoleOffsetX,Y/2,bearingsOffsetZ]),
cylinder({r:3.8,h:bearingsOffsetZ,fn:_globalResolution}).translate([bearingHoleOffsetX,Y/2,0]),
// screw for endstop X
//cylinder({r:1.3,h:12,fn:_globalResolution}).rotateX(90).translate([X+12,Y+1,13]),
// rod Y bool
cylinder({r:_XYlmDiam/2+0.1,h:Y+15,fn:_globalResolution}).rotateX(-90).translate([14,-15,5]),
// rod Y support slice boolean
cube({size:[10,Y+10,1]}).translate([0,-10,4.5]),
// Xrods hole top
cylinder({r:_XYrodsDiam/2,h:15,fn:_globalResolution}).rotateY(90).translate([X+3,Y/2,Z]),
// Xrods hole bottom
cylinder({r:_XYrodsDiam/2,h:15,fn:_globalResolution}).rotateY(90).translate([X+3,Y/2,0]),
// Xrods slice bottom top
//cube({size:[13,1,10]}).translate([X+2,Y/2,-10]),
cube({size:[13,1,10]}).translate([X+2,Y/2,Z]),
// screws to fix rod X
cylinder({r:1.3,h:Y,fn:_globalResolution}).rotateX(-90).translate([X+10,0,Z+5]),
// screws for rod Y support
cylinder({r:1.3,h:20,fn:_globalResolution}).translate([3,-5,0]),
cylinder({r:1.3,h:30,fn:_globalResolution}).translate([3,15,-20])
);
if(side=="left"){
mesh = union(
mesh,
text3d("L").scale(0.3).translate([15,5,14.8]),
// extra part for endstop X to click on
difference(
cube({size:[10,Y+5,14]}).translate([X+5,-5,-14]),
cylinder({r:1.3,h:Y+10,fn:_globalResolution}).rotateX(-90).translate([X+10,-6,-5]),
cube({size:[13,1,12]}).translate([X+2,Y/2,-12]),
// Xrods hole bottom
cylinder({r:_XYrodsDiam/2,h:12,fn:_globalResolution}).rotateY(90).translate([X+3,Y/2,0]),
//extra remove
cylinder({r:20,h:10,fn:_globalResolution}).rotateX(-90).rotateZ(90).translate([X+15,20,-28])
)
);
}
if(side=="right"){
mesh = union(
mesh,
text3d("R").scale(0.3).rotateY(180).translate([22,5,15.4]),
// bottom round only on right part
difference(
union(
cube({size:[10,Y,5]}).translate([X+5,0,-5]),
cylinder({r:5,h:Y,fn:_globalResolution}).rotateX(-90).translate([X+10,0,-5])
),
cylinder({r:1.3,h:Y,fn:_globalResolution}).rotateX(-90).translate([X+10,0,-5]),
cube({size:[13,1,10]}).translate([X+2,Y/2,-10]),
// Xrods hole bottom
cylinder({r:_XYrodsDiam/2,h:12,fn:_globalResolution}).rotateY(90).translate([X+5,Y/2,0])
),
// extra part for endstop Y click
difference(
cube({size:[7,Y-10,10]}).translate([0,Y-(Y-10),-8]),
cylinder({r:1.3,h:30,fn:_globalResolution}).translate([3,15,-20])
)
);
}
if(output==0){
mesh = union(
mesh,
bearing608z().translate([bearingHoleOffsetX,Y/2,15.5]),
bearing608z().translate([bearingHoleOffsetX,Y/2,26.5])
);
}
return mesh;
}
function head(){
var mesh;
var X = (2*_XYlmLength)+12;
var Y = _XYlmDiam + 8;
var Z = _XYlmDiam + 40;
var zOffset = 12 -_XYlmDiam /2;
var xrodOffset = 40;
var washer = (X-(2*_XYlmLength))/3;
var headAttachHolesXwidth = 22;
mesh = difference(
union(
cube({size:[X,Y,Z]}).translate([0,0,zOffset]),
//gt2 holders
Gt2HolderSuspendedLeft(3).translate([0,-5,27]),
Gt2HolderSuspendedRight(3).translate([0,_XYlmDiam +5,37]),
// support for endstop X
cube({size:[10,10,6]}).translate([0,-7,zOffset]),
Gt2HolderSuspendedLeft(3).translate([X-10,-5,37]),
Gt2HolderSuspendedRight(3).translate([X-10,_XYlmDiam +5,27])
),
//rod x holes
//bottom
union(
cylinder({r:_XYlmDiam/2,h:X,fn:_globalResolution}).rotateY(90).translate([0,Y/2,15]),
cube({size:[X,5,5]}).rotateX(45).translate([0,Y/2,15.5]),
cube({size:[X,1,8]}).translate([0,Y/2-0.5,zOffset])
),
// top
union(
cylinder({r:_XYlmDiam/2-1,h:washer,fn:_globalResolution}).rotateY(90).translate([0,Y/2,15+xrodOffset-1]),
cube({size:[washer,_XYlmDiam-2,10]}).translate([0,Y/2-_XYlmDiam/2+1,15+xrodOffset-1]),
cylinder({r:_XYlmDiam/2,h:_XYlmLength,fn:_globalResolution}).rotateY(90).translate([washer,Y/2,15+xrodOffset-1]),
cube({size:[_XYlmLength,_XYlmDiam,10]}).translate([washer,Y/2-_XYlmDiam/2,15+xrodOffset-1]),
cylinder({r:_XYlmDiam/2-1,h:washer,fn:_globalResolution}).rotateY(90).translate([washer+_XYlmLength,Y/2,15+xrodOffset-1]),
cube({size:[washer,_XYlmDiam-2,10]}).translate([washer+_XYlmLength,Y/2-_XYlmDiam/2+1,15+xrodOffset-1]),
cylinder({r:_XYlmDiam/2,h:_XYlmLength,fn:_globalResolution}).rotateY(90).translate([2*washer+_XYlmLength,Y/2,15+xrodOffset-1]),
cube({size:[_XYlmLength,_XYlmDiam,10]}).translate([2*washer+_XYlmLength,Y/2-_XYlmDiam/2,15+xrodOffset-1]),
cylinder({r:_XYlmDiam/2-1,h:washer,fn:_globalResolution}).rotateY(90).translate([2*washer+2*_XYlmLength,Y/2,15+xrodOffset-1]),
cube({size:[washer,_XYlmDiam-2,10]}).translate([2*washer+2*_XYlmLength,Y/2-_XYlmDiam/2+1,15+xrodOffset-1])
),
// head attach holes
cylinder({r:1.3,h:Y,fn:_globalResolution}).rotateX(-90).translate([X/2-headAttachHolesXwidth/2,0,40]),
cylinder({r:1.3,h:Y,fn:_globalResolution}).rotateX(-90).translate([X/2-headAttachHolesXwidth/2,0,28]),
cylinder({r:1.3,h:Y,fn:_globalResolution}).rotateX(-90).translate([X/2+headAttachHolesXwidth/2,0,40]),
cylinder({r:1.3,h:Y,fn:_globalResolution}).rotateX(-90).translate([X/2+headAttachHolesXwidth/2,0,28]),
// screw to fix endstop X under
cylinder({r:1.6,h:10,fn:_globalResolution}).translate([3,-2,5]) ,
// screw to fix bottom Xrod
cylinder({r:1.6,h:Y,fn:_globalResolution}).rotateX(-90).translate([X/2,0,9])
);
return mesh;
}
function HeadSupportJhead(){
var width = 40;
var height = 35;
var depth = 15;
var extDiam=15.1;
var intDiam=12.1;
var intDiamHeight=5;
return difference(
union(
//base
cube({size:[28,5,height]}).translate([(width-28)/2,0,0]),
// top
cube({size:[width,depth,8]}).translate([0,0,height-8]),
// fillet
roundBoolean2(5,28,"br").rotateZ(90).translate([width-6,5,height-13])
),
// jhead holes
cylinder({r:extDiam/2+0.1,h:height-5,fn:_globalResolution}).translate([width/2,depth+1,0]),
cylinder({r:intDiam/2+0.1,h:intDiamHeight,fn:_globalResolution}).translate([width/2,depth+1,height-5]),
cylinder({r:13,h:height-12,fn:_globalResolution}).translate([width/2,depth+1,0]),
// jhead attach holes
cylinder({r:1.3,h:30,fn:_globalResolution}).rotateX(-90).translate([width/2-endxJheadAttachHolesWidth/2,0,height-4]),
cylinder({r:1.3,h:30,fn:_globalResolution}).rotateX(-90).translate([width/2+endxJheadAttachHolesWidth/2,0,height-4]),
// head attach holes
slottedHole(3.2,8,10).rotateX(90).translate([width/2-11,depth-5,5]),
slottedHole(3.2,8,10).rotateX(90).translate([width/2+11,depth-5,5]),
slottedHole(3.2,8,10).rotateX(90).translate([width/2-11,depth-5,18]),
slottedHole(3.2,8,10).rotateX(90).translate([width/2+11,depth-5,18]),
// extra hole back right to let space to insert belt. ( and left too , to be equal )
cylinder({r:8,h:10,fn:_globalResolution}).translate([0,0,height-10]),
cylinder({r:8,h:10,fn:_globalResolution}).translate([width,0,height-10])
);
}
function InductiveSensorSupport(){
var width = 45;
var height = 8;
var depth = 12;
var extDiam=15.1;
var intDiam=12.1;
var intDiamHeight=5;
return difference(
union(
//base
cube({size:[width,depth,height]}),
// inductive support
cube({size:[8,depth,30]}).translate([width-8,0,-25]),
cube({size:[35,depth+3,5]}).translate([width-8,0,-25])
),
// jhead holes
cylinder({r:extDiam/2+0.1,h:3,fn:_globalResolution}).translate([width/2,depth,0]),
cylinder({r:intDiam/2+0.1,h:intDiamHeight,fn:_globalResolution}).translate([width/2,depth,height-5]),
// head attach holes
cylinder({r:1.6,h:13,fn:_globalResolution}).rotateX(-90).translate([width/2-endxJheadAttachHolesWidth/2,0,height/2]),
cylinder({r:1.6,h:13,fn:_globalResolution}).rotateX(-90).translate([width/2+endxJheadAttachHolesWidth/2,0,height/2]),
// inductive support hole
cylinder({r:9.2,h:height,fn:_globalResolution}).translate([width+15,depth,-25])
);
}
function motorXY(side){
var thickness = 5;
var mesh = difference(
union(
// base
cube({size:[_nemaXYZ/2-5,_nemaXYZ,thickness+2]}),
// wall support
cube({size:[9,_nemaXYZ,20]}),
//top and back fix
cube({size:[_wallThickness+9,_nemaXYZ,thickness]}).translate([-_wallThickness,0,20]),
cube({size:[thickness,_nemaXYZ,20+thickness]}).translate([-_wallThickness-thickness,0,0]),
// rod support - half slotted hole
cylinder({r:_XYrodsDiam/2+3,h:15,fn:_globalResolution}).rotateX(90).translate([20,_nemaXYZ,4]),
cube({size:[20,15,_XYrodsDiam/2+3]}).translate([_nemaXYZ/2+_XYrodsDiam/2+1-25,_nemaXYZ-15,-1])
),
nemaHole(_nemaXYZ).translate([_nemaXYZ/2,_nemaXYZ/2,-1]),
// rod support hole
cylinder({r:_XYrodsDiam/2,h:12,fn:_globalResolution}).rotateX(90).translate([20,_nemaXYZ,4]),
//extra bool for printable
cube({size:[15,10,15]}).rotateZ(30).translate([_nemaXYZ/2,_nemaXYZ-19.5,0]),
// round
roundBoolean2(5,_nemaXYZ,"br").translate([-_wallThickness-thickness,0,thickness+15]),
// holes to fix on the wood side - version simple
// wood screw holes
cylinder({r:2.1,h:20,fn:_globalResolution}).rotateX(-90).rotateZ(90).translate([-_wallThickness,5,5]),
cylinder({r:2.1,h:20,fn:_globalResolution}).rotateX(-90).rotateZ(90).translate([-_wallThickness,_nemaXYZ-5,5]),
// extra nema bool (motor body)
cube({size:[_nemaXYZ,_nemaXYZ,_nemaXYZ]}).translate([0,0,-_nemaXYZ])
);
if(side=="left"){
mesh = union(
mesh,
text3d("L").scale(0.3).translate([0,15,20+thickness])
);
}
if(side=="right"){
mesh = union(
mesh,
// extra long to attach y endstop
text3d("R").scale(0.3).rotateY(180).translate([0,15,20+thickness+0.5])
);
}
return mesh;
}
function bearingsXY(side){
var mesh;
var Y = 20;
var Z = 33;
var bearingsOffsetZ = 11;
var bearingsOffsetX = 30+_wallThickness;
var bearingHoleOffsetX = bearingsOffsetX+13;
var topXOffset =0;
var bottomXOffset= 0;
var X = 51+_wallThickness;
if(side=="left"){
topXOffset = 0;
}
if(side=="right"){
bottomXOffset = 0;
}
mesh = difference(
union(
difference(
//main
union(
cube({size:[X,Y,Z]}),
// extra behind to touch the back plank
cube({size:[5+_wallThickness+5,5,Z]}).translate([0,Y,0])
),
// support bearings
cube({size:[X+10,Y,8]}).translate([bearingsOffsetX-bottomXOffset,0,bearingsOffsetZ]),
cube({size:[X+10,Y,8]}).translate([bearingsOffsetX-topXOffset,0,bearingsOffsetZ+11])
),
//extra for y rod
cylinder({r:_XYrodsDiam/2+3,h:Y,fn:_globalResolution}).rotateX(-90).translate([5+_wallThickness+20,0,1]),
// round bearings supports in middle
cylinder({r:5,h:0.5,fn:_globalResolution}).translate([bearingHoleOffsetX-bottomXOffset,Y/2,bearingsOffsetZ]),
cylinder({r:5,h:0.5,fn:_globalResolution}).translate([bearingHoleOffsetX-bottomXOffset,Y/2,bearingsOffsetZ+7.5]),
cylinder({r:5,h:0.5,fn:_globalResolution}).translate([bearingHoleOffsetX-topXOffset,Y/2,bearingsOffsetZ+11]),
cylinder({r:5,h:0.5,fn:_globalResolution}).translate([bearingHoleOffsetX-topXOffset,Y/2,bearingsOffsetZ+11+7.5])
),
// Yrod
cylinder({r:_XYrodsDiam/2,h:Y,fn:_globalResolution}).rotateX(-90).translate([5+_wallThickness+20,0,1]),
// long bearing hole
cylinder({r:4.1,h:40,fn:_globalResolution}).translate([bearingHoleOffsetX-bottomXOffset,Y/2,0]),
// chamfreins Y
roundBoolean2(3,Z,"tl").rotateX(-90).translate([X-3,0,Z]),
roundBoolean2(3,Z,"bl").rotateX(-90).translate([X-3,Y-3,Z]),
// wood support
cube({size:[_wallThickness,Y+5,17]}).translate([5,0,0]),
// Y rod hole
cylinder({r:_XYrodsDiam/2,h:12,fn:_globalResolution}).rotateX(-90).rotateZ(90).translate([20+_wallThickness,-8,1]),
//round
roundBoolean2(10,Y+5,"br").translate([0,0,Z-10]),
// xtra save material
cylinder({r:_XYrodsDiam,h:Y,fn:_globalResolution}).rotateX(-90).translate([27,0,20]),
// wood screw holes
cylinder({r:2.1,h:20,fn:_globalResolution}).rotateX(-90).rotateZ(90).translate([12,4,5]),
cylinder({r:2.1,h:20,fn:_globalResolution}).rotateX(-90).rotateZ(90).translate([12,Y,5])
);
if(side=="left"){
mesh = union(
mesh,
text3d("L").scale(0.3).translate([20,10,Z])
);
}
if(side=="right"){
mesh = union(
mesh,
text3d("R").scale(0.3).rotateY(180).translate([20,10,Z+0.5])
);
}
if(output==1){
mesh = union(
mesh,
bearing608z().translate([bearingHoleOffsetX-bottomXOffset,Y/2,bearingsOffsetZ]),
bearing608z().translate([bearingHoleOffsetX-topXOffset,Y/2,bearingsOffsetZ+11])
);
}
return mesh;
}
// -------------------------------- extruder
function extruder(part){
var X = 50;
var Z = 9;
var Y = 48;
var bearingoffsetX = 15.5;
var jheadOffsetX = 3.5;
//elastic part
var epoffsetX = 5;
var epoffsetY = 42;
// this is to adjust how elastic will the bearing be.
var elasticpartlength = 5;
return difference(
union(
extruderPart(part,X,Y,Z),
// extra support in case of bowden
extruderSupport(part)
),
nemaHole2().translate([0,2,-Z/2]),
// 608 place
difference(
cylinder({r:12,h:9,fn:_globalResolution}),
cylinder({r:4,h:9,fn:_globalResolution}),
cylinder({r:5,h:1,fn:_globalResolution}),
cylinder({r:5,h:1,fn:_globalResolution}).translate([0,0,8])
).translate([bearingoffsetX,2,0]),
// 608 screw hole to reinforce
cylinder({r:1.6,h:10,fn:_globalResolution}).translate([bearingoffsetX,2,Z/2]),
cylinder({r:1.35,h:10,fn:_globalResolution}).translate([bearingoffsetX,2,-Z/2]),
// jhead or pressfit
extruderOut(jheadOffsetX,Y,Z),
// jhead holes or pressfit holes: 2 parts. up to pass screws, bottom to fix
cylinder({r:1.6,h:10,fn:_globalResolution}).translate([jheadOffsetX-8,Y/2+1,Z/2]),
cylinder({r:1.6,h:10,fn:_globalResolution}).translate([jheadOffsetX+8,Y/2+1,Z/2]),
cylinder({r:1.35,h:10,fn:_globalResolution}).translate([jheadOffsetX-8,Y/2+1,-Z/2]),
cylinder({r:1.35,h:10,fn:_globalResolution}).translate([jheadOffsetX+8,Y/2+1,-Z/2]),
cylinder({r:1.6,h:10,fn:_globalResolution}).translate([jheadOffsetX-8,-Y/2+8,Z/2]),
cylinder({r:1.35,h:10,fn:_globalResolution}).translate([jheadOffsetX-8,-Y/2+8,-Z/2]),
// filament
extruderFilament(jheadOffsetX,Y,Z),
// elastic part with two holes
cube({size:[2,epoffsetY,2*Z+1]}).translate([jheadOffsetX+epoffsetX,-Y/2,-Z/2]),
cube({size:[elasticpartlength,2,2*Z+1]}).translate([jheadOffsetX+epoffsetX,-Y/2+epoffsetY,-Z/2]),
// solidify corner
cylinder({r:1.5,h:2*Z+2,fn:_globalResolution}).translate([elasticpartlength+7,-Y/2+epoffsetY+1,-Z/2]),
// holes to add screw to maintain the iddle
cylinder({r:1.6,h:15,fn:_globalResolution}).rotateY(-90).translate([X/2,-Y/2+10,9]),
cylinder({r:1.6,h:15,fn:_globalResolution}).rotateY(-90).translate([X/2,-Y/2+10,0]),
cylinder({r:1.35,h:15,fn:_globalResolution}).rotateY(-90).translate([X/2-15,-Y/2+10,9]),
cylinder({r:1.35,h:15,fn:_globalResolution}).rotateY(-90).translate([X/2-15,-Y/2+10,0])
)
}
function extruderPart(part,X,Y,Z){
// lower part only
if(part==0){
return cube({size:[X,Y,Z],center:true}).translate([0,5,0])
}
// uppper part only
else if(part==1){
return cube({size:[X,Y,Z],center:true}).translate([0,5,Z+0.05])
}
else {
return union(
//main bottom
cube({size:[X,Y,Z],center:true}).translate([0,5,0]),
// main top
cube({size:[X,Y,Z],center:true}).translate([0,5,Z+0.05])
)
}
}
function extruderSupport(part){
var X = 20;
var Z = 15;
var Y = 9;
if(part!=1){
return difference(
//main
slottedHole(9,80,5).rotateY(-90).translate([-20,-30,0]),
// screws for walls
cylinder({r:2.1,h:10,fn:_globalResolution}).rotateY(-90).translate([-20,-29,0]),
cylinder({r:2.1,h:10,fn:_globalResolution}).rotateY(-90).translate([-20,40,0])
)
}
else{
return cube(1)
}
}
function extruderOut(jheadOffsetX,Y,Z){
var jheadExtDiam = 15.5;
var jheadIntDiam = 12.5;
return union(
cylinder({r:2.7,h:5,fn:_globalResolution}).rotateX(-90).translate([jheadOffsetX,Y/2,Z/2]),
cylinder({r:2.7,h:5,fn:_globalResolution}).rotateX(-90).translate([jheadOffsetX,-Y/2+5,Z/2])
)
}
function extruderFilament(jheadOffsetX,Y,Z){
return union(
cylinder({r:1,h:Y,fn:_globalResolution}).rotateX(-90).translate([jheadOffsetX,-Y/2,Z/2]),
cylinder({r1:3,r2:1,h:5,fn:_globalResolution}).rotateX(-90).translate([jheadOffsetX,10,Z/2])
)
}
function clipGlassBack(){
var glassThickness = 3;
var mesh = difference(
cube({size:[18,18,5+glassThickness]}),
cube({size:[14,14,glassThickness]}).translate([4,4,0]),
cube({size:[10,10,5]}).translate([8,8,glassThickness]),
cylinder({r1:1.6,r2:3,h:2,fn:_globalResolution}).translate([2.5,2.5,6]),
cylinder({r:1.6,h:6,fn:_globalResolution}).translate([2.5,2.5,0])
);
mesh.properties.connect1 = new CSG.Connector([0,0, 0], [1, 0, 0], [0, 0, 1]);
return mesh;
}
function clipGlassFront(){
var glassThickness = 3;
var bedSupportThickness = 10;
var mesh = difference(
cube({size:[20,8,bedSupportThickness+glassThickness+10]})
)
mesh.properties.connect1 = new CSG.Connector([0,0, 0], [1, 0, 0], [0, 0, 1]);
return mesh;
}
function ramps() {
var vw = 2.5, r = 4*vw, height = 5.5, m3 = 1.5, larduino = 102, Larduino = 55, edge = 3, hedge = 2, ledge = 2;
return difference(
union(
cube({size:[larduino+edge/2,Larduino+edge,height]}),
cylinder({r:r,h:height}).translate([(larduino+edge/2)/2,-r,0]),
cube({size:[r*2,r,height]}).translate([((larduino+edge/2)-r*2)/2,-r,0]),
cylinder({r:r,h:height}).translate([(larduino+edge/2)/4,Larduino+edge+r,0]),
cube({size:[r*2,r,height]}).translate([((larduino+edge/2)/4)-r,Larduino+edge,0]),
cylinder({r:r,h:height}).translate([(larduino+edge/2)*0.75,Larduino+edge+r,0]),
cube({size:[r*2,r,height]}).translate([((larduino+edge/2)*0.75)-r,Larduino+edge,0])
),
cube({size:[larduino,Larduino,height-hedge]}).translate([0,edge/2,0]),
cube({size:[larduino-ledge+edge/2,Larduino-ledge ,height]}).translate([-ledge/2,edge/2+ledge/2,0]),
cylinder({r:vw,h:height}).translate([(larduino+edge/2)/2,-r,0]),
cylinder({r:vw,h:height}).translate([(larduino+edge/2)/4,Larduino+edge+r,0]),
cylinder({r:vw,h:height}).translate([(larduino+edge/2)*0.75,Larduino+edge+r,0])
);
}
function spoolholder() {
var vw = 2, thickness = 5, rbase = 40, rspool = 23, hcenter=30, rayon3 = 30;
return difference(
union(
cylinder({r:rbase,h:thickness}), //base
cylinder({r:rspool,h:hcenter}).translate([0,0,thickness]) //Spool
),
cylinder({r:vw,h:100}), //screw
cylinder({r:rspool-4,h:100}).translate([0,0,thickness-2]) //hole
);
}
function alim() {
var lalim=32, Lalim=52, sw=2, edge=15, height=8, thickness=5;
return difference(
union(
cube({size:[Lalim,thickness,height]}),
cube({size:[lalim+thickness,thickness,height]}).rotateZ(90),
cube({size:[edge,thickness,height]}).rotateZ(90).translate([Lalim+thickness,-edge+thickness,0]),
cube({size:[edge,thickness,height]}).translate([-edge,lalim+thickness,0])
),
cylinder({r:sw,h:20}).rotateX(90).translate([-sw-edge/2,Lalim,height/2]),
cylinder({r:sw,h:20}).rotateY(90).translate([Lalim-thickness,sw-edge/2,height/2])
);
}
// ---------- non printed elements ------------
function fakeJhead(){
return union(
cylinder({r:2,h:15,fn:_globalResolution}),
cube({size:[20,15,8],center:true}).translate([0,0,8]),
cylinder({r:12.5,h:30,fn:_globalResolution}).translate([0,0,15]),
cylinder({r:6,h:5,fn:_globalResolution}).translate([0,0,45]),
cylinder({r:7.5,h:5,fn:_globalResolution}).translate([0,0,50])
);
}
function fake_switch(){
return cube([40,8,15]);
}
function _walls(){
return union(
//left
cube({size:[_wallThickness,_globalDepth+_wallThickness,_globalHeight]}).translate([-_globalWidth/2-_wallThickness,-_globalDepth/2,0]).setColor(1,0.5,0.3),
// back
cube({size:[_globalWidth,_wallThickness,_globalHeight]}).translate([-_globalWidth/2,_globalDepth/2,0]).setColor(0.9,0.4,0.3),
// right
cube({size:[_wallThickness,_globalDepth+_wallThickness,_globalHeight]}).translate([_globalWidth/2,-_globalDepth/2,0]).setColor(0.8,0.3,0.3),
// bottom
cube({size:[_globalWidth+_wallThickness*2,_globalDepth+_wallThickness,_wallThickness]}).translate([-_globalWidth/2-_wallThickness,-_globalDepth/2,-_wallThickness]).setColor(0.4,0.4,0.4).setColor(0.5,0.2,0.1)
);
}
function wallSizeText(){
return union(
//left
text3d("left: "+(_globalDepth+_wallThickness)+" x "+_globalHeight).scale(0.5).rotateX(90).rotateZ(-90).translate([-_globalWidth/2-_wallThickness-3,0,_globalHeight/2]).setColor(0.2,0.3,0.2),
// back
text3d("back: "+ _globalWidth +" x "+_globalHeight).rotateX(90).scale(0.5).rotateZ(180).translate([0,_globalDepth/2+_wallThickness+3,_globalHeight/2]).setColor(0.2,0.3,0.2),
// right
text3d("right: "+(_globalDepth+_wallThickness)+" x "+_globalHeight).scale(0.5).rotateX(90).rotateZ(90).translate([_globalWidth/2+_wallThickness+3,0,_globalHeight/2]).setColor(0.2,0.3,0.2),
// bottom
text3d("bottom: "+(_globalWidth+(_wallThickness*2))+" x "+(_globalDepth+_wallThickness)).scale(0.5).translate([0,-_globalDepth/2,_wallThickness]).setColor(0.2,0.3,0.2)
)
}
function _rodsXY() {
var offsetFromTopY = 16;
var offsetFromTopX = -5;
return union(
// rod X top
cylinder({r:_XYrodsDiam/2,h:XrodLength,fn:_globalResolution}).rotateY(90).translate([-_globalWidth/2+50,XaxisOffset+10,_globalHeight-offsetFromTopX+14]).setColor(0.3,0.3,0.3),
// rod x top bearing
cylinder({r:_XYlmDiam/2,h:50,fn:_globalResolution}).rotateY(90).translate([headoffset,XaxisOffset+10,_globalHeight-offsetFromTopX+14]).setColor(0.6,0.6,0.6),
// rod x bottom
cylinder({r:_XYrodsDiam/2,h:XrodLength,fn:_globalResolution}).rotateY(90).translate([-_globalWidth/2+50,XaxisOffset+10,_globalHeight-offsetFromTopX-26]).setColor(0.3,0.3,0.3),
// rod x bottom bearing
cylinder({r:_XYlmDiam/2,h:50,fn:_globalResolution}).rotateY(90).translate([headoffset,XaxisOffset+10,_globalHeight-offsetFromTopX-26]).setColor(0.6,0.6,0.6),
// rod y left
cylinder({r:_XYrodsDiam/2,h:YrodLength,fn:_globalResolution}).rotateX(90).translate([-_globalWidth/2+20,_globalDepth/2-10,_globalHeight-offsetFromTopY]).setColor(0.3,0.3,0.3),
// rod y left bearing
cylinder({r:_XYlmDiam/2,h:50,fn:_globalResolution}).rotateX(90).translate([-_globalWidth/2+20,90,_globalHeight-offsetFromTopY]).setColor(0.6,0.6,0.6),
// rod y right
cylinder({r:_XYrodsDiam/2,h:YrodLength,fn:_globalResolution}).rotateX(90).translate([_globalWidth/2-20,_globalDepth/2-10,_globalHeight-offsetFromTopY]).setColor(0.3,0.3,0.3)
);
}
function _rodsZ() {
//rod Z left
return union(
cylinder({r:_ZrodsDiam/2,h:ZrodLength,fn:_globalResolution}).translate([-_ZrodsWidth/2,_globalDepth/2-_wallThickness-2,0 ]).setColor(0.3,0.3,0.3),
//rod Z left bearing
cylinder({r:_ZlmDiam/2,h:50,fn:_globalResolution}).translate([-_ZrodsWidth/2,_globalDepth/2-_wallThickness-2,_globalHeight/2-40]).setColor(0.5,0.5,0.5),
// rod z right
cylinder({r:_ZrodsDiam/2,h:ZrodLength,fn:_globalResolution}).translate([_ZrodsWidth/2,_globalDepth/2-_wallThickness-2,0 ]).setColor(0.3,0.3,0.3),
// rod z right bearing
cylinder({r:_ZlmDiam/2,h:50,fn:_globalResolution}).translate([_ZrodsWidth/2,_globalDepth/2-_wallThickness-2,_globalHeight/2-40]).setColor(0.5,0.5,0.5)
// support bed *4
//cylinder({r:_ZrodsDiam/2,h:_printableDepth}).rotateX(90).translate([-_ZrodsWidth/2,_globalDepth/2-25,_globalHeight/2]).setColor(0.5,0.5,0.5),
//cylinder({r:_ZrodsDiam/2,h:_printableDepth}).rotateX(90).translate([_ZrodsWidth/2,_globalDepth/2-25,_globalHeight/2]).setColor(0.5,0.5,0.5),
//cylinder({r:_ZrodsDiam/2,h:_printableDepth}).rotateX(83).rotateZ(5).translate([-_ZrodsWidth/2,_globalDepth/2-25,_globalHeight/2-30]).setColor(0.5,0.5,0.5),
//cylinder({r:_ZrodsDiam/2,h:_printableDepth}).rotateX(83).rotateZ(-5).translate([_ZrodsWidth/2,_globalDepth/2-25,_globalHeight/2-30]).setColor(0.5,0.5,0.5)
);
}
function _rods() {
return union(_rodsXY(),_rodsZ());
}
function rodsLengthText(){
var offsetFromTopY = 14;
var offsetFromTopX = -5;
return union(
//x
text3d("rod X: "+XrodLength.toString()).scale(0.5).translate([-_globalWidth/2+55,XaxisOffset-10,_globalHeight-offsetFromTopX+5]).setColor(0.3,0.3,0.2),
// y
text3d("rod Y: "+YrodLength.toString()).scale(0.5).rotateZ(90).translate([-_globalWidth/2+20,_globalDepth/2-100,_globalHeight-offsetFromTopY+5]).setColor(0.3,0.3,0.2),
// z
text3d("rod Z: "+ZrodLength.toString()).scale(0.5).rotateX(90).translate([-_ZrodsWidth/2+10,_globalDepth/2-_wallThickness-10,_globalHeight/2-40]).setColor(0.3,0.3,0.2),
// belt
text3d("belt length xy: " + ((XrodLength + beltXAddon)*4 + (YrodLength + beltYAddon)*4)).scale(0.5).translate([-_globalWidth/2+55,XaxisOffset-50,_globalHeight-offsetFromTopX+5]).setColor(0.9,0.3,0.2)
);
}
function _nema(){
return union(
cube({size:_nemaXYZ}).setColor(0.3,0.3,1.0),
cylinder({r:11,h:2,fn:_globalResolution}).translate([_nemaXYZ/2,_nemaXYZ/2,_nemaXYZ]),
cylinder({r:2.5,h:25,fn:_globalResolution}).translate([_nemaXYZ/2,_nemaXYZ/2,_nemaXYZ+2])
);
}
function _bed(){
var mesh = difference(
cube({size:[_printableWidth/2,_printableDepth+30,3]}).setColor(0.8,0.8,0.4,0.5)
);
mesh.properties.clipbackleft = new CSG.Connector([0, _printableDepth, 0], [1, 0, 0], [0, 0, 1]);
mesh.properties.clipbackright = new CSG.Connector([_printableWidth, _printableDepth, 0], [1, 0, 0], [0, 0, 1]);
mesh.properties.clipfrontleft = new CSG.Connector([0,0, 0], [1, 0, 0], [0, 0, 1]);
mesh.properties.clipfrontright = new CSG.Connector([_printableWidth,0, 0], [1, 0, 0], [0, 0, 1]);
return mesh;
}
// ----------------------- lib
// generate screws
function Mx(diam,length){
return union(
cylinder({r:diam/2+1,h:3,fn:_globalResolution}),
cylinder({r:diam/2,h:length,fn:_globalResolution}).translate([0,0,3])
)
}
function text3d(what){
var l = vector_text(0,0,what);
var o = [];
l.forEach(function(pl) {
o.push(rectangular_extrude(pl, {w: 5, h: 2}));
});
return union(o);
}
function tube(dint,dext,length){
return difference(
cylinder({r:dext/2,h:length,fn:_globalResolution}),
cylinder({r:dint/2,h:length,fn:_globalResolution})
);
}
function _axis(){
return union(
cube({size:[10,1,1]}).setColor(1,0,0),
cube({size:[1,10,1]}).setColor(0,1,0),
cube({size:[1,1,10]}).setColor(0,0,1)
);
}
function nemaHole(){
var offset = (_nemaXYZ==35)?13:15.5;
return union(
cylinder({r:11.3,h:40,fn:_globalResolution}),
cylinder({r:1.6,h:40,fn:_globalResolution}).translate([-offset,-offset,0]),
cylinder({r:1.6,h:40,fn:_globalResolution}).translate([offset,-offset,0]),
cylinder({r:1.6,h:40,fn:_globalResolution}).translate([-offset,offset,0]),
cylinder({r:1.6,h:40,fn:_globalResolution}).translate([offset,offset,0])
);
}
// only 2 screw holes
function nemaHole2(){
var offset = (_nemaXYZ==35)?13:15.5;
return union(
cylinder({r:11.3,h:40,fn:_globalResolution}),
cylinder({r:1.6,h:40,fn:_globalResolution}).translate([-offset,-offset,0]),
//cylinder({r:1.6,h:40,fn:_globalResolution}).translate([offset,-offset,0]),
cylinder({r:1.6,h:40,fn:_globalResolution}).translate([-offset,offset,0])
//cylinder({r:1.6,h:40,fn:_globalResolution}).translate([offset,offset,0])
);
}
function slottedHole(diam,length,height){
return union(
cylinder({r:diam/2,h:height,fn:_globalResolution}),
cube([diam,length-diam,height]).translate([-diam/2,0,0]),
cylinder({r:diam/2,h:height,fn:_globalResolution}).translate([0,length-diam,0])
);
}
function bearingSupport(baseHeight){
return difference(
union(
cylinder({r:5,h:baseHeight,fn:_globalResolution}),
cylinder({r:4,h:6,fn:_globalResolution}).translate([0,0,baseHeight])
),
cylinder({r:1.4,h:baseHeight+7,fn:_globalResolution})
);
}
function bearingSupport2(baseHeight){
return difference(
union(
cylinder({r:5,h:baseHeight,fn:_globalResolution}),
cylinder({r:4,h:16,fn:_globalResolution}).translate([0,0,baseHeight])
),
cylinder({r:1.4,h:baseHeight+16,fn:_globalResolution})
);
}
function bearingTop(hole){
return difference(
union(
cylinder({r:5,h:1,fn:_globalResolution}),
cylinder({r:13,h:1.5,fn:_globalResolution}).translate([0,0,1])
),
cylinder({r:hole/2+0.1,h:6,fn:_globalResolution})
);
}
function bearingMiddle(hole){
return difference(
union(
cylinder({r:5,h:1,fn:_globalResolution}),
cylinder({r:13,h:1,fn:_globalResolution}).translate([0,0,1])
),
cylinder({r:hole/2+0.1,h:6,fn:_globalResolution})
);
}
function bearing608z(){
return difference(
cylinder({r:11,h:7,fn:_globalResolution}).setColor(0.4,0.4,0.4),
cylinder({r:4,h:7,fn:_globalResolution})
);
}
function Gt2Holder(boolOffset,height){
var h = 10;
var beltThickness = 0.9;
if(height){h=height;}
return difference(
linear_extrude({height:10},polygon({points:[[0,0],[16,0],[12,h],[4,h]]})).translate([-12,0,-h]).rotateY(-90).rotateX(90),
union(
cube([10,1,h-3]).translate([h-10,boolOffset,3]),
cube([1,1,h-3]).translate([h-9,boolOffset+beltThickness,3]),
cube([1,1,h-3]).translate([h-7,boolOffset+beltThickness,3]),
cube([1,1,h-3]).translate([h-5,boolOffset+beltThickness,3]),
cube([1,1,h-3]).translate([h-3,boolOffset+beltThickness,3]),
cube([1,1,h-3]).translate([h-1,boolOffset+beltThickness,3])
)
)
}
function Gt2HolderSuspendedRight(boolOffset,height){
var h = 10;
var beltThickness = 0.9;
if(height){h=height;}
return difference(
linear_extrude({height:10},polygon({points:[[0,0],[12,-h],[16,0],[12,h],[4,h]]})).translate([-12,0,-h]).rotateY(-90).rotateX(90),
union(
cube([10,1,h-3]).translate([h-10,boolOffset,3]),
cube([1,1,h-3]).translate([h-9,boolOffset+beltThickness,3]),
cube([1,1,h-3]).translate([h-7,boolOffset+beltThickness,3]),
cube([1,1,h-3]).translate([h-5,boolOffset+beltThickness,3]),
cube([1,1,h-3]).translate([h-3,boolOffset+beltThickness,3]),
cube([1,1,h-3]).translate([h-1,boolOffset+beltThickness,3])
)
)
}
function Gt2HolderSuspendedLeft(boolOffset,height){
var h = 10;
var beltThickness = 0.9;
if(height){h=height;}
return difference(
linear_extrude({height:10},polygon({points:[[0,0],[4,-h],[16,0],[12,h],[4,h]]})).translate([-12,0,-h]).rotateY(-90).rotateX(90),
union(
cube([10,1,h-3]).translate([h-10,boolOffset,3]),
cube([1,1,h-3]).translate([h-9,boolOffset+beltThickness,3]),
cube([1,1,h-3]).translate([h-7,boolOffset+beltThickness,3]),
cube([1,1,h-3]).translate([h-5,boolOffset+beltThickness,3]),
cube([1,1,h-3]).translate([h-3,boolOffset+beltThickness,3]),
cube([1,1,h-3]).translate([h-1,boolOffset+beltThickness,3])
)
)
}
function Gt2HolderBool(boolOffset,height){
var h = 10;
var beltThickness = 0.9;
if(height){h=height;}
return union(
cube([10,1,h-3]).translate([h-10,boolOffset,3]),
cube([1,1,h-3]).translate([h-9,boolOffset+beltThickness,3]),
cube([1,1,h-3]).translate([h-7,boolOffset+beltThickness,3]),
cube([1,1,h-3]).translate([h-5,boolOffset+beltThickness,3]),
cube([1,1,h-3]).translate([h-3,boolOffset+beltThickness,3]),
cube([1,1,h-3]).translate([h-1,boolOffset+beltThickness,3])
)
}
function Gt2Holder3(boolOffset,height){
var h = 10;
if(height){h=height;}
return difference(
linear_extrude({height:10},polygon({points:[[0,0],[16,0],[12,h],[4,h]]})).translate([-12,0,-h]).rotateY(-90).rotateX(90),
union(
cube([10,1,h-3]).translate([h-10,boolOffset,6]),
cube([1,1,h-3]).translate([h-9,boolOffset+1,6]),
cube([1,1,h-3]).translate([h-7,boolOffset+1,6]),
cube([1,1,h-3]).translate([h-5,boolOffset+1,6]),
cube([1,1,h-3]).translate([h-3,boolOffset+1,6]),
cube([1,1,h-3]).translate([h-1,boolOffset+1,6])
)
)
}
function Gt2Holder2(){
var beltThickness = 0.9;
return difference(
linear_extrude({height:23},polygon({points:[[0,0],[16,0],[12,10],[4,10]]})).translate([-12,0,-10]).rotateY(-90).rotateX(90),
union(
cube([23,1,7]).translate([-13,3,3]),
cube([1,1,7]).translate([-11,3+beltThickness,3]),
cube([1,1,7]).translate([-9,3+beltThickness,3]),
cube([1,1,7]).translate([-7,3+beltThickness,3]),
cube([1,1,7]).translate([-5,3+beltThickness,3]),
cube([1,1,7]).translate([-3,3+beltThickness,3]),
cube([1,1,7]).translate([-1,3+beltThickness,3]),
cube([1,1,7]).translate([1,3+beltThickness,3]),
cube([1,1,7]).translate([3,3+beltThickness,3]),
cube([1,1,7]).translate([5,3+beltThickness,3]),
cube([1,1,7]).translate([7,3+beltThickness,3]),
cube([1,1,7]).translate([9,3+beltThickness,3]),
cube([1,1,7]).translate([11,3+beltThickness,3])
)
)
}
function endstop_meca(){
return difference(
cube([40,15,7]),
cylinder({r:1.5,h:8,fn:_globalResolution}).translate([2.5,2.5,0]),
cylinder({r:1.5,h:8,fn:_globalResolution}).translate([2.5+14,2.5,0]),
cylinder({r:1.5,h:8,fn:_globalResolution}).translate([40-2.5,2.5,0])
);
}
function roundBoolean(diam,w,d,h,edge){
var bool;
if(edge=="bl"){bool = cylinder({r:diam/2,h:d,fn:_globalResolution}).rotateX(-90).translate([0,0,0]);}
if(edge=="tl"){bool = cylinder({r:diam/2,h:d,fn:_globalResolution}).rotateX(-90).translate([0,0,h]);}
if(edge=="br"){bool = cylinder({r:diam/2,h:d,fn:_globalResolution}).rotateX(-90).translate([w,0,0]);}
if(edge=="tr"){bool = cylinder({r:diam/2,h:d,fn:_globalResolution}).rotateX(-90).translate([w,0,h]);}
return difference(
cube([w,d,h]),
bool
);
}
function roundBoolean2(diam,length,edge){
var bool;
if(edge=="bl"){bool = cylinder({r:diam,h:length,fn:_globalResolution}).rotateX(-90).translate([0,0,0]);}
if(edge=="tl"){bool = cylinder({r:diam,h:length,fn:_globalResolution}).rotateX(-90).translate([0,0,diam]);}
if(edge=="br"){bool = cylinder({r:diam,h:length,fn:_globalResolution}).rotateX(-90).translate([diam,0,0]);}
if(edge=="tr"){bool = cylinder({r:diam,h:length,fn:_globalResolution}).rotateX(-90).translate([diam,0,diam]);}
return difference(
cube([diam,length,diam]),
bool
);
}
// align parts so they are on z=0 and no touching
function makeplate(parts){
var deltaX = 5;
var deltaY = 5;
var oldbox;
var i;
var currentX = -100;
var currentY = -100;
var nextY = 0;
var maxX = 100;
var maxY = 100;
var currentPlate = 0;
for(i =0;i < parts.length;i++){
var box = parts[i].getBounds();
var nextX = currentX + (box[1].x-box[0].x)+deltaX;
if(nextX > maxX){
currentX = -100;
currentY = currentY + nextY + deltaY;
nextY = 0;
}
parts[i] = parts[i].translate([currentX-box[0].x+deltaX,currentY-box[0].y+deltaY,-box[0].z]);
currentX = currentX + (box[1].x-box[0].x)+deltaX ;
nextY = Math.max(nextY,(box[1].y-box[0].y));
}
return parts;
}
// ----------------------- start here
function main(params){
// -------- sandbox -------
//return _walls();
//var infos = document.getElementById("dimensionsInfos");
//infos.innerHTML = "hello there";
// assign globals from interface parameters
_printableWidth=params._printableWidth;
_printableHeight=params._printableHeight;
_printableDepth=params._printableDepth;
_wallThickness=params._wallThickness;
_XYrodsDiam = params._XYrodsDiam;
_ZrodsDiam = params._ZrodsDiam;
_globalResolution = params._globalResolution;
_nemaXYZ=parseInt(params._nemaXYZ);
output=parseInt(params._output);
// update calculated values
if(_XYrodsDiam==6){ _XYlmDiam = 12.2;_XYlmLength = 19.1;}
if(_XYrodsDiam==8){ _XYlmDiam = 15.2;_XYlmLength =24.1;}
if(_ZrodsDiam==6){ _ZlmDiam = 12.2;}
if(_ZrodsDiam==8){ _ZlmDiam = 15.2;}
if(_ZrodsDiam==10){ _ZlmDiam = 19.2;}
if(_ZrodsDiam==12){ _ZlmDiam = 21.2;}
_globalDepth = _printableDepth + 110; // = motor support depth + bearings depth + head depth /2
_globalWidth = _printableWidth + 165; // = motor uspport width + bearings width + head width /2
_globalHeight = _printableHeight + 140; // bottom = 40mm head = 40 mm + extra loose.
XrodLength = _printableWidth + 65; // 40: slideY width , 3: offset slideY from wall.
YrodLength = _printableDepth + 65; // 5: rod support inside parts.
ZrodLength = _printableHeight + 110;
echo("wood depth:"+_globalDepth + " width:"+_globalWidth+" height:"+_globalHeight);
echo("X rod length:"+XrodLength + " Y rod length:"+YrodLength+" Zrodlength:"+ZrodLength);
// calculate some usefull vars
var ztopbottomX = (_ZrodsWidth+_ZrodsDiam+(_rodsSupportThickness*2))/2;
var zslideX = (_ZrodsWidth+_ZlmDiam+(_rodsSupportThickness*2))/2;
var res=null;
switch(output){
case 0:
// connections
/*var bed = _bed().translate([-_printableWidth/2,-_printableDepth/2+35,_globalHeight/2+10]);
var clipGlassBackleft = clipGlassBack();
var clipGlassBackright = clipGlassBack();
var clipGlassFrontLeft = clipGlassFront();
var clipGlassFrontRight = clipGlassFront();
clipGlassBackleft = clipGlassBackleft.connectTo(clipGlassBackleft.properties.connect1,bed.properties.clipbackleft,false,0);
clipGlassBackright = clipGlassBackright.connectTo(clipGlassBackright.properties.connect1,bed.properties.clipbackright,true,0);
clipGlassFrontLeft = clipGlassFrontLeft.connectTo(clipGlassFrontLeft.properties.connect1,bed.properties.clipfrontleft,false,0);
clipGlassFrontRight = clipGlassFrontRight.connectTo(clipGlassFrontRight.properties.connect1,bed.properties.clipfrontright,true,0);
*/
res = [ _nema().translate([-_globalWidth/2,-_globalDepth/2,_globalHeight-_nemaXYZ-20]),
motorXY().translate([-_globalWidth/2,-_globalDepth/2,_globalHeight-20]),
slideY().translate([-_globalWidth/2+6,XaxisOffset,_globalHeight-22]),
_rods(),
bearingsXY().rotateZ(-90).translate([-_globalWidth/2+_wallThickness+18,_globalDepth/2+_wallThickness+5,_globalHeight-17])];
break;
case 1:
res = [
_walls(),
_rods(),
//nema left
_nema().translate([-_globalWidth/2,-_globalDepth/2,_globalHeight-_nemaXYZ-20]),
// nema right
_nema().translate([_globalWidth/2-_nemaXYZ,-_globalDepth/2,_globalHeight-_nemaXYZ-20]),
motorXY("left").translate([-_globalWidth/2,-_globalDepth/2,_globalHeight-20]).setColor(0.3,0.9,0.3),
motorXY("right").mirroredX().translate([_globalWidth/2,-_globalDepth/2,_globalHeight-20]).setColor(0.3,0.9,0.3),
bearingsXY("left").translate([-_globalWidth/2-_wallThickness-5,_globalDepth/2-26,_globalHeight-17]).setColor(0.3,0.9,0.3),
bearingsXY("right").mirroredX().translate([_globalWidth/2+_wallThickness+5,_globalDepth/2-26,_globalHeight-17]).setColor(0.3,0.9,0.3),
slideY("left").translate([-_globalWidth/2+6,XaxisOffset,_globalHeight-21]).setColor(0.3,0.9,0.3),
slideY("right").mirroredX().translate([_globalWidth/2-6,XaxisOffset,_globalHeight-21]).setColor(0.3,0.9,0.3),
//endstop x
endstop_meca().rotateZ(-90).translate([headoffset,XaxisOffset+35,_globalHeight-39]),
//endstop y
endstop_meca().rotateY(-90).rotateZ(180).translate([_globalWidth/2-_wallThickness+2,-_globalDepth/2+_nemaXYZ+30,_globalHeight-52]).setColor(0.2,0.2,0.2),
head().translate([headoffset,XaxisOffset,_globalHeight-36]).setColor(0.3,0.9,0.3),
ramps().rotateX(90).rotateZ(90).rotateY(180).translate([_globalWidth/2,-_globalDepth/2,100]),
spoolholder(),
alim().rotateY(90).rotateZ(90).translate([-_globalWidth/2+42,0,57])
];
// Z stage
res.push(_nema().rotateX(-90).translate([-_nemaXYZ/2,_globalDepth/2-_wallThickness-_nemaXYZ-25,_nemaXYZ]));
res.push(zTop().translate([0,_globalDepth/2-12,_globalHeight-35]).setColor(0.3,0.9,0.3)); // 12 = ztop depth/2
res.push(zBottom().translate([0,_globalDepth/2-11,5]).setColor(0.3,0.9,0.3)); //11= zbottom depth/2
res.push(slideZ2().translate([-_ZrodsWidth/2,_globalDepth/2-_wallThickness-2,_globalHeight/2-40]).setColor(0.3,0.9,0.3));
res.push(_bed().translate([-_printableWidth/4,-_printableDepth/2,_globalHeight/2+10]));
res.push(HeadSupportJhead().rotateZ(180).translate([headoffset+44,XaxisOffset,_globalHeight-14]).setColor(0.3,0.9,0.3));
res.push(fakeJhead().translate([headoffset+23,XaxisOffset-15,_globalHeight-32]).setColor(0.2,0.2,0.2));
// fake inductive sensor
res.push(cylinder({r:9,h:70,fn:_globalResolution}).translate([headoffset+62,XaxisOffset-12,_globalHeight-40]).setColor(0.2,0.2,0.2));
res.push(InductiveSensorSupport().translate([headoffset+1.5,XaxisOffset-30,_globalHeight+13]).setColor(0.3,0.9,0.3));
// nema extruder
res.push(_nema().rotateX(90).rotateZ(180).translate([_globalWidth/2,-_globalDepth/2,_globalHeight-_nemaXYZ-65]));
res.push(extruder().rotateX(90).rotateZ(180).translate([_globalWidth/2-25,-_globalDepth/2+50,_globalHeight-90]));
break;
case 2:
res = [
motorXY("left").rotateX(-90),
motorXY("right").mirroredX().rotateX(-90),
bearingsXY("left").rotateX(90),
bearingsXY("right").mirroredX().rotateX(90),
slideY("left").rotateX(-90),
slideY("right").mirroredX().rotateX(-90),
head(),
zTop(),
zBottom(),
slideZ2().rotateX(180),
ramps().rotateX(180),
spoolholder(),
alim()
];
res.push(InductiveSensorSupport().rotateX(90));
res.push(HeadSupportJhead().rotateX(90));
// nema extruder
res.push(extruder(0));
res.push(extruder(1).rotateX(180));
res = makeplate(res);
break;
case 3:
res = [
motorXY("left").translate([-_globalWidth/2,-_globalDepth/2,_globalHeight-20]).setColor(0.3,0.9,0.3),
motorXY("right").mirroredX().translate([_globalWidth/2,-_globalDepth/2,_globalHeight-20]).setColor(0.3,0.9,0.3),
bearingsXY("left").translate([-_globalWidth/2-_wallThickness-5,_globalDepth/2-26,_globalHeight-17]).setColor(0.3,0.9,0.3),
bearingsXY("right").mirroredX().translate([_globalWidth/2+_wallThickness+5,_globalDepth/2-26,_globalHeight-17]).setColor(0.3,0.9,0.3),
slideY("left").translate([-_globalWidth/2+6,XaxisOffset,_globalHeight-21]).setColor(0.3,0.9,0.3),
slideY("right").mirroredX().translate([_globalWidth/2-6,XaxisOffset,_globalHeight-21]).setColor(0.3,0.9,0.3),
head().translate([headoffset,XaxisOffset,_globalHeight-36]).setColor(0.3,0.9,0.3)
];
// Z stage
res.push(zTop().translate([0,_globalDepth/2-12,_globalHeight-35]).setColor(0.3,0.9,0.3)); // 12 = ztop depth/2
res.push(zBottom().translate([0,_globalDepth/2-11,_wallThickness]).setColor(0.3,0.9,0.3)); //11= zbottom depth/2
res.push(slideZ2().translate([-_ZrodsWidth/2,_globalDepth/2-_wallThickness-2,_globalHeight/2-40]).setColor(0.3,0.9,0.3));
res.push(HeadSupportJhead().rotateZ(180).translate([headoffset+44,XaxisOffset,_globalHeight-14]).setColor(0.3,0.9,0.3));
//res.push(cylinder({r:9,h:70,fn:_globalResolution}).translate([headoffset+57,XaxisOffset-15,_globalHeight-40]).setColor(0.2,0.2,0.2));
res.push(InductiveSensorSupport().translate([headoffset+2,XaxisOffset-30,_globalHeight+13]).setColor(0.3,0.9,0.3));
res.push(extruder().rotateX(90).rotateZ(180).translate([_globalWidth/2-25,-_globalDepth/2+50,_globalHeight-90]));
break;
case 4:
res = [
wallSizeText(),
_walls(),
rodsLengthText(),
_rods()
];
break;
case 5:
res = [motorXY("left"), motorXY("right").mirroredX().translate([-40,0,0])];
break;
case 6:
res = [bearingsXY("left"),bearingsXY("right").mirroredX().translate([-40,0,0]) ];
break;
case 7:
res = [slideY("left").setColor(0.3,0.9,0.3), slideY("right").mirroredX().translate([-10,0,0])];
break;
case 8:
res = [zTop(), zBottom().translate([0,0,50])];
break;
case 9:
res = zBottom();
break;
case 10:
res = [
slideZ2()
];
break;
case 11:
res = [head(),HeadSupportJhead().rotateZ(180).translate([45,-1,22]),InductiveSensorSupport().translate([0,-50,0])];
break;
case 12:
res = [ extruder(0),extruder(1).rotateX(180).translate([60,0,0])
];
break;
default:
break;
}
return res;
}
Anonymous
almost 9 years
If you have error like this
return this.color.join("/");
TypeError: undefined is not a function
you can find in the source (smartcore-v1.2.jscad) the string
.setColor("grey")
and change it, for example, to
.setColor(0.8,0.8,0.8)
OpenJSCAD currently doesn't support setColor by name:
https://github.com/Spiritdude/OpenJSCAD.org/wiki/User-Guide#color
Vincent Y
almost 9 years
Same error as bellow, can't open the files in jscad.
TheHozza
almost 9 years
Ditto same error!
nkdurrett
almost 9 years
I got the same issue alex
Alex Post
almost 9 years
It does not work Smartcore V1.2, http://openjscad.org/ says "TypeError: this.color.join is not a function"
pedroamz
about 9 years
<p>Muito obrigado. Thank you. </p>
MonZon
about 9 years
<p>Hi! Thanks for the great design! I've already printed most of the parts for it and finished the box.</p><p>I've found most of the glitches mentioned here, but one - induction sensor mount. It appears to me that it doesn't have back part (half of the ring). Where do I find the other part of it? Also I couldn't find a fan duct in the JSCAD.</p><p>I have to check everything before I take apart my other printer to take parts from it.</p>
MonZon
about 9 years
<p>Hi smartfriendz!</p><p>I've printed almost all the parts (generated from JSCAD for 8mm rods) and noticed some bugs already mentioned here. On the other hand, I think, there is something wrong with the inductive sensor mount - it is missing a part holding it from behind. I mean the mounting ring isn't full, just half of it is present. How can I generate this part?</p><p>Also, I didn't find a fan shroud stl for cooling the printed part.</p><p>I need to be sure that everything is safe and sound before migrating hardware and electronics from my Prusa i2 to new printer.</p>
Richard_PV
about 9 years
Could you please tell me if the picture above is a version 1.2 or 1.2.4?
I couldn't find info about the 1.2.4 here
<p>Best regards</p>
thetazzbot
about 9 years
<p>Actually, now that i look at it more carefully, I can see that the rod that goes fore and aft is not intended to be structural, however the movement of the bearings can cause the rod to slip. Should it be set in place by a set screw?</p>
thetazzbot
about 9 years
<p>I love this design! I am planning on using it to teach teenagers about building and 3d printers in general.</p><p>I would like to make a recommendation. The plastic parts at the rod ends should have the rod end completely enclosed. This allows us to use the rod as a strong mechanical component which fights the tension of the belt. otherwise, the rod will try to slip through the plastic ends into the motor pulley area. I'm looking at the Openjscad version 1.2.3.</p><p>Also, I get "WARNING: Ignoring unknown function 'polygon'." with Openscad 2015-03</p>
Kevin Harbour
about 9 years
<p>Are there any diagrams for the belt placements?</p>
FBolzoni
about 9 years
<p>@ams7834: generate the "printer parts plate" and there is almost all the piece into it.</p>
ams7834
about 9 years
<p>in version 1.2 may 10 2015 i cant find the right side motor xy when i do the change it just gives the left side. how do i get the right side of motor xy</p>
dkulinski
about 9 years
<p>I am currently printing parts for my Smartcore. I just printed the head block v1.2. The top has two areas for bearings, when setting X rod size to 8mm, the length of these areas do no fit the standard LM8UU bearings I have. Is this a known issue? Any way to work around besides filing out the ridges? Thanks for the great design!</p>
3DFreezeMe
about 9 years
<p>@smartfriendz</p><p>I love the project and I am currently in preparation of building one myself.</p><p>I believe I found a couple of bugs in the new v1.2 JCAD file when creating a custom version:</p><p>1. When using a 'Box wood thickness' greater than 15, the '// xtra save material' option for the 'bearingsXY' part will generate the hole so, that it is breaking the part.</p><p>--> workaround is to comment line 582 in the JSCAD file like this:</p><p><b><i><small>// xtra save material //cylinder({r:_XYrodsDiam,h:Y,fn:_globalResolution}).rotateX(-90).translate([27,0,20]),</small></i></b></p><p>You will now lose the hole of course, but the print will be much stronger.</p><p>2. When exporting the 'parts only' stl file, the 'motorXY' parts are not included.</p><p>--> this can be fixed by adding the following lines (lines 1281 and 1282 from case 1 = 'all printer assembly' view) beneath line 1347:</p><p><i><small><b>motorXY().translate([-_globalWidth/2,-_globalDepth/2,_globalHeight-20]).setColor(0.3,0.9,0.3),</b></small></i></p><p><i><small><b>motorXY().mirroredX().translate([_globalWidth/2,-_globalDepth/2,_globalHeight-20]).setColor(0.3,0.9,0.3),</b></small></i></p><p>Both lines were missing in v1.2 so the 'motorXY' parts were not rendered in the 'parts only' view (= case 3).</p><p>Keep up the good work!</p>
FBolzoni
about 9 years
<p>WOW. I just realize that V 1.2 has different "rear" bearings support...</p><p>This will be the last question (almost for a week ;) !!!): I have print:</p><p>- Z axis complete (V1.01)<br></p><p>- Bearings xy (V1.01)</p>- Slide Y (V1.01)<br>Tomorrow i'm going to print:<br>- motor (V1.01)<br>- head (V1.2)<br>- extruder (A modified version by BrunoBellamy)<br>Mixing HEAD v1.2 and motor, bearing, slide y of v1.01 is correct ?<br><br>Thanks !
smartfriendz
about 9 years
<p>your settings are right.. it's a design problem. If you watch good, you will see that the bearings support go wider when we insert bearings, then it's perfectly normal it bends the middle part ( unfortunately for the design..it's a fault , or a bug ) . </p><p>I intend to update to a flat U for the right part . Then we will have an iso system. The left part constraints to 1 degre ( Z slide only ) and the right part would constraint to Z rotation only. This way, we don't have this extra constraint of the distance between the two rods. </p><p>I just did this for hte head part and the two X rods. The top is now free to move verticaly, that limits problems from extra constraint ( distance between two rods that must be the same in three separated parts ). </p><p>Well..globaly, i need to rework this part . </p><p>There's an update coming : L and R written on parts to easy recognize left and right, new inductive support , a little more solid and a few adjustments .. nothing new for Z. </p>
FBolzoni
about 9 years
<p>Hi @smartfriendz, infact i havn't problem to print but with printed object.</p><p>After i print it, i try to insert the bearings (10 mm into z carriage) into Z slide version 1.0.1, and the support start carving. Maybe is my print settings wrong (about 1 mm shell with 45% fill), or it's ok, and i just need to fix the wood table on z slide ...</p><p>I will try the french formum, if the talk english as i don't know french.</p>
smartfriendz
about 9 years
<p>@<a rel="nofollow" target="_blank" href="https://www.youmagine.com/users/fbolzoni">FBolzoni</a> : We didn't had so much problems printing those parts ? all the supports are made with 45 degres angle under to be able to print without support. <br></p><p>about the forum, we have one you can find from smartfriendz.com ( link on top ) , you will see mostly french but everyone speaek english there . Also, there is a smartrap forum in reprap.org with a few makers working there . </p>
smartfriendz
about 9 years
<p>Thank you :)</p><p>I don't see what difference GT2.5 can make in parts design ? it is also 6mm width, no ? </p><p>Maybe i miss a feature ? </p>
BioMushroom
about 9 years
<p>Hi, very good design.</p><p>Can you pls add a variable for the GT2.5 belts? I got a lot of it and don't really wants to buy more belts.</p><p>I'm trying to learn JSCAD language to modify this design and make it viable for SpectraLine.</p><p>Thanks a lot for your designs efforts.</p><p>Cheers</p>
LAXDE
about 9 years
<p>@<a href="https://www.youmagine.com/users/fbolzoni" target="_blank" rel="nofollow">FBolzoni</a> I've printed the Z-Axis with 8 mm and getting the same problem. But this problem is the same with the previous version, i.e. not new.</p><p>But I had big problems with printing it because of the belt attachment kept on getting to high after printing the overhang for the second part. After rotating the part 90 degrees I got it printed. But with pure result. I think there are ground for a re-design of this part.</p>
FBolzoni
about 9 years
<p>Here we are again !</p><p>I've printed the whole Z-Axis with 10 mm diameter. Tryed to push the bearing and all the piece start carving ... After insert all the bearing the plate support aren't parallel anymore and look like the want touch togheter.</p><p>Is this normal, is my print wrong, or what else ?</p><p>Thanks</p><p>PS: There is a forum where put question and read already ansered one ?</p>
FBolzoni
about 9 years
<p>Thanks for your answer.</p><p>I wait for the new version !</p>
smartfriendz
about 9 years
<p>Hi, </p><p>It is made on purpose : </p><p>- the head top is constraining the 2 top bearings on only one axis rotation ( around X axis) . We noticed when printing 3 parts (Yslides and Head) , you willnever have a perfect alignment beetween rods,so the bearings on the X axis will force . With this design, the two top bearings can be adjusted to the good rods distance.</p><p>- about the proxysensor, we are now re-using the nuts , so a half is enough to fix it ( note it's a liiitle smal actually and will be extended, but not to the full circle. </p><p><br></p><p>What is not made for now , is the 8 , 10 mm options for rods ( I need a second design pass to extend the supports) . That will come very soon now .</p>
FBolzoni
about 9 years
<p>Hi all.</p><p>I see the new version, but i think the new head isn't complete: top bearing are free for more than 50% on top and the proxysensor holder isn't close.</p><p>It's a mistake or they are intended to be like that ?</p><p>And, is possible as i'm not able to do modify for 10 mm rod bar also for xy axis ?</p>
FBolzoni
about 9 years
<p>Hi again.</p><p>Inserting the correct value for xyroddiams isn't enought.</p><p>A bunch of things must fixed (slide y, head etc) and i'm trying to fix almost everything.</p><p>Again if someone has already done the work or can help me (i'm almost a noobie here!) are welcome...<br></p>Note#1: ok, i'm not able at all... Too many thing to setup
vanadaar
about 9 years
<p>Sorry for ignorance, but for the z-slide on a lead screwx2 setup the stl appears to be hex, but everything I find uses a round leadscrew nut. Can someone set me straight?</p>
FBolzoni
about 9 years
<p>Hi. Is possible use xy rods with 10 mm diameter ?</p><p>It's so easy as put 10 into openJSCAD parameter ?</p><p>Answer: No. with rod at 10mm the hole into printerhead dosn't come out ... Any planned fix ?<br></p><p>Fix #2: I think i have found where there was the error: a line like this if(_XYrodsDiam==10){_XYlmDiam = 19;}<br>was missing.</p><p>I added two lines, one for 10 and one for 12, as the Z axis and llok like it's ok.</p><p>If someone can check this i start printing !<br></p><p>Thanks</p>
DarkwingUK
about 9 years
<p>I was just reading the BOM & it mentions a Pressfit 2 x 4mm with M6 thread. Is this something to do with the extruder? If not, could someone tell me what this is please (hopefully with a link or a picture of one).<br><br>Thanks in advance.<br></p>Nevermind, found it.. DOH! For those who are also looking: <a href="http://www.ebay.co.uk/itm/Push-Fit-Pneumatic-Coupling-Coupler-Fitting-PTFE-Tubing-Bowden-3D-Printer-/321637916817?pt=LH_DefaultDomain_3&var=&hash=item4ae31d2091" target="_blank" rel="nofollow">http://www.ebay.co.uk/itm/Push-Fit-Pneumatic-Coupling-Coupler-Fitting-PTFE-Tubing-Bowden-3D-Printer-...</a>
jgvonk1984
about 9 years
<p>Has anyone already made the hotend suspension suitable for E3D V6?</p>
Cristian Barilari
about 9 years
<p>sorry for the noob quastion, but how can i generate separated stl files? the parts plate is too big for my tiny little printer.</p><p><br></p><p>thanks</p>
street
about 9 years
<p><a rel="nofollow" target="_blank" href="/users/laxde" class="mentioned-user">@LAXDE</a> , thanks! Actually threw Paypal at the problem as it was less than £2 for 5 of the right length. Will definitely try your pins out for something though - working on a larger version of Richrap's Sli3dr in the margins and could be useful there...</p>
Blender
about 9 years
<p>Just wanted to tell you guys that i really like your solutions. The printer is incredibly simple and looks quite stable. If i wouldn't have built two myself i would definetly build one like yours myself... may be i'll need one in the future? ;-D</p>
LAXDE
over 9 years
<p><a href="https://www.youmagine.com/users/street" target="_blank" rel="nofollow">@street </a></p><p>Take a look at my solution under <a href="https://www.youmagine.com/contributions/529" target="_blank" rel="nofollow">https://www.youmagine.com/contributions/529</a></p>
street
over 9 years
<p>Is there a typo in the BOM? The M8 x 25mm bolts I ordered seem to be 10mm short... </p>
street
over 9 years
<p>Thanks, been reading your reprap.org forum thread and there are lots of interesting comments by the community! 80mm/s is pretty good. </p>
djinn5150
over 9 years
<p><a rel="nofollow" target="_blank" href="/users/street" class="mentioned-user">@street </a> I am just using the Marlin I have been using since I built my Smartrap now I just have corexy enabled, I have detailed my build over at the reprap forurms at this location : <a rel="nofollow" target="_blank" href="http://forums.reprap.org/read.php?344,477541">http://forums.reprap.org/read.php?344,477541</a> for the heavy duty Z, its bulkier all around and also includes nut catches to attach the bed platform, </p>
street
over 9 years
<p><a rel="nofollow" target="_blank" href="/users/djinn5150" class="mentioned-user">@djinn5150</a> Thanks, I like what you did there and I'd probably use that z setup if the main model hasn't been fixed by the time I start printing parts. May I ask what was so "heavy duty" about your design? I'm thinking of using 8mm throughout and 18mm MDF for the box to really give some inertial mass and damp any vibrations.</p><p>You mentioned that yours is going really fast - please could you give me an idea of what speed, accn and jerk settings you're using and still getting prints you're happy with? What steppers and drivers do you use to achieve those speeds?<br></p><p>Again, I might have missed something obvious, but what firmware are people running on this? My first port of call would be the coreXY setting in Marlin for RAMPS but I'm just guessing.</p><p><b><i></i></b><b>EDIT:<i> </i></b><i>I found this after searching. </i><a rel="nofollow" target="_blank" href="https://github.com/smartfriendz/smartcore"><i>https://github.com/smartfriendz/smartcore</i></a><i> Sorry for bothering with that question. RAMPS 1.4 is mentioned in the BOM, so now I at least know the software and controller side.</i></p>
djinn5150
over 9 years
<p><a rel="nofollow" target="_blank" href="/users/street" class="mentioned-user">@street </a> It does not look like the threaded z has been fixed yet but, I have a re-work that is working really well you can find that <a rel="nofollow" target="_blank" href="https://www.youmagine.com/designs/smartrapcore-heavy-duty-z">https://www.youmagine.com/designs/smartrapcore-heavy-duty-z</a>. As for the extruder I opted to use wades so I can neither confirm nor deny if the MK8 will work. I am currently working on a part cooling fan solution to mount around the backside of the X rods but It will be designed with the extra room I built into my printer so not sure if it will carry through to the "official"</p>
street
over 9 years
<p>I really like this - is there a way to make it compatible with e3d v6 / Lite6 hotends and has anyone built a cooling fan for the print (as opposed to the hotend heat exchanger)? </p><p>Secondly, I read the comments about threaded rod z axis and wondered if this has been fixed in the openjscad model yet. </p><p>Finally, could someone confirm if you can use a Mk 8 extruder gear with the current openjscad options? </p><p>Thanks for helping and sorry if I've missed an obvious answer to my questions! </p>
smartfriendz
over 9 years
<p>oops , sorry Mateus :) I think i was tired when i posted that , i know perfectly it's you who made this update .</p><p>Eventually, i will mix it in here of course. It's a very great addition ! It's just that the production of smartrapcores takes us all our time lately, so i didn't have time to work on the model .</p><p>Soon to come a new option for MK8 for the extruder ( this is what we sell now) and double pressfit to be more easy to put the filament under the extruder ( it's quiet hard to find now ) . </p><p>Some accessories too : </p><p>- support for filament roll inside the box</p><p>- box for ramps and support for LCD.</p>
Mateusz P
over 9 years
<p><a rel="nofollow" target="_blank" href="/users/djinn5150" class="mentioned-user">@djinn5150</a> thanks for posting that, I didn't had a chance and hoped that smartfriendz would merge my fix to it.<br>However I agree with smartfriendz, that pull request should be fine reviewed (if time allows)<br>I try to post threaded rods design in youmagine with github link - it needs some love ;) it loses a lot z height.</p>
djinn5150
over 9 years
<p>For the record, it wasn't me that designed the original threaded Z, it was @Mateusz P if I am not mistaken, and is his fix that is included in my github fork, but I did publish a heavy duty z here on youmagine that is based heavily off that design.</p>
smartfriendz
over 9 years
<p>Hi Rein,</p><p>sorry for the missing update. The threaded Z part will be removed for a little time because I integrated a little too fast this mod by dhinn ( wich is very nice mod by the way ) and i had some problems with the main model.</p><p>I will first re-publish a cleaned version and then re integrate. In the meantime, he indeed made a fork and published the mod on his repo, so you can use this one.</p><p>thank you</p>
Yiannis Mandravellos
over 9 years
<p><a rel="nofollow" target="_blank" href="/users/rein" class="mentioned-user">@Rein</a> I used the files from <a rel="nofollow" target="_blank" href="/users/djinn5150" class="mentioned-user">@djinn5150</a> 's repository and they work just fine.</p>
Rein
over 9 years
<p>Any progress on fixing the threaded Z parts?</p>
smartfriendz
over 9 years
<p>I agree it's not really wonderful, but think the rod will come right on top of the steppers , so this thin wall shouldn't be a problem.</p><p>To make it more "clean", I need to put the road in front of the stepper and this will change the all structure ( size of wood box, slideY,bearingsXY..etc). It will be done, but i need a little time.</p><p>thank you </p>
djinn5150
over 9 years
<p>A small section of 8mm rod</p>
Rein
over 9 years
<p>I've been wondering: The bearing obviously goes in the center, but it looks like some kind of rod goes through the bearing and sits on the notches to the side. What do I use for that?</p><p>Part: <a rel="nofollow" target="_blank" href="https://drive.google.com/file/d/0By3FkNAUMV8VOGFVbDh3VmNadGc/view?usp=sharing">https://drive.google.com/file/d/0By3FkNAUMV8VOGFVbDh3VmNadGc/view?usp=sharing</a></p>
Rein
over 9 years
<p>Awesome, really looking forward to building mine once the bearings come in.</p><p>Any ideas when the threaded Z parts will be updated?</p>
djinn5150
over 9 years
<p>FWIW, I have found that you must log out/in on Youmagine for things to update for some reason. <br>Now that I have had this printer running for a few days I must say I LOVE THIS PRINTER, just when I think I cant push it any faster it takes more and just keeps going, I really need to work on my acceleration/jerk settings and see just what this thing can do.</p>
Rein
over 9 years
<p>Oh, no idea how I didn't notice that option before. That helps a lot :P</p><p>Also sorry for the spam duplicate comments, they weren't showing up for me for some reason. I've deleted them.</p>
smartfriendz
over 9 years
<p>still not updated, sorry. I was late because of the production. I will clean up the file to have stilll threaded Z , but I need to recalculate all this part ( actually it's not wrong but bad positioned).</p><p>The print width/height gives the real print diimensions. To see the rods / wood/ belt dimansions, please choose the option " walls and rod sizes"</p>
djinn5150
over 9 years
<p>If u edit the file in jscad there are parameters to enter based on your specific build, enter your rod length minus the numbers I specified in the build volume, select wall and rod sizes then update that will give you wall and rod sizes if rod size matches yours your golden. Make sense?</p>
Rein
over 9 years
<p>So the print width/height/depth are just the rod length, not the actual print size? Then how do I get the actual measurements to cut the board from there?</p>
Yiannis Mandravellos
over 9 years
<p>Cheers djinn5150, I 'll check it out.</p>
djinn5150
over 9 years
<p>Rein rods are (55,65,110){X,Y,Z} over build volume, so if you have the rod length set your build volume accordingly in the jscad file and select wall and rod sizes to get a calculated board size.</p>
djinn5150
over 9 years
<p>Ylannis from what I can tell It hasn't been fixed in the official git as of yet, however fix mentioned here by Mateusz is available in the source of my fork on git @ http://github.org/djinn5150/smartcore/ my dualhead mod is also available there. </p>
Rein
over 9 years
<p>How do I determine the dimensions of the boards based on the length of my rods?</p>
Yiannis Mandravellos
over 9 years
<p>Is the threaded Z-rod misalignment fixed in current (git) version?</p>
djinn5150
over 9 years
Well then I will wait to re-print, looked like it was ok until I test assembled tonight, its def off. In the mean time I will work on getting this https://www.youmagine.com/designs/smartrapcore-dualhotend converted into jscad
smartfriendz
over 9 years
<p>i'm working on all Z placement again with diferent options. I didn't noticed at first , but the new Z options made some mistakes in Ztop, Zbottom placement regarding to back wood and Z rod.</p><p>I must check better before merging i think :) </p>
Mateusz P
over 9 years
<p>sorry for duplicate comments were not refreshing </p>
djinn5150
over 9 years
I am gonna have to really check mine now, I am using 5/16 rod as well :D I will def check out your pull, want to avoid reprinting the z for a 3'rd time now lol Sounds like your pretty fluent in jscad, have any advice for a greenhorn coming from openscad? I just cant seem to get my mind wrapped around it, I think its the javascript that is throwing me for a loop.
Mateusz P
over 9 years
<p>I use 5/16 rod which is around 8mm, but this doesn't matter what happens is top end of z-axis (one with bearing) is 1mm to deep, and threaded rod is not parallel to slide rods.<br>It seems like 1mm difference but I updated design - created pull request for it.<br>I also added and z assembly view, with threaded rod that shows it is in center now.<br><a rel="nofollow" target="_blank" href="https://github.com/smartfriendz/smartcore/pull/7">https://github.com/smartfriendz/smartcore/pull/7</a></p>
djinn5150
over 9 years
Mateusz P, what size rod did you build for? I did mine on 8mm Z and it lines up perfectly from carriage to top bearing, I haven't slipped a motor in yet but all seems good so far.
Mateusz P
over 9 years
<p>Threaded rodz Z option is bugged - carriage for Z needs the nut hole moved back 2mm. I will update file and create pull request tomorrow.<br>just build one z axis and found that out.</p>
djinn5150
over 9 years
Really liking the new update, think I will go ahead and run the threaded Z parts, but Is it just using a pretty standard M8 threaded rod and a 608zz bearing for the top? Just guessing off eyeballing the upper bearing size.
smartfriendz
over 9 years
ok djinn , most of parameters where in "int" type. It means it didn't take account of decimals. I wouldn't think about tickness with decimals.. I will update .
djinn5150
over 9 years
Is it just me or is the jscad dropping fractional sizes in board thickness? I.E. If I build for 12mm wall sizes are the same as if I build for 12.8. After completing my frame it became apparent the wood I purchased this go round was a bit thicker then the scrap I test fit my printed motor and bearing mounts too, after a re-print with recalculated board thickness the parts are same size, roughly 12mm +/- .05. I think i am just going to router my frame down to fit 12mm, but curious if my observations are correct.
Mateusz P
over 9 years
which gear do you use in extruder?
Mateusz P
over 9 years
for belt calculation I used:
((XrodLength + beltXAddon)*4 + (YrodLength + beltYAddon)*4)
where
var beltXAddon = 120; // belt extra length over rod size - bearing guides and difference between bearing edge to end of rod
var beltYAddon = 30; // belt extra length over y rod size - distance from motor pulley edge to Y rod mount and
measured by eye -printing parts now to set on top of my frame and waiting for belt from ebay to validate the measurements
CptanPanic
over 9 years
What are you using for non-contact proximity z probe?
smartfriendz
over 9 years
thank you djinn, I'm thinking about belt calculator, but it is not that easy .. feasible of course . I just need some time :)
djinn5150
over 9 years
<p>Unfortunately I think the head pieces will be the biggest challenge given the location of the belts/clamps. I think I am just going to re-enforce my assembly with a bit of glue. I am looking at the head design and thinking scalability for a dual extruder should be pretty good, I will play around with it, A belt length calculator would be a very welcome addition to the jscad file, wish I could help with that but I am horrible with scad. Other then those things I think 1.0.1 is going to be great, </p>
smartfriendz
over 9 years
<p>thank you djin.. you see all ! I've seen also the little support on the motorXY for 8mm , but with the stepper support , it will make it..for now ( even it's not really nice). The thing is, if we want something more clean, we need a deeper change in the design ( support going further, or the all plane XY higher). I think we will do but not immediately.</p>
djinn5150
over 9 years
Another note on MotorXY when using 8mm rods the support for the rod seems to be cut off almost at the bottom of the rod hole very little material to support rods on bottom. I can also confirm the screw hole issue on the "head" stl's they do in fact "hit". The "clamp" hole is fine, its the holes for the print head mount that could be an issue there is approx approx 4mm of material for screws to grab before hitting the linear bearing so it might be ok. I have printed but not assembled the head yet.<div><br></div><div>*EDIT: Nevermind just dawned on me the motors will help support the rod, its to early not enough coffee and to little sleep :D</div>
Gasper
over 9 years
<p>hola soy de Costa Rica y me interesa saber si hay una lista completa de todas las partes físicas y electrónicas bien especificada y clara para un novato, no conozco mucho de electrónica pero viendo este diseño tan interesante me quiero arriesgar a hacer mi propia impresora, alguien puede ayudarme con esto.<br>Muchas gracias </p><p> i am from Costa Rica and I want to know if there is a complete list of all electronic and physical well specified and clear for a novice parts, I do not know much about electronics but seeing this very interesting design I want to risk making my own printer, someone you can help me with this.<br>thank you very much</p>
smartfriendz
over 9 years
Thank you Yiannis, I will check that. The 8mm option was made at the end, so that easy could happen :)
Yiannis Mandravellos
over 9 years
I haven't printed the latest version since I 'm happy with the one I have currently working, but I believe the "head" STLs will not work with 8mm rods. Looks like the screw holes would "hit" the linear bearings...
Again, I haven't printed this so I may be wrong :)
smartfriendz
over 9 years
yes djin, it works with 8mm XY now.
smartfriendz
over 9 years
thank you Mateus, I will integrate the patch today :) great job !
djinn5150
over 9 years
Going to start printing parts soon, did the problems with 8mm rods get resolved with v1.0.1 updated on 2/25?
Mateusz P
over 9 years
Found issue with 2 elements motorXY and bearingsXY - they don't behave correctly for wider boards (like 19mm or 3/4 inch)
here is patch file to fix it https://www.dropbox.com/s/zei1oft4shedds4/smartcore-v1.0.1.patch%20for%20variable%20box%20width.patch?dl=0
smartfriendz
over 9 years
I use standard nema17 . It is just right for a 0.1 layer ( even i never use it but more 0.2 / 0.3 ). I have plan to test with some gears , to see how it behave ?
djinn5150
over 9 years
Are you using a standard nema 17 for the Z or are you using a geared stepper? Smartrap was my first printer think this may be my third!
smartfriendz
over 9 years
yes. we use 608zz.
unix
over 9 years
Hi, <div><br></div><div>What bearings should use ? 608 ? 8x22x7 ? </div><div><br></div><div>Best regards</div>
smartfriendz
over 9 years
<p>you're right. This version is in heavy dev, so i didn't check all the options and more importantly, the generated plates are not updated. It will be all good in a few days as i'm happy with the actual design. Now i will start to clean all that .</p>
Yiannis Mandravellos
over 9 years
Unfortunately, the new design (0.9) does not work for 8mm XY rods...
Do you think you could fix it?
smartfriendz
over 9 years
I'm still working on it, but for now there will be only the option to export plates with all elements at once. I would need to hack the heml file on youmagine to export , for example, a zip with all separated elements .
We'll see, maybe we can do that too ?
BoriSpider
over 9 years
So anyone have the individual parts for printing for this machine.
I can't seem to get individual .stl's out of Jscad.