Glass_Bed_Shim.scad 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. $fs = 0.4;
  2. /* Simple part to provide parametric shim to match increased thicknes of
  3. glass bed added to FlashForge Creator X, and PowerSpec re-branded 3dX
  4. NOTE: The development of this shim included learning openscad. This
  5. was built by accretion; no beautiful code here!
  6. 1. We define a cylinder and clip it to make a retaining bracket,
  7. along with a square section extending to the back of the printer.
  8. This is offset to the 'left' in the x-axis.
  9. 2. We define a crossbar to extend along the back of the plate.
  10. 3. We define another retaining bracket, offset to the 'right' on the
  11. x-axis and flipped to point the other direction.
  12. 4. These parts are unioned together to make the complete shim
  13. */
  14. // Change this height parameter to accomodate different glass thickness
  15. // I used 5.5mm for my 3.2mm glass, to give leeway for bed leveling
  16. height = 7.0;
  17. // thickness is a general sizing parameter, used to keep the brackets
  18. // trim and elegant
  19. thickness = 2;
  20. // On my printer, the z-axis stabilizing rods are 20.9mm diameter
  21. postdiameter = 20.9;
  22. squaredimension = 15;
  23. cutback = thickness * 2;
  24. // cubesize is used to clip a cylinder that is used as the retaining
  25. // 'ring' around the z-azis stabilizing rods
  26. cubesize = postdiameter + thickness + 5;
  27. // we need to reach the limit switch. This is parameterized for tinkering
  28. distance2back = 18;
  29. // The two z-axis stabilizing rods are 10cm apart
  30. center2centerwidth = 100;
  31. /* one side cylinder and square extension to back of plate */
  32. translate([-50,0,0]) {
  33. difference() {
  34. union() {
  35. cylinder(h=height, r=postdiameter/2 + thickness, center=true);
  36. translate([thickness * 2,0,-(height/2)])
  37. {
  38. cube ([postdiameter/2 - thickness,distance2back, height]);
  39. } // end of translate
  40. } // end of union
  41. cylinder(h=height+1, r=postdiameter/2, center=true);
  42. translate([-(cubesize-cutback),-cubesize/2,-(height *1.5)])
  43. {
  44. cube(cubesize,cubesize,height+5);
  45. } // end of translate
  46. } // end of difference
  47. } // end of translate
  48. /* cross bar */
  49. translate([-(center2centerwidth/2 - thickness * 2),distance2back - squaredimension / 2,-(height / 2)]) {
  50. cube([center2centerwidth - (thickness * 4),squaredimension,height]);
  51. } // end of translate of cross-bar
  52. /* cylinder and square extension, flipped for other side */
  53. translate([50,0,0]) {
  54. rotate([0,180,0]) {
  55. difference() {
  56. union() {
  57. cylinder(h=height, r=postdiameter/2 + thickness, center=true);
  58. translate([thickness * 2,0,-(height/2)])
  59. {
  60. cube ([postdiameter/2 - thickness,distance2back, height]);
  61. } // end of translate
  62. } // end of union
  63. cylinder(h=height+1, r=postdiameter/2, center=true);
  64. translate([-(cubesize-cutback),-cubesize/2,-(height *1.5)])
  65. {
  66. cube(cubesize,cubesize,height+5);
  67. } // end of translate
  68. } // end of difference
  69. } // end of rotate
  70. } // end of translate
  71. // } end of union