Smartcore

By smartfriendz

688
155
Free
It's free to download
Main Image
Preview Image Preview Image Preview Image Preview Image Preview Image Preview Image Preview Image Preview Image Preview Image Preview Image Preview Image Preview Image

Comments

You need to be signed in before commenting.
katyswift468
katyswift468
over 1 year
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
jedacandy
over 3 years
It's necessary, I need more information <a href="https://driving-directionsmaps.com/">driving directions</a>
Viktor Malenyov
Viktor Malenyov
over 7 years
What about endstops? On v.1.2 i see only X-endstop. What about YZ?
sobo84
sobo84
almost 8 years
And where to get an actual model? STLs with my settings?
Cristian Barilari
Cristian Barilari
almost 8 years
This model is obsolete... And I don't think that nema14 have enough torque to drive the printer
sobo84
sobo84
almost 8 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
docdawning
over 8 years
This seems fairly awesome. How are your prints? Any sense what your BoM cost was?
fpv_tobi
fpv_tobi
over 8 years
Hi, The BOM is missing at least the Endstop Switches and a Fan for the Hotend right?
matrix
matrix
almost 9 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
MonZon
almost 9 years
Files here are obsolete, use https://cad.onshape.com/documents/086229ea796640d29acd68ff/w/2030a3358fd641da896d20a5 instead.
Mark van Wijk
Mark van Wijk
almost 9 years
the STL outputs are not usable with 8mm rods, non manifold -> slic3r can't do anything with them...
punkrockseb
punkrockseb
about 9 years
12mm prints fine for 11.8mm wood.
punkrockseb
punkrockseb
about 9 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
Cristiano Gariboldo
about 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
Vincent Y
about 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
Anonymous
about 9 years
which reached the speed of printing on this printer? And what parameters are used for printing speeds this design?
Anonymous
Anonymous
about 9 years
which reached the speed of printing on this printer? And what parameters are used for printing speeds this design?
Anonymous
Anonymous
about 9 years
which reached the speed of printing on this printer? And what parameters are used for printing speeds this design?
adamantos.amatisto
adamantos.amatisto
over 9 years
Not work wit nema 14 motors, error in xy motor a rosa spare part
marcething
marcething
over 9 years
Hello Serge, now smartcore v1.2.JSCAD works perfectly in OPenJSCAD ! Marc
smartfriendz
smartfriendz
over 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
marcething
over 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
marcething
over 9 years
Oops, OK never Mind, found it :-)
lacuevadeltrollsv
lacuevadeltrollsv
over 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
marcething
over 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
Anonymous
over 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
Anonymous
over 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
Vincent Y
over 9 years
Same error as bellow, can't open the files in jscad.
TheHozza
TheHozza
over 9 years
Ditto same error!
nkdurrett
nkdurrett
over 9 years
I got the same issue alex
Alex Post
Alex Post
over 9 years
It does not work Smartcore V1.2, http://openjscad.org/ says "TypeError: this.color.join is not a function"
pedroamz
pedroamz
over 9 years
<p>Muito obrigado. Thank you.&nbsp;</p>
MonZon
MonZon
over 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
MonZon
over 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
Richard_PV
over 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
thetazzbot
over 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.&nbsp; Should it be set in place by a set screw?</p>
thetazzbot
thetazzbot
over 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
Kevin Harbour
over 9 years
<p>Are there any diagrams for the belt placements?</p>
FBolzoni
FBolzoni
over 9 years
<p>@ams7834: generate the "printer parts plate" and there is almost all the piece into it.</p>
ams7834
ams7834
over 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
dkulinski
over 9 years
<p>I am currently printing parts for my Smartcore. &nbsp;I just printed the head block v1.2. &nbsp;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. &nbsp;Is this a known issue? &nbsp;Any way to work around besides filing out the ridges? &nbsp;Thanks for the great design!</p>
3DFreezeMe
3DFreezeMe
over 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>--&gt; workaround is to comment line 582 in the JSCAD file like this:</p><p><b><i><small>// xtra save material &nbsp; &nbsp; &nbsp; //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>--&gt; 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
FBolzoni
over 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
smartfriendz
over 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 ) .&nbsp;</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.&nbsp;</p><p>I just did this for hte head part and the two X rods. The top is now free to move verticaly, &nbsp;that limits problems from extra constraint ( distance between two rods that must be the same in three separated parts ).&nbsp;</p><p>Well..globaly, i need to rework this part .&nbsp;</p><p>There's an update coming : &nbsp;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.&nbsp;</p>
FBolzoni
FBolzoni
over 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
smartfriendz
over 9 years
<p>@<a rel="nofollow" target="_blank" href="https://www.youmagine.com/users/fbolzoni">FBolzoni</a>&nbsp;: 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.&nbsp;<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 .&nbsp;</p>
smartfriendz
smartfriendz
over 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 ?&nbsp;</p><p>Maybe i miss a feature ?&nbsp;</p>
BioMushroom
BioMushroom
over 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
LAXDE
over 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
FBolzoni
over 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
FBolzoni
over 9 years
<p>Thanks for your answer.</p><p>I wait for the new version !</p>
smartfriendz
smartfriendz
over 9 years
<p>Hi,&nbsp;</p><p>It is made on purpose :&nbsp;</p><p>- the head top is constraining the 2 top bearings on only one axis rotation &nbsp;( 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.&nbsp;</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
FBolzoni
over 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
FBolzoni
over 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
vanadaar
over 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
FBolzoni
over 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 &nbsp; &nbsp; 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
DarkwingUK
over 9 years
<p>I was just reading the BOM &amp; 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&amp;var=&amp;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
jgvonk1984
over 9 years
<p>Has anyone already made the hotend suspension suitable for E3D V6?</p>
Cristian Barilari
Cristian Barilari
over 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
street
over 9 years
<p><a rel="nofollow" target="_blank" href="/users/laxde" class="mentioned-user">@LAXDE</a>&nbsp;, 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
Blender
over 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
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
street
over 9 years
<p>Is there a typo in the BOM? The M8 x 25mm bolts I ordered seem to be 10mm short...&nbsp;</p>
street
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.&nbsp;</p>
djinn5150
djinn5150
over 9 years
<p><a rel="nofollow" target="_blank" href="/users/street" class="mentioned-user">@street </a>&nbsp;I am just using the Marlin I have been using since I built my Smartrap now I just have corexy enabled, &nbsp;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> &nbsp;for&nbsp;the heavy duty&nbsp;Z,&nbsp;its&nbsp;bulkier&nbsp;all around&nbsp;and&nbsp;also&nbsp;includes&nbsp;nut&nbsp;catches&nbsp;to attach the bed&nbsp;platform,&nbsp;</p>
street
street
over 9 years
<p><a rel="nofollow" target="_blank" href="/users/djinn5150" class="mentioned-user">@djinn5150</a>&nbsp;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>&nbsp;Sorry&nbsp;for&nbsp;bothering&nbsp;with&nbsp;that&nbsp;question.&nbsp;RAMPS 1.4&nbsp;is&nbsp;mentioned in&nbsp;the&nbsp;BOM,&nbsp;so&nbsp;now&nbsp;I&nbsp;at&nbsp;least&nbsp;know&nbsp;the software&nbsp;and&nbsp;controller&nbsp;side.</i></p>
djinn5150
djinn5150
over 9 years
<p><a rel="nofollow" target="_blank" href="/users/street" class="mentioned-user">@street </a>&nbsp; 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>. &nbsp;As&nbsp;for&nbsp;the&nbsp;extruder&nbsp;I&nbsp;opted to&nbsp;use wades&nbsp;so&nbsp;I&nbsp;can&nbsp;neither&nbsp;confirm&nbsp;nor&nbsp;deny if&nbsp;the&nbsp;MK8&nbsp;will&nbsp;work. &nbsp;I&nbsp;am&nbsp;currently&nbsp;working on a&nbsp;part&nbsp;cooling fan solution&nbsp;to&nbsp;mount&nbsp;around&nbsp;the&nbsp;backside of&nbsp;the&nbsp;X&nbsp;rods&nbsp;but It&nbsp;will&nbsp;be designed with the extra&nbsp;room&nbsp;I&nbsp;built&nbsp;into&nbsp;my&nbsp;printer&nbsp;so not sure if&nbsp;it&nbsp;will&nbsp;carry through to&nbsp;the&nbsp;"official"</p>
street
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)?&nbsp;</p><p>Secondly, I read the comments about threaded rod z axis and wondered if this has been fixed in the openjscad model yet.&nbsp;</p><p>Finally, could someone confirm if you can use a Mk 8 extruder gear with the current openjscad options?&nbsp;</p><p>Thanks for helping and sorry if I've missed an obvious answer to my questions!&nbsp;</p>
smartfriendz
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 ! &nbsp;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 &nbsp;double pressfit to be more easy to put the filament under the extruder ( it's quiet hard to find now ) .&nbsp;</p><p>Some accessories too :&nbsp;</p><p>- support for filament roll inside the box</p><p>- box for ramps and support for LCD.</p>
Mateusz P
Mateusz P
over 9 years
<p><a rel="nofollow" target="_blank" href="/users/djinn5150" class="mentioned-user">@djinn5150</a>&nbsp; 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
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
smartfriendz
over 9 years
<p>Hi Rein,</p><p>sorry for the missing update. &nbsp;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
Yiannis Mandravellos
over 9 years
<p><a rel="nofollow" target="_blank" href="/users/rein" class="mentioned-user">@Rein</a>&nbsp;I used the files from <a rel="nofollow" target="_blank" href="/users/djinn5150" class="mentioned-user">@djinn5150</a>&nbsp;'s repository and they work just fine.</p>
Rein
Rein
over 9 years
<p>Any progress on fixing the threaded Z parts?</p>
smartfriendz
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&nbsp;</p>
djinn5150
djinn5150
over 9 years
<p>A small section of 8mm rod</p>
Rein
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. &nbsp;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
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
djinn5150
over 9 years
<p>FWIW, I have found that you must log out/in on Youmagine for things to update for some reason. &nbsp;<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, &nbsp;I really need to work on my acceleration/jerk settings and see just what this thing can do.</p>
Rein
Rein
over 9 years
<p>Oh, no idea how I didn't notice that option before. &nbsp;That helps a lot :P</p><p>Also sorry for the spam duplicate comments, they weren't showing up for me for some reason. &nbsp;I've deleted them.</p>
smartfriendz
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 &nbsp;rods / wood/ belt dimansions, please choose the option " walls and rod sizes"</p>
djinn5150
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
Rein
over 9 years
<p>So the print width/height/depth are just the rod length, not the actual print size? &nbsp;Then how do I get the actual measurements to cut the board from there?</p>
Yiannis Mandravellos
Yiannis Mandravellos
over 9 years
<p>Cheers djinn5150, I 'll check it out.</p>
djinn5150
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
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&nbsp;is available in the source of my fork on git @ http://github.org/djinn5150/smartcore/ my&nbsp;dualhead mod is&nbsp;also available there.&nbsp;</p>
Rein
Rein
over 9 years
<p>How do I determine the dimensions of the boards based on the length of my rods?</p>
Yiannis Mandravellos
Yiannis Mandravellos
over 9 years
<p>Is the threaded Z-rod misalignment fixed in current (git) version?</p>
djinn5150
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
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 :)&nbsp;</p>
Mateusz P
Mateusz P
over 9 years
<p>sorry for duplicate comments were not refreshing&nbsp;</p>
djinn5150
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
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 &nbsp;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
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
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
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
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
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
Mateusz P
over 9 years
which gear do you use in extruder?
Mateusz P
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
CptanPanic
over 9 years
What are you using for non-contact proximity z probe?
smartfriendz
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
djinn5150
over 9 years
<p>Unfortunately I think the head pieces will be the biggest challenge given the location of the belts/clamps. &nbsp;I think I am just going to re-enforce my assembly with a bit of glue. &nbsp;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,&nbsp;</p>
smartfriendz
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
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
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>&nbsp;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
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
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
smartfriendz
over 9 years
yes djin, it works with 8mm XY now.
smartfriendz
smartfriendz
over 9 years
thank you Mateus, I will integrate the patch today :) great job !
djinn5150
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
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
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
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
smartfriendz
almost 10 years
yes. we use 608zz.
unix
unix
almost 10 years
Hi,&nbsp;<div><br></div><div>What bearings should use ? 608 ? 8x22x7 ?&nbsp;</div><div><br></div><div>Best regards</div>
smartfriendz
smartfriendz
almost 10 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
Yiannis Mandravellos
almost 10 years
Unfortunately, the new design (0.9) does not work for 8mm XY rods... Do you think you could fix it?
smartfriendz
smartfriendz
almost 10 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
BoriSpider
almost 10 years
So anyone have the individual parts for printing for this machine. I can't seem to get individual .stl's out of Jscad.
1 objects 73 Followers
Joined over 10 years ago Maurs - France

Smarfriendz is all about open hardware. We are trying to give alternative choice to people regarding to the common hardware they use everyday . We propose, open source, community driven , not driven by marketing hardware solution in form of kits, DIY...

You_

a MyMiniFactory company
© 2024 YouMagine. All rights reserved.  2 Berners Road, Islington, London, N1 0PW, United Kingdom