|
// CNC-v3.2.scad - Open source CNC machine |
|
// Project page: www.HomoFaciens.de |
|
// Date: 2016-10-11 |
|
// Author: Norbert Heinz |
|
|
|
// Modified by Unrud <[email protected]> (2018-10-08) |
|
|
|
// Display Settings |
|
SHOW_DRILLHOLES = false; |
|
SHOW_BALL_BEARINGS = true; |
|
SHOW_CROSS_BEAMS = true; |
|
SHOW_LABELS = true; |
|
SHOW_ASSEMBLED = false; |
|
|
|
SHOW_MAIN_FRAME = true; |
|
SHOW_X_AXIS = true; |
|
SHOW_Y_AXIS = true; |
|
SHOW_Z_AXIS = true; |
|
|
|
DRILL_FRAGMENTS = 10; |
|
BALL_BEARING_FRAGMENTS = 10; |
|
// End Display Settings |
|
|
|
// Model Settings |
|
SQUARE_TUBE_WALL_THICKNESS = 2; |
|
WITH_CROSS_BEAMS = true; |
|
WITH_MOUNTING_PLATES = true; |
|
// End Model Settings |
|
|
|
|
|
// id, length, [[[drill position, drill diameter, flags], ...], ...] |
|
SQUARE_TUBES = [ |
|
["F1", 820, [ |
|
// Top |
|
[], |
|
// Right |
|
[], |
|
// Bottom |
|
[[10, 5], [190, 5], [390, 5], [590, 5], [790, 5]], |
|
// Left |
|
[[30, 5], [50, 5, "M"], [90, 5, "M"], [130, 5, "M"], [170, 5, "M"], [210, 5], [410, 5], [610, 5], [810, 5]]]], |
|
["F2", 820, [ |
|
[], |
|
[], |
|
[[30, 5], [230, 5], [430, 5], [630, 5], [810, 5]], |
|
[[10, 5], [210, 5], [410, 5], [610, 5], [650, 5, "M"], [690, 5, "M"], [730, 5, "M"], [770, 5, "M"], [790, 5]]]], |
|
["F3", 300, [ |
|
[[10, 11], [250, 5, "C"], [290, 11]], |
|
[[30, 11], [270, 11]], |
|
[[10, 7], [50, 5, "C"], [290, 7]], |
|
[[30, 7], [270, 7]]]], |
|
["F4", 300, [ |
|
[[10, 11], [50, 5, "C"], [250, 5, "C"], [290, 11]], |
|
[[30, 11], [270, 11]], |
|
[[10, 7], [50, 5, "C"], [250, 5, "C"], [290, 7]], |
|
[[30, 7], [270, 7]]]], |
|
["F5", 300, [ |
|
[[10, 11], [50, 5, "C"], [250, 5, "C"], [290, 11]], |
|
[[30, 11], [270, 11]], |
|
[[10, 7], [50, 5, "C"], [250, 5, "C"], [290, 7]], |
|
[[30, 7], [270, 7]]]], |
|
["F6", 300, [ |
|
[[10, 11], [50, 5, "C"], [290, 11]], |
|
[[30, 11], [270, 11]], |
|
[[10, 7], [50, 5, "M"], [100, 5, "M"], [150, 5, "M"], [200, 5, "M"], [250, 5, "CM"], [290, 7]], |
|
[[30, 7], [270, 7]]]], |
|
["F7", 300, [ |
|
[[10, 11], [290, 11]], |
|
[[30, 11], [270, 11]], |
|
[[10, 7], [50, 5, "M"], [100, 5, "M"], [150, 5, "M"], [200, 5, "M"], [250, 5, "M"], [290, 7]], |
|
[[30, 7], [270, 7]]]], |
|
["F8", 220, [ |
|
[[10, 5], [170, 5, "C"], [210, 7]], |
|
[[10, 7], [30, 5, "C"], [190, 5]], |
|
[[30, 5, "C"], [210, 11]], |
|
[[10, 11], [170, 5, "C"]]]], |
|
["F9", 220, [ |
|
[[10, 5], [30, 5, "C"], [170, 5, "C"], [210, 7]], |
|
[[10, 7], [30, 5, "C"], [190, 5]], |
|
[[30, 5, "C"], [170, 5, "C"], [210, 11]], |
|
[[10, 11], [170, 5, "C"]]]], |
|
["F10", 220, [ |
|
[[10, 5], [30, 5, "C"], [170, 5, "C"], [210, 7]], |
|
[[10, 7], [30, 5, "C"], [190, 5]], |
|
[[30, 5, "C"], [170, 5, "C"], [210, 11]], |
|
[[10, 11], [170, 5, "C"]]]], |
|
["F11", 220, [ |
|
[[10, 7], [190, 5, "C"], [210, 5]], |
|
[[30, 5], [50, 5, "C"], [210, 7]], |
|
[[10, 11], [50, 5, "C"]], |
|
[[190, 5, "C"], [210, 11]]]], |
|
["F12", 220, [ |
|
[[10, 7], [50, 5, "C"], [190, 5, "C"], [210, 5]], |
|
[[30, 5], [50, 5, "C"], [210, 7]], |
|
[[10, 11], [50, 5, "C"], [190, 5, "C"]], |
|
[[190, 5, "C"], [210, 11]]]], |
|
["F13", 220, [ |
|
[[10, 7], [50, 5, "C"], [190, 5, "C"], [210, 5]], |
|
[[30, 5], [50, 5, "C"], [210, 7]], |
|
[[10, 11], [50, 5, "C"], [190, 5, "C"]], |
|
[[190, 5, "C"], [210, 11]]]], |
|
["F14", 260, [ |
|
[[130, 5]], |
|
[[130, 5]], |
|
[[30, 5, "C"], [130, 5], [230, 5, "C"]], |
|
[[10, 5], [250, 5]]]], |
|
["F15", 260, [ |
|
[[130, 5]], |
|
[[10, 5], [250, 5]], |
|
[[30, 5, "C"], [230, 5, "C"]], |
|
[[10, 5], [250, 5]]]], |
|
["F16", 260, [ |
|
[[130, 5]], |
|
[[10, 5], [250, 5]], |
|
[[30, 5, "C"], [230, 5, "C"]], |
|
[[10, 5], [250, 5]]]], |
|
["F17", 260, [ |
|
[[30, 5, "M"], [70, 5, "M"], [110, 5, "M"], [130, 5], [150, 5, "M"], [190, 5, "M"], [230, 5, "M"]], |
|
[[10, 5], [250, 5]], |
|
[[30, 5, "C"], [230, 5, "C"]], |
|
[[10, 5], [250, 5]]]], |
|
["F18", 620, [ |
|
[], |
|
[[10, 7], [110, 5], [210, 7], [310, 5], [410, 7], [510, 5], [610, 7]], |
|
[], |
|
[[10, 11], [210, 11], [410, 11], [610, 11]]]], |
|
["F19", 820, [ |
|
[[30, 11], [230, 11], [430, 11], [630, 11], [810, 11]], |
|
[], |
|
[[30, 7], [190, 5], [230, 7], [390, 5], [430, 7], [590, 5], [630, 7], [810, 7]], |
|
[[650, 5, "M"], [690, 5, "M"], [730, 5, "M"], [770, 5, "M"], [790, 5]]]], |
|
["F20", 820, [ |
|
[[10, 11], [190, 11], [390, 11], [590, 11], [790, 11]], |
|
[], |
|
[[10, 7], [190, 7], [230, 5], [390, 7], [430, 5], [590, 7], [630, 5], [790, 7]], |
|
[[30, 5], [50, 5, "M"], [90, 5, "M"], [130, 5, "M"], [170, 5, "M"]]]], |
|
["F21", 800, [ |
|
[[10, 11], [50, 5, "C"], [215, 5, "C"], [550, 5, "C"], [590, 5], [610, 5, "C"], [750, 5, "C"], [790, 7]], |
|
[[30, 5], [175, 5], [330, 5], [370, 5], [515, 5], [590, 7], [610, 5, "C"], [770, 5]], |
|
[[10, 7], [50, 5, "C"], [155, 5, "C"], [195, 5], [310, 5, "C"], [350, 5], [370, 5, "C"], [610, 5, "C"], [750, 5, "C"], [790, 11]], |
|
[[535, 5], [590, 11], [750, 5, "C"]]]], |
|
["F22", 800, [ |
|
[[10, 7], [50, 5, "C"], [190, 5, "C"], [210, 5], [250, 5, "C"], [490, 5, "C"], [645, 5, "C"], [790, 11]], |
|
[[30, 5], [50, 5, "C"], [210, 7], [285, 5], [430, 5], [470, 5], [625, 5], [770, 5]], |
|
[[10, 11], [50, 5, "C"], [190, 5, "C"], [430, 5, "C"], [450, 5], [585, 5, "C"], [605, 5], [750, 5, "C"], [790, 7]], |
|
[[190, 5, "C"], [210, 11], [265, 5]]]], |
|
["F23", 800, [ |
|
[[10, 11], [155, 5, "C"], [310, 5, "C"], [370, 5, "C"], [590, 5], [610, 5, "C"], [790, 7]], |
|
[[30, 5], [155, 5, "C"], [175, 5], [310, 5, "C"], [330, 5], [570, 5], [590, 5, "C"], [770, 5]], |
|
[[10, 7], [50, 5, "C"], [195, 5], [215, 5, "C"], [350, 5], [550, 5, "C"], [750, 5, "C"], [790, 11]], |
|
[[50, 5, "C"], [215, 5, "C"], [370, 5, "C"], [550, 5, "C"], [750, 5, "C"]]]], |
|
["F24", 800, [ |
|
[[10, 7], [50, 5, "C"], [210, 5], [430, 5, "C"], [585, 5, "C"], [750, 5, "C"], [790, 11]], |
|
[[30, 5], [50, 5, "C"], [230, 5], [470, 5], [585, 5, "C"], [625, 5], [750, 5, "C"], [770, 5]], |
|
[[10, 11], [190, 5, "C"], [250, 5, "C"], [450, 5], [490, 5, "C"], [605, 5], [645, 5, "C"], [790, 7]], |
|
[[210, 5, "C"], [250, 5, "C"], [430, 5, "C"], [490, 5, "C"], [645, 5, "C"]]]], |
|
["F25", 450, [ |
|
[[30, 5], [260, 5], [440, 5]], |
|
[[10, 5], [50, 5], [220, 5, "C"], [240, 5], [400, 5, "C"], [420, 5]], |
|
[], |
|
[[10, 5], [50, 5], [70, 5, "C"], [260, 5, "C"]]]], |
|
["F26", 430, [ |
|
[[10, 5], [240, 7], [420, 7]], |
|
[[10, 7]], |
|
[[30, 5, "C"], [240, 11], [420, 11]], |
|
[[10, 11], [220, 5], [400, 5]]]], |
|
["F27", 430, [ |
|
[[10, 5], [240, 7], [420, 7]], |
|
[[10, 11], [30, 5, "C"], [200, 5, "C"], [380, 5, "C"]], |
|
[[200, 5, "C"], [240, 11], [420, 11]], |
|
[[10, 7], [220, 5], [240, 5, "C"], [400, 5]]]], |
|
["F28", 450, [ |
|
[[10, 5], [190, 5], [420, 5]], |
|
[[30, 5], [190, 5, "C"], [210, 5], [380, 5, "C"], [400, 5], [440, 5]], |
|
[], |
|
[[50, 5, "C"], [230, 5, "C"], [400, 5], [440, 5]]]], |
|
["F29", 430, [ |
|
[[10, 7], [190, 7], [420, 5]], |
|
[[420, 7]], |
|
[[10, 11], [190, 11], [400, 5, "C"]], |
|
[[30, 5], [210, 5], [420, 11]]]], |
|
["F30", 430, [ |
|
[[10, 7], [190, 7], [420, 5]], |
|
[[190, 5, "C"], [230, 5, "C"], [400, 5, "C"], [420, 11]], |
|
[[10, 11], [190, 11], [230, 5, "C"]], |
|
[[30, 5], [50, 5, "C"], [210, 5], [420, 7]]]], |
|
["F31", 260, [ |
|
[[30, 7], [230, 7]], |
|
[[10, 11], [250, 11]], |
|
[[30, 11], [230, 11]], |
|
[[10, 7], [250, 7]]]], |
|
["F32", 260, [ |
|
[[30, 11], [230, 11]], |
|
[[10, 11], [250, 11]], |
|
[[30, 7], [230, 7]], |
|
[[10, 7], [250, 7]]]], |
|
["F33", 260, [ |
|
[[30, 11], [230, 11]], |
|
[[10, 11], [250, 11]], |
|
[[30, 7], [230, 7]], |
|
[[10, 7], [250, 7]]]], |
|
["F34", 300, [ |
|
[[10, 11], [290, 11]], |
|
[[30, 11], [270, 11]], |
|
[[10, 7], [50, 5, "M"], [100, 5, "M"], [150, 5, "M"], [200, 5, "M"], [250, 5, "M"], [290, 7]], |
|
[[30, 7], [270, 7]]]], |
|
["F35", 260, [ |
|
[[30, 7], [230, 7]], |
|
[[10, 11], [250, 11]], |
|
[[30, 11], [230, 11]], |
|
[[10, 7], [250, 7]]]], |
|
["F36", 260, [ |
|
[[30, 11], [230, 11]], |
|
[[10, 11], [250, 11]], |
|
[[30, 7], [230, 7]], |
|
[[10, 7], [250, 7]]]], |
|
["F37", 260, [ |
|
[[30, 11], [230, 11]], |
|
[[10, 11], [250, 11]], |
|
[[30, 7], [230, 7]], |
|
[[10, 7], [250, 7]]]], |
|
["F38", 380, [ |
|
[[30, 11], [215, 11], [370, 11]], |
|
[[10, 5], [50, 5]], |
|
[[30, 7], [120, 5], [160, 5], [195, 5, "C"], [215, 7], [255, 5], [330, 5], [370, 7]], |
|
[[10, 5], [50, 5]]]], |
|
["F39", 380, [ |
|
[[10, 11], [165, 11], [350, 11]], |
|
[[330, 5], [370, 5]], |
|
[[10, 7], [50, 5], [125, 5], [165, 7], [185, 5, "C"], [220, 5], [260, 5], [350, 7]], |
|
[[330, 5], [370, 5]]]], |
|
["F40", 220, [ |
|
[[10, 5], [210, 5]], |
|
[[110, 5]], |
|
[[10, 5], [210, 5]], |
|
[]]], |
|
["F41", 220, [ |
|
[[10, 5], [210, 5]], |
|
[[110, 5]], |
|
[[10, 5], [210, 5]], |
|
[]]], |
|
["F42", 220, [ |
|
[[10, 5], [210, 5]], |
|
[[110, 5]], |
|
[[10, 5], [210, 5]], |
|
[]]], |
|
["F43", 320, [ |
|
[[10, 5]], |
|
[[80, 11], [155, 5], [175, 11], [195, 5], [290, 11]], |
|
[[10, 5]], |
|
[[80, 7], [175, 7], [290, 7]]]], |
|
["F44", 260, [ |
|
[[30, 7], [130, 7], [230, 7]], |
|
[[10, 11], [250, 11]], |
|
[[30, 11], [110, 5], [130, 11], [150, 5], [230, 11]], |
|
[[10, 7], [250, 7]]]], |
|
["F45", 260, [ |
|
[[30, 7], [130, 7], [230, 7]], |
|
[[10, 7], [250, 7]], |
|
[[30, 11], [130, 11], [230, 11]], |
|
[[10, 11], [250, 11]]]], |
|
["F46", 100, [ |
|
[], |
|
[[15, 11], [50, 5], [90, 5]], |
|
[], |
|
[[15, 11], [50, 5], [90, 5]]]], |
|
["F47", 260, [ |
|
[[30, 11], [130, 11], [230, 11]], |
|
[[10, 11], [250, 11]], |
|
[[30, 7], [130, 7], [230, 7]], |
|
[[10, 7], [250, 7]]]], |
|
["F48", 260, [ |
|
[[30, 11], [130, 11], [230, 11]], |
|
[[10, 7], [250, 7]], |
|
[[30, 7], [130, 7], [230, 7]], |
|
[[10, 11], [250, 11]]]], |
|
["F49", 35, [ |
|
[], |
|
[[10, 11], [25, 5]], |
|
[], |
|
[[10, 11], [25, 5]]]], |
|
["F50", 260, [ |
|
[], |
|
[[10, 7], [130, 11], [250, 7]], |
|
[], |
|
[[10, 11], [130, 11], [250, 11]]]], |
|
["F51", 260, [ |
|
[], |
|
[[10, 11], [250, 11]], |
|
[], |
|
[[10, 7], [250, 7]]]], |
|
["F52", 100, [ |
|
[], |
|
[[15, 11], [70, 11]], |
|
[], |
|
[[15, 11], [70, 7], [90, 5]]]], |
|
["X1", 290, [ |
|
[[10, 11], [280, 11]], |
|
[[30, 7], [50, 5], [145, 11], [240, 5], [260, 7]], |
|
[[10, 7], [85, 5], [100, 5], [170, 11], [190, 5], [280, 7]], |
|
[[30, 11], [45, 5], [65, 5], [85, 5], [125, 5], [145, 11], [165, 5], [205, 5], [225, 5], [245, 5], [260, 11]]]], |
|
["X2", 290, [ |
|
[[10, 11], [280, 11]], |
|
[[30, 11], [45, 5], [65, 5], [85, 5], [125, 5], [145, 11], [165, 5], [205, 5], [225, 5], [245, 5], [260, 11]], |
|
[[10, 7], [85, 5], [170, 11], [280, 7]], |
|
[[30, 7], [50, 5], [145, 11], [240, 5], [260, 7]]]], |
|
["X3", 330, [ |
|
[], |
|
[[10, 5], [320, 5]], |
|
[], |
|
[[10, 5], [320, 5]]]], |
|
["X4", 410, [ |
|
[[10, 5], [30, 5], [65, 5], [105, 5], [145, 5], [185, 5], [225, 5], [265, 5], [305, 5], [345, 5], [380, 5], [400, 5]], |
|
[[10, 7], [400, 7]], |
|
[], |
|
[[10, 11], [400, 11]]]], |
|
["X5", 410, [ |
|
[[10, 5], [30, 5], [65, 5], [105, 5], [145, 5], [185, 5], [225, 5], [265, 5], [305, 5], [345, 5], [380, 5], [400, 5]], |
|
[[10, 11], [400, 11]], |
|
[], |
|
[[10, 7], [400, 7]]]], |
|
["X6", 105, [ |
|
[[30, 5]], |
|
[[10, 5]], |
|
[[10, 5], [90, 11]], |
|
[]]], |
|
["X7", 105, [ |
|
[[30, 5]], |
|
[], |
|
[[10, 5], [90, 11]], |
|
[[10, 5]]]], |
|
["X8", 105, [ |
|
[[30, 5]], |
|
[[10, 5]], |
|
[[10, 5], [90, 11]], |
|
[]]], |
|
["X9", 105, [ |
|
[[30, 5]], |
|
[], |
|
[[10, 5], [90, 11]], |
|
[[10, 5]]]], |
|
["X10", 410, [ |
|
[[50, 7], [360, 7]], |
|
[[10, 8.5], [400, 8.5]], |
|
[[50, 5], [360, 5]], |
|
[[10, 11], [400, 11]]]], |
|
["X11", 410, [ |
|
[[50, 7], [360, 7]], |
|
[[10, 11], [400, 11]], |
|
[[50, 5], [360, 5]], |
|
[[10, 8.5], [400, 8.5]]]], |
|
["X12", 370, [ |
|
[[10, 11], [360, 11]], |
|
[[50, 7], [320, 7]], |
|
[[10, 8.5], [360, 8.5]], |
|
[[50, 5], [320, 5]]]], |
|
["X13", 370, [ |
|
[[10, 7], [360, 7]], |
|
[[50, 7], [320, 7]], |
|
[[10, 7], [360, 7]], |
|
[[50, 7], [320, 7]]]], |
|
["X14", 290, [ |
|
[for (i = [0 : 7]) [10 + 270/7 * i, 5]], |
|
[], |
|
[[10, 5], [280, 5]], |
|
[]]], |
|
["X15", 290, [ |
|
[for (i = [0 : 7]) [10 + 270/7 * i, 5]], |
|
[], |
|
[[10, 5], [280, 5]], |
|
[]]], |
|
["X16", 290, [ |
|
[for (i = [0 : 7]) [10 + 270/7 * i, 5]], |
|
[], |
|
[[10, 5], [280, 5]], |
|
[]]], |
|
["X17", 290, [ |
|
[for (i = [0 : 7]) [10 + 270/7 * i, 5]], |
|
[], |
|
[[10, 5], [280, 5]], |
|
[]]], |
|
["X18", 290, [ |
|
[for (i = [0 : 7]) [10 + 270/7 * i, 5]], |
|
[], |
|
[[10, 5], [280, 5]], |
|
[]]], |
|
["X19", 290, [ |
|
[for (i = [0 : 7]) [10 + 270/7 * i, 5]], |
|
[], |
|
[[10, 5], [280, 5]], |
|
[]]], |
|
["X20", 290, [ |
|
[for (i = [0 : 7]) [10 + 270/7 * i, 5]], |
|
[], |
|
[[10, 5], [280, 5]], |
|
[]]], |
|
["X21", 290, [ |
|
[for (i = [0 : 7]) [10 + 270/7 * i, 5]], |
|
[], |
|
[[10, 5], [280, 5]], |
|
[]]], |
|
["X22", 290, [ |
|
[for (i = [0 : 7]) [10 + 270/7 * i, 5]], |
|
[], |
|
[[10, 5], [280, 5]], |
|
[]]], |
|
["Y1", 760, [ |
|
[], |
|
[[30, 5], [180, 7], [220, 5], [270, 5], [350, 11], [430, 5], [480, 5], [520, 7], [640, 5], [680, 5], [710, 7], [750, 7]], |
|
[[305, 5], [395, 5]], |
|
[[180, 11], [350, 11], [520, 11], [710, 11], [750, 11]]]], |
|
["Y2", 760, [ |
|
[], |
|
[[180, 11], [350, 11], [520, 11], [710, 11], [750, 11]], |
|
[], |
|
[[30, 5], [180, 7], [220, 5], [270, 5], [350, 11], [430, 5], [480, 5], [520, 7], [640, 5], [680, 5], [710, 7], [750, 7]]]], |
|
["Y3", 160, [ |
|
[[80, 5]], |
|
[[10, 5], [150, 5]], |
|
[[80, 5]], |
|
[[80, 5]]]], |
|
["Y4", 160, [ |
|
[[80, 5]], |
|
[[10, 5], [150, 5]], |
|
[], |
|
[[10, 5], [150, 5]]]], |
|
["Y5", 120, [ |
|
[[60, 5]], |
|
[[10, 5], [110, 5]], |
|
[], |
|
[[10, 5], [110, 5]]]], |
|
["Y6", 180, [ |
|
[], |
|
[[10, 11], [70, 5], [90, 11], [110, 5], [170, 11]], |
|
[[30, 5], [115, 11]], |
|
[[10, 7], [90, 11], [170, 7]]]], |
|
["Y7", 180, [ |
|
[], |
|
[[10, 7], [90, 11], [170, 7]], |
|
[[30, 5], [115, 11]], |
|
[[10, 11], [70, 5], [90, 11], [110, 5], [170, 11]]]], |
|
["Y8", 160, [ |
|
[[80, 5]], |
|
[[10, 5], [150, 5]], |
|
[], |
|
[[10, 5], [150, 5]]]], |
|
["Y9", 160, [ |
|
[[80, 5]], |
|
[[10, 5], [150, 5]], |
|
[], |
|
[[10, 5], [150, 5]]]], |
|
["Y10", 160, [ |
|
[[80, 5]], |
|
[[10, 5], [150, 5]], |
|
[], |
|
[[10, 5], [150, 5]]]], |
|
["Y11", 740, [ |
|
[[10, 11], [200, 11], [350, 11], [500, 11], [660, 11], [730, 11]], |
|
[], |
|
[[10, 7], [200, 7], [350, 7], [500, 7], [660, 7], [730, 7]], |
|
[]]], |
|
["Y12", 75, [ |
|
[[10, 11], [65, 11]], |
|
[[65, 5]], |
|
[[10, 7], [65, 7]], |
|
[]]], |
|
["Y13", 75, [ |
|
[[10, 11], [65, 11]], |
|
[], |
|
[[10, 7], [65, 7]], |
|
[[65, 5]]]], |
|
["Y14", 260, [ |
|
[], |
|
[[60, 5], [130, 11], [200, 5]], |
|
[], |
|
[[60, 5], [130, 11], [200, 5]]]], |
|
["Y15", 75, [ |
|
[[10, 11], [65, 11]], |
|
[[65, 5]], |
|
[[10, 7], [65, 7]], |
|
[]]], |
|
["Y16", 190, [ |
|
[[125, 11], [180, 11]], |
|
[], |
|
[[125, 7], [180, 7]], |
|
[[180, 5]]]], |
|
["Y17", 140, [ |
|
[[10, 5]], |
|
[[10, 7], [40, 11], [130, 5]], |
|
[], |
|
[[10, 11]]]], |
|
["Y18", 140, [ |
|
[[10, 5]], |
|
[[10, 11]], |
|
[], |
|
[[10, 7], [40, 11], [130, 5]]]], |
|
["Y19", 200, [ |
|
[[10, 11], [190, 11]], |
|
[[50, 7], [150, 7]], |
|
[[10, 8.5], [190, 8.5]], |
|
[[50, 5], [150, 5]]]], |
|
["Y20", 160, [ |
|
[[10, 7], [150, 7]], |
|
[[30, 7], [130, 7]], |
|
[[10, 11], [150, 11]], |
|
[[30, 7], [130, 7]]]], |
|
["Y21", 140, [ |
|
[[10, 5]], |
|
[[10, 11]], |
|
[], |
|
[[10, 7], [130, 5], [40, 11]]]], |
|
["Y22", 140, [ |
|
[[10, 5]], |
|
[[10, 7], [40, 11], [130, 5]], |
|
[], |
|
[[10, 11]]]], |
|
["Y23", 200, [ |
|
[[10, 8.5], [190, 8.5]], |
|
[[50, 7], [150, 7]], |
|
[[10, 11], [190, 11]], |
|
[[50, 5], [150, 5]]]], |
|
["Y24", 160, [ |
|
[[10, 11], [150, 11]], |
|
[[30, 7], [130, 7]], |
|
[[10, 7], [150, 7]], |
|
[[30, 7], [130, 7]]]], |
|
["Y25", 160, [ |
|
[[10, 11], [150, 11]], |
|
[[50, 5], [110, 5]], |
|
[[10, 8.5], [150, 8.5]], |
|
[[50, 7], [110, 7]]]], |
|
["Y26", 160, [ |
|
[[10, 7], [150, 7]], |
|
[[50, 7], [110, 7]], |
|
[[10, 11], [150, 11]], |
|
[[50, 7], [110, 7]]]], |
|
["Y27", 100, [ |
|
[[15, 11], [70, 11]], |
|
[], |
|
[[15, 11], [70, 7], [90, 5]], |
|
[]]], |
|
|
|
["Z1", 310, [ |
|
[[10, 7], [50, 5], [70, 5], [110, 5], [200, 5], [240, 5], [260, 5], [300, 7]], |
|
[for (i = [0 : 5]) [30 + 250/5 * i, 5]], |
|
[[10, 11], [300, 11]], |
|
[[130, 11], [220, 5]]]], |
|
["Z2", 310, [ |
|
[[10, 11], [155, 11], [300, 11]], |
|
[for (i = [0 : 5]) [30 + 250/5 * i, 5]], |
|
[[10, 7], [50, 5], [70, 5], [110, 5], [155, 11], [200, 5], [240, 5], [260, 5], [300, 7]], |
|
[[110, 5], [130, 11], [200, 5], [220, 5]]]], |
|
["Z3", 180, [ |
|
[for (i = [0 : 3]) [20 + 140/3 * i, 5]], |
|
[[10, 5], [170, 5]], |
|
[], |
|
[[10, 5], [170, 5]]]], |
|
["Z4", 180, [ |
|
[for (i = [0 : 3]) [20 + 140/3 * i, 5]], |
|
[[10, 5], [170, 5]], |
|
[], |
|
[[10, 5], [170, 5]]]], |
|
["Z5", 180, [ |
|
[for (i = [0 : 3]) [20 + 140/3 * i, 5]], |
|
[[10, 5], [170, 5]], |
|
[], |
|
[[10, 5], [170, 5]]]], |
|
["Z6", 180, [ |
|
[for (i = [0 : 3]) [20 + 140/3 * i, 5]], |
|
[[10, 5], [170, 5]], |
|
[], |
|
[[10, 5], [170, 5]]]], |
|
["Z7", 140, [ |
|
[], |
|
[[10, 11], [130, 11]], |
|
[[10, 5]], |
|
[[10, 7], [40, 11], [130, 7]]]], |
|
["Z8", 140, [ |
|
[[10, 5]], |
|
[[10, 11], [130, 11]], |
|
[], |
|
[[10, 7], [40, 11], [130, 7]]]], |
|
["Z9", 140, [ |
|
[[10, 5]], |
|
[[10, 7], [40, 11], [130, 7]], |
|
[], |
|
[[10, 11], [130, 11]]]], |
|
["Z10", 140, [ |
|
[], |
|
[[10, 7], [40, 11], [130, 7]], |
|
[[10, 5]], |
|
[[10, 11], [130, 11]]]], |
|
["Z11", 180, [ |
|
[[10, 5], [170, 5]], |
|
[[50, 7], [130, 7]], |
|
[], |
|
[[50, 7], [130, 7]]]], |
|
["Z12", 180, [ |
|
[[10, 5], [170, 5]], |
|
[[50, 7], [130, 7]], |
|
[], |
|
[[50, 7], [130, 7]]]], |
|
["Z13", 180, [ |
|
[[10, 8.5], [170, 8.5]], |
|
[[50, 7], [130, 7]], |
|
[[10, 11], [170, 11]], |
|
[[50, 5], [130, 5]]]], |
|
["Z14", 180, [ |
|
[[10, 8.5], [170, 8.5]], |
|
[[50, 5], [130, 5]], |
|
[[10, 11], [170, 11]], |
|
[[50, 7], [130, 7]]]], |
|
["Z15", 220, [ |
|
[[10, 7], [210, 7]], |
|
[[50, 7], [170, 7]], |
|
[[10, 11], [210, 11]], |
|
[[50, 7], [170, 7]]]], |
|
["Z16", 220, [ |
|
[[10, 11], [210, 11]], |
|
[[50, 5], [170, 5]], |
|
[[10, 8.5], [210, 8.5]], |
|
[[50, 7], [170, 7]]]]]; |
|
|
|
// id, length, [[drill position, drill diameter], ...] |
|
CROSS_BEAMS = [ |
|
["C1", 293, [[7.5, 7], [146.5, 5], [285.5, 7]]], |
|
["C2", 293, [[7.5, 7], [146.5, 7], [285.5, 7]]], |
|
["C3", 293, [[7.5, 7], [146.5, 5], [285.5, 7]]], |
|
["C4", 293, [[7.5, 7], [146.5, 7], [285.5, 7]]], |
|
["C5", 293, [[7.5, 7], [146.5, 5], [285.5, 7]]], |
|
["C6", 293, [[7.5, 7], [146.5, 7], [285.5, 7]]], |
|
["C7", 293, [[7.5, 7], [146.5, 5], [285.5, 7]]], |
|
["C8", 293, [[7.5, 7], [146.5, 7], [285.5, 7]]], |
|
["C9", 298, [[7.5, 7], [149, 5], [290.5, 7]]], |
|
["C10", 298, [[7.5, 7], [149, 7], [290.5, 7]]], |
|
["C11", 298, [[7.5, 7], [149, 5], [290.5, 7]]], |
|
["C12", 298, [[7.5, 7], [149, 7], [290.5, 7]]], |
|
["C13", 298, [[7.5, 7], [149, 5], [290.5, 7]]], |
|
["C14", 298, [[7.5, 7], [149, 7], [290.5, 7]]], |
|
["C15", 298, [[7.5, 7], [149, 7], [290.5, 7]]], |
|
["C16", 298, [[7.5, 7], [149, 7], [290.5, 7]]], |
|
["C17", 298, [[7.5, 7], [149, 7], [290.5, 7]]], |
|
["C18", 298, [[7.5, 7], [149, 7], [290.5, 7]]], |
|
["C19", 298, [[7.5, 7], [149, 7], [290.5, 7]]], |
|
["C20", 298, [[7.5, 7], [149, 7], [290.5, 7]]], |
|
["C21", 259, [[7.5, 7], [129.5, 5], [251.5, 7]]], |
|
["C22", 259, [[7.5, 7], [129.5, 7], [251.5, 7]]], |
|
["C23", 259, [[7.5, 7], [129.5, 5], [251.5, 7]]], |
|
["C24", 259, [[7.5, 7], [129.5, 7], [251.5, 7]]], |
|
["C25", 259, [[7.5, 7], [129.5, 5], [251.5, 7]]], |
|
["C26", 259, [[7.5, 7], [129.5, 7], [251.5, 7]]], |
|
["C27", 259, [[7.5, 7], [129.5, 7], [251.5, 7]]], |
|
["C28", 259, [[7.5, 7], [129.5, 5], [251.5, 7]]], |
|
["C29", 259, [[7.5, 7], [129.5, 7], [251.5, 7]]], |
|
["C30", 259, [[7.5, 7], [129.5, 5], [251.5, 7]]], |
|
["C31", 259, [[7.5, 7], [129.5, 7], [251.5, 7]]], |
|
["C32", 259, [[7.5, 7], [129.5, 5], [251.5, 7]]], |
|
["C33", 259, [[7.5, 7], [129.5, 7], [251.5, 7]]], |
|
["C34", 259, [[7.5, 7], [129.5, 5], [251.5, 7]]], |
|
["C35", 265, [[7.5, 7], [132.5, 7], [257.5, 7]]], |
|
["C36", 265, [[7.5, 7], [132.5, 5], [257.5, 7]]], |
|
["C37", 259, [[7.5, 7], [129.5, 5], [251.5, 7]]], |
|
["C38", 259, [[7.5, 7], [129.5, 7], [251.5, 7]]], |
|
["C39", 277, [[7.5, 7], [138.5, 7], [269.5, 7]]], |
|
["C40", 277, [[7.5, 7], [138.5, 5], [269.5, 7]]], |
|
["C41", 223, [[7.5, 7], [111.5, 5], [215.5, 7]]], |
|
["C42", 223, [[7.5, 7], [111.5, 7], [215.5, 7]]], |
|
["C43", 219, [[7.5, 7], [109.5, 5], [211.5, 7]]], |
|
["C44", 219, [[7.5, 7], [109.5, 7], [211.5, 7]]], |
|
["C45", 270, [[7.5, 7], [135, 7], [262.5, 7]]], |
|
["C46", 270, [[7.5, 7], [135, 5], [262.5, 7]]], |
|
["C47", 243, [[7.5, 7], [121.5, 7], [235.5, 7]]], |
|
["C48", 243, [[7.5, 7], [121.5, 5], [235.5, 7]]], |
|
["C49", 223, [[7.5, 7], [111.5, 7], [215.5, 7]]], |
|
["C50", 223, [[7.5, 7], [111.5, 5], [215.5, 7]]], |
|
["C51", 219, [[7.5, 7], [109.5, 7], [211.5, 7]]], |
|
["C52", 219, [[7.5, 7], [109.5, 5], [211.5, 7]]], |
|
["C53", 270, [[7.5, 7], [135, 7], [262.5, 7]]], |
|
["C54", 270, [[7.5, 7], [135, 5], [262.5, 7]]], |
|
["C55", 243, [[7.5, 7], [121.5, 5], [235.5, 7]]], |
|
["C56", 243, [[7.5, 7], [121.5, 7], [235.5, 7]]], |
|
["C57", 277, [[7.5, 7], [269.5, 7]]], |
|
["C58", 245, [[7.5, 7], [237.5, 7]]], |
|
["C59", 277, [[7.5, 7], [269.5, 7]]], |
|
["C60", 245, [[7.5, 7], [237.5, 7]]], |
|
["C61", 277, [[7.5, 7], [138.5, 5], [269.5, 7]]], |
|
["C62", 277, [[7.5, 7], [138.5, 7], [269.5, 7]]], |
|
["C63", 273, [[7.5, 7], [136.5, 5], [265.5, 7]]], |
|
["C64", 273, [[7.5, 7], [136.5, 7], [265.5, 7]]], |
|
["C65", 315, [[7.5, 7], [157.5, 5], [307.5, 7]]], |
|
["C66", 315, [[7.5, 7], [157.5, 7], [307.5, 7]]], |
|
["C67", 303, [[7.5, 7], [151.5, 7], [295.5, 7]]], |
|
["C68", 303, [[7.5, 7], [151.5, 5], [295.5, 7]]], |
|
["C69", 295, [[7.5, 7], [147.5, 7], [287.5, 7]]], |
|
["C70", 295, [[7.5, 7], [147.5, 5], [287.5, 7]]], |
|
["T1", 410, [[10, 7], [45, 7], [65, 7], [85, 7], [105, 7], [125, 7], [145, 7], [165, 7], [185, 7], [205, 7], [225, 7], [245, 7], [265, 7], [285, 7], [305, 7], [325, 7], [345, 7], [365, 7], [400, 7]]], |
|
["T2", 410, [[10, 7], [45, 7], [65, 7], [85, 7], [105, 7], [125, 7], [145, 7], [165, 7], [185, 7], [205, 7], [225, 7], [245, 7], [265, 7], [285, 7], [305, 7], [325, 7], [345, 7], [365, 7], [400, 7]]]]; |
|
|
|
function get(db, key) = [for (v = db) if (v[0] == key) v][0]; |
|
|
|
function join(strings) = |
|
len(strings) == 0 |
|
? "" |
|
: len(strings) == 1 |
|
? strings[0] |
|
: str(strings[0], join([for (i = [1 : len(strings) - 1]) strings[i]])); |
|
|
|
function split_label(label) = let ( |
|
left = join([ |
|
for (i = [0 : len(label) - 1]) |
|
if (len([ |
|
for (j = [0 : i]) |
|
if (label[j] == " ") j]) == i + 1) |
|
label[i]]), |
|
right = join([ |
|
for (i = [0 : len(label) - 1]) |
|
if (len([ |
|
for (j = [0 : i]) |
|
if (label[len(label) - j - 1] == " ") j]) == i + 1) |
|
label[len(label) - i - 1]]), |
|
id = join([ |
|
for (i = [0 : len(label) - 1]) |
|
if (len(left) <= i && i < len(label) - len(right)) label[i]])) [ |
|
left, id, right]; |
|
|
|
function has_flag(flags, flag) = len([for (i = [0 : len(flags) - 1]) if (flags[i] == flag) i]) != 0; |
|
|
|
module label(label, offset) { |
|
label = split_label(label); |
|
left = label[0]; |
|
id = label[1]; |
|
right = label[2]; |
|
lalign = len(left) > 0 && len(right) > 0 ? "center" : len(right) > 0 ? "right" : "left"; |
|
ralign = len(left) > 0 && len(right) > 0 ? "center" : len(right) > 0 ? "left" : "right"; |
|
translate([0, 0, offset]) linear_extrude(0.1) |
|
text(join([left, id, right]), 20, halign = lalign, valign = "center"); |
|
rotate([0, 180, 0]) translate([0, 0, offset]) linear_extrude(1) |
|
text(join([right, id, left]), 20, halign = ralign, valign = "center"); |
|
} |
|
|
|
module square_tube(label) { |
|
id = split_label(label)[1]; |
|
entry = get(SQUARE_TUBES, id); |
|
length = entry[1]; |
|
difference() { |
|
outer = 20; |
|
inner = outer - SQUARE_TUBE_WALL_THICKNESS * 2; |
|
cube([length, outer, outer], center=true); |
|
cube([length + 1, inner, inner], center=true); |
|
if (SHOW_DRILLHOLES) for (side = [0, 1, 2, 3]) |
|
rotate([90 * side, 0, 0]) |
|
for (h = entry[2][side]) { |
|
p = h[0]; |
|
r = h[1]/2; |
|
flags = h[2]; |
|
if (flags == undef || flags == "" || |
|
has_flag(flags, "M") && WITH_MOUNTING_PLATES || |
|
has_flag(flags, "C") && WITH_CROSS_BEAMS) { |
|
translate([p - length/2, 0, inner/2 + SQUARE_TUBE_WALL_THICKNESS/2]) |
|
cylinder($fn=DRILL_FRAGMENTS, h=SQUARE_TUBE_WALL_THICKNESS + 1, r1=r, r2=r, center=true); |
|
} |
|
}; |
|
} |
|
if (SHOW_LABELS) color([1.0, 0.0, 0.0, 1.0]) label(label, 10); |
|
} |
|
|
|
module ball_bearing(inner, outer, width) { |
|
if (SHOW_BALL_BEARINGS) difference() { |
|
color([0.0, 1.0, 0.0, 1.0]) cylinder($fn=BALL_BEARING_FRAGMENTS, h=width, r1=outer/2, r2=outer/2, center=true); |
|
cylinder($fn=BALL_BEARING_FRAGMENTS, h=width+1, r1=inner/2, r2=inner/2, center=true); |
|
} |
|
} |
|
|
|
module cross_beam(label) { |
|
id = split_label(label)[1]; |
|
if (id[0] == "C" && WITH_CROSS_BEAMS && SHOW_CROSS_BEAMS || |
|
id[0] != "C") { |
|
entry = get(CROSS_BEAMS, id); |
|
length = entry[1]; |
|
difference() { |
|
cube([length, 20, 4], center=true); |
|
if (SHOW_DRILLHOLES) for (h = entry[2]) { |
|
p = h[0]; |
|
r = h[1]/2; |
|
translate([p - length/2, 0, 0]) |
|
cylinder($fn=DRILL_FRAGMENTS, h=5, r1=r, r2=r, center=true); |
|
} |
|
} |
|
if (SHOW_LABELS) color([0.0, 1.0, 1.0, 1.0]) label(label, 2); |
|
} |
|
} |
|
|
|
//Z axis +++++++++++++++++++++++++++++++++++++++++++++++++++++ |
|
if (SHOW_Z_AXIS) translate([SHOW_ASSEMBLED ? 0 : 1000,-75,370]) { |
|
translate([0,0,0]) square_tube(" Z1"); |
|
translate([0,0,200]) square_tube(" Z2"); |
|
translate([-125,0,100]) rotate([180, 90, 90]) square_tube("Z3 "); |
|
translate([-65,0,100]) rotate([180, 90, 90]) square_tube("Z4 "); |
|
translate([65,0,100]) rotate([180, 90, 90]) square_tube("Z5 "); |
|
translate([125,0,100]) rotate([180, 90, 90]) square_tube("Z6 "); |
|
|
|
//Ball bearings middle guide |
|
translate([25,30,200]) rotate([90,90,0]) ball_bearing(10, 30, 10); |
|
translate([-25,30,200]) rotate([90,90,0]) ball_bearing(10, 30, 10); |
|
translate([25,30,0]) rotate([90,90,0]) ball_bearing(10, 30, 10); |
|
translate([-25,30,0]) rotate([90,90,0]) ball_bearing(10, 30, 10); |
|
|
|
//Ball bearing mount 1 |
|
translate([145,60,20]) rotate([0, 0, 90]) square_tube(" Z7 "); |
|
|
|
//Ball bearing |
|
translate([125,30,20]) rotate([90,0,90]) ball_bearing(10, 30, 10); |
|
translate([125,80,20]) rotate([90,0,90]) ball_bearing(10, 30, 10); |
|
|
|
//Ball bearing mount 2 |
|
translate([145,60,180]) rotate([0, 0, 90]) square_tube(" Z8 "); |
|
|
|
//Ball bearing |
|
translate([125,30,180]) rotate([90,0,90]) ball_bearing(10, 30, 10); |
|
translate([125,80,180]) rotate([90,0,90]) ball_bearing(10, 30, 10); |
|
|
|
translate([-125,120,100]) rotate([270, 90, 90]) square_tube(" Z12 "); |
|
translate([-125,80,100]) rotate([270, 90, 90]) square_tube(" Z13 "); |
|
|
|
//Ball bearing mount 3 |
|
translate([-145,60,180]) rotate([0, 0, 90]) square_tube(" Z9 "); |
|
|
|
//Ball bearing |
|
translate([-125,30,180]) rotate([90,0,90]) ball_bearing(10, 30, 10); |
|
translate([-125,80,180]) rotate([90,0,90]) ball_bearing(10, 30, 10); |
|
|
|
//Ball bearing mount 4 |
|
translate([-145,60,20]) rotate([0, 0, 90]) square_tube(" Z10 "); |
|
|
|
//Ball bearing |
|
translate([-125,30,20]) rotate([90,0,90]) ball_bearing(10, 30, 10); |
|
translate([-125,80,20]) rotate([90,0,90]) ball_bearing(10, 30, 10); |
|
|
|
translate([125,120,100]) rotate([90, 90, 90]) square_tube(" Z11 "); |
|
translate([125,80,100]) rotate([90, 90, 90]) square_tube(" Z14 "); |
|
translate([65,30,100]) rotate([180, 90, 90]) square_tube("Z15 "); |
|
translate([25,30,100]) rotate([180, 90, 90]) square_tube("Z16 "); |
|
}//End Z axis ----------------------------------------------- |
|
|
|
|
|
//X axis ++++++++++++++++++++++++++++++++++++++++++++++++++ |
|
if (SHOW_X_AXIS) translate([SHOW_ASSEMBLED ? -125 : 877,SHOW_ASSEMBLED ? 10 : -490,200]) { |
|
translate([175,0,10]) rotate([0, 0, 90]) square_tube("X1 "); |
|
translate([-175,0,10]) rotate([0, 0, 90]) square_tube("X2 "); |
|
translate([0,0,10]) square_tube("X3 "); |
|
translate([0,135,-10]) square_tube("X4 "); |
|
translate([0,-135,-10]) square_tube("X5 "); |
|
|
|
//Ball bearing |
|
translate([-175,25,-20]) ball_bearing(10, 30, 10); |
|
translate([-175,-25,-20]) ball_bearing(10, 30, 10); |
|
translate([175,25,-20]) ball_bearing(10, 30, 10); |
|
translate([175,-25,-20]) ball_bearing(10, 30, 10); |
|
|
|
//Ball bearing mount 1 |
|
translate([-195,115,-32.5]) rotate([0, 90, 90]) square_tube(" X6"); |
|
|
|
//Ball bearing |
|
translate([-195,95,-20]) rotate([90,90,0]) ball_bearing(10, 30, 10); |
|
translate([-195,95,-70]) rotate([90,90,0]) ball_bearing(10, 30, 10); |
|
|
|
//Ball bearing mount 2 |
|
translate([195,115,-32.5]) rotate([0, 90, 90]) square_tube(" X7"); |
|
|
|
//Ball bearing |
|
translate([195,95,-20]) rotate([90,90,0]) ball_bearing(10, 30, 10); |
|
translate([195,95,-70]) rotate([90,90,0]) ball_bearing(10, 30, 10); |
|
|
|
//Ball bearing mount 3 |
|
translate([195,-115,-32.5]) rotate([180, 90, 90]) square_tube(" X8"); |
|
|
|
//Ball bearing |
|
translate([195,-95,-20]) rotate([90,90,0]) ball_bearing(10, 30, 10); |
|
translate([195,-95,-70]) rotate([90,90,0]) ball_bearing(10, 30, 10); |
|
|
|
//Ball bearing mount 4 |
|
translate([-195,-115,-32.5]) rotate([180, 90, 90]) square_tube(" X9"); |
|
|
|
//Ball bearing |
|
translate([-195,-95,-20]) rotate([90,90,0]) ball_bearing(10, 30, 10); |
|
translate([-195,-95,-70]) rotate([90,90,0]) ball_bearing(10, 30, 10); |
|
|
|
translate([0,-95,-20]) square_tube("X10 "); |
|
translate([0,95,-20]) square_tube("X11 "); |
|
translate([0,-25,-20]) square_tube("X12 "); |
|
translate([0,-60,-20]) square_tube("X13 "); |
|
|
|
//Table |
|
translate([0,135,38]) cross_beam("T1 "); |
|
translate([0,-135,38]) cross_beam("T2 "); |
|
translate([160,0,50]) rotate([0, 0, 90]) square_tube("X14 "); |
|
translate([120,0,50]) rotate([0, 0, 90]) square_tube("X15 "); |
|
translate([80,0,50]) rotate([0, 0, 90]) square_tube("X16 "); |
|
translate([40,0,50]) rotate([0, 0, 90]) square_tube("X17 "); |
|
translate([0,0,50]) rotate([0, 0, 90]) square_tube("X18 "); |
|
translate([-40,0,50]) rotate([0, 0, 90]) square_tube("X19 "); |
|
translate([-80,0,50]) rotate([0, 0, 90]) square_tube("X20 "); |
|
translate([-120,0,50]) rotate([0, 0, 90]) square_tube("X21 "); |
|
translate([-160,0,50]) rotate([0, 0, 90]) square_tube("X22 "); |
|
}//End X-axis --------------------------------------------------- |
|
|
|
//Y axis ++++++++++++++++++++++++++++++++++++++++++++++++++ |
|
if (SHOW_Y_AXIS) translate([SHOW_ASSEMBLED ? 0 : 1000,10,155]) { |
|
translate([30,90,0]) square_tube("Y1 "); |
|
translate([30,-90,0]) square_tube("Y2 "); |
|
translate([20,0,20]) square_tube("Y11 "); |
|
|
|
//Ladder |
|
translate([-340,0,0]) rotate([0, 0, 90]) square_tube("Y3 "); |
|
translate([-150,0,0]) rotate([0, 0, 90]) square_tube("Y4 "); |
|
translate([0,0,0]) rotate([0, 0, 90]) square_tube("Y5 "); |
|
translate([0,70,0]) square_tube(" Y6 "); |
|
translate([0,-70,0]) square_tube(" Y7 "); |
|
translate([150,0,0]) rotate([0, 0, 90]) square_tube("Y8 "); |
|
translate([310,0,0]) rotate([0, 0, 90]) square_tube("Y9 "); |
|
translate([380,0,0]) rotate([0, 0, 90]) square_tube("Y10 "); |
|
|
|
//Free end thread |
|
translate([-360,0,20]) rotate([90, 90, 270]) square_tube(" Y27 "); |
|
|
|
//Ball bearing |
|
translate([-373,0,55]) rotate([90,0,90]) ball_bearing(6, 19, 6); |
|
|
|
//Fixed end thread |
|
translate([380,0,55]) rotate([0, 0, 90]) square_tube("Y14 "); |
|
translate([400,70,85]) rotate([90, 90, 90]) square_tube("Y16"); |
|
translate([400,-70,27.5]) rotate([90, 90, 90]) square_tube(" Y15 "); |
|
translate([360,70,27.5]) rotate([90, 90, 270]) square_tube(" Y12 "); |
|
translate([360,-70,27.5]) rotate([90, 90, 270]) square_tube(" Y13 "); |
|
|
|
//Ball bearing |
|
translate([367,0,55]) rotate([90,0,90]) ball_bearing(6, 19, 6); |
|
translate([393,0,55]) rotate([90,0,90]) ball_bearing(6, 19, 6); |
|
|
|
//Ball bearing mount 1 |
|
translate([-170,70,-60]) rotate([90, 90, 180]) square_tube(" Y17 "); |
|
|
|
//Ball bearing |
|
translate([-150,70,-30]) rotate([90,0,90]) ball_bearing(10, 30, 10); |
|
translate([-150,90,-80]) rotate([90,0,90]) ball_bearing(10, 30, 10); |
|
|
|
//Ball bearing mount 2 |
|
translate([-170,-70,-60]) rotate([90, 90, 0]) square_tube(" Y18 "); |
|
|
|
//Ball bearing |
|
translate([-150,-70,-30]) rotate([90,0,90]) ball_bearing(10, 30, 10); |
|
translate([-150,-90,-80]) rotate([90,0,90]) ball_bearing(10, 30, 10); |
|
|
|
translate([-150,0,-80]) rotate([90, 0, 270]) square_tube(" Y19 "); |
|
translate([-150,0,-120]) rotate([90, 0, 270]) square_tube(" Y20 "); |
|
|
|
//Ball bearing mount 3 |
|
translate([170,-70,-60]) rotate([90, 90, 0]) square_tube(" Y22 "); |
|
|
|
//Ball bearing |
|
translate([150,-70,-30]) rotate([90,0,90]) ball_bearing(10, 30, 10); |
|
translate([150,-90,-80]) rotate([90,0,90]) ball_bearing(10, 30, 10); |
|
|
|
//Ball bearing mount 4 |
|
translate([170,70,-60]) rotate([90, 90, 180]) square_tube(" Y21 "); |
|
|
|
//Ball bearing |
|
translate([150,70,-30]) rotate([90,0,90]) ball_bearing(10, 30, 10); |
|
translate([150,90,-80]) rotate([90,0,90]) ball_bearing(10, 30, 10); |
|
|
|
translate([150,0,-120]) rotate([90, 0, 270]) square_tube(" Y24 "); |
|
translate([150,0,-80]) rotate([90, 0, 270]) square_tube(" Y23 "); |
|
translate([-60,0,-24]) rotate([0, 0, 90]) square_tube("Y26 "); |
|
translate([-25,0,-24]) rotate([0, 0, 90]) square_tube("Y25 "); |
|
|
|
//Ball bearing mount 5 |
|
//Ball bearing |
|
translate([25,70,-25]) ball_bearing(10, 30, 10); |
|
translate([-25,70,-25]) ball_bearing(10, 30, 10); |
|
|
|
//Ball bearing mount 6 |
|
//Ball bearing |
|
translate([25,-70,-25]) ball_bearing(10, 30, 10); |
|
translate([-25,-70,-25]) ball_bearing(10, 30, 10); |
|
}//End Y axis --------------------------------------------------- |
|
|
|
//Main frame +++++++++++++++++++++++++++++++++++++++++++++++++++++ |
|
if (SHOW_MAIN_FRAME) translate([0,0,0]) { |
|
translate([-140,-10,-100]) rotate([90, 0, 270]) square_tube("F1 "); |
|
translate([140,-10,-100]) rotate([90, 0, 90]) square_tube("F2 "); |
|
translate([140,-10,100]) rotate([90, 0, 90]) square_tube("F19 "); |
|
translate([-140,-10,100]) rotate([90, 0, 270]) square_tube("F20 "); |
|
|
|
//Middle guide Y axis |
|
translate([0,-110,120]) rotate([90, 0, 90]) square_tube("F18 "); |
|
|
|
//Fixed end thread Y axis |
|
translate([0,230,155]) square_tube("F50 "); |
|
translate([0,182 + (WITH_CROSS_BEAMS ? 0 : 8),175]) square_tube("F51 "); |
|
|
|
//Ball bearing |
|
translate([0,217,155]) rotate([90,90,0]) ball_bearing(6, 19, 6); |
|
translate([0,243,155]) rotate([90,90,0]) ball_bearing(6, 19, 6); |
|
|
|
//Free end thread Y axis |
|
translate([0,-430,120]) rotate([0, 90, 0]) square_tube(" F52 "); |
|
|
|
//Ball bearing |
|
translate([0,-443,155]) rotate([90,90,0]) ball_bearing(6, 19, 6); |
|
|
|
//Fixed end thread Z axis |
|
translate([0,-40,660]) square_tube(" F44"); |
|
translate([0,0,660]) square_tube(" F45"); |
|
translate([0,-40,700]) square_tube(" F47"); |
|
translate([0,0,700]) square_tube(" F48"); |
|
|
|
translate([0,-40,680]) rotate([90, 0, 90]) square_tube(" F46 "); |
|
|
|
//Ball bearing |
|
translate([0,-75,667]) ball_bearing(6, 19, 6); |
|
translate([0,-75,693]) ball_bearing(6, 19, 6); |
|
|
|
//Free end thread Z axis |
|
translate([0,-67.5,475]) rotate([90, 0, 90]) square_tube(" F49 "); |
|
|
|
//Ball bearing |
|
translate([0,-75,462]) ball_bearing(6, 19, 6); |
|
|
|
//Ladder Z axis |
|
translate([0,-20,360]) square_tube(" F40"); |
|
translate([0,-20,475]) square_tube(" F41"); |
|
translate([0,-20,570]) square_tube(" F42"); |
|
translate([120,-20,520]) rotate([0, 90, 0]) square_tube("F38 "); |
|
translate([-120,-20,520]) rotate([0, 270, 0]) square_tube("F39 "); |
|
|
|
//Middle guide Z axis |
|
translate([0,-40,490]) rotate([0, 90, 0]) square_tube("F43 "); |
|
|
|
//Ladder Y axis |
|
translate([0,-410,100]) square_tube(" F14"); |
|
translate([0,-210,100]) square_tube(" F15"); |
|
translate([0,-10,100]) square_tube(" F16"); |
|
translate([0,190,100]) square_tube(" F17"); |
|
|
|
//Bottom ladder |
|
translate([0,-410,-80]) square_tube(" F3"); |
|
translate([0,-210,-80]) square_tube(" F4"); |
|
translate([0,-10,-80]) square_tube(" F5"); |
|
translate([0,190,-80]) square_tube(" F6"); |
|
translate([0,370,-80]) square_tube(" F7"); |
|
|
|
//vertical ladder |
|
//right |
|
translate([120,-390,0]) rotate([0, 90, 0]) square_tube("F8 "); |
|
translate([120,-190,0]) rotate([0, 90, 0]) square_tube("F9 "); |
|
translate([120,10,0]) rotate([0, 90, 0]) square_tube(" F10 "); |
|
//Left |
|
translate([-120,-390,0]) rotate([0, 270, 0]) square_tube(" F11 "); |
|
translate([-120,-190,0]) rotate([0, 270, 0]) square_tube(" F12 "); |
|
translate([-120,10,0]) rotate([0, 270, 0]) square_tube(" F13 "); |
|
|
|
//Tower |
|
translate([120,390,290]) rotate([0, 90, 0]) square_tube("F23 "); |
|
translate([-120,390,290]) rotate([0, 270, 0]) square_tube("F24 "); |
|
translate([120,210,290]) rotate([0, 90, 0]) square_tube("F21 "); |
|
translate([-120,210,290]) rotate([0, 270, 0]) square_tube("F22 "); |
|
|
|
//Side ladders tower |
|
//right |
|
translate([100,175,680]) rotate([90, 0, 90]) square_tube("F25 "); |
|
translate([100,185,495]) rotate([90, 0, 90]) square_tube("F26 "); |
|
translate([100,185,340]) rotate([90, 0, 90]) square_tube("F27 "); |
|
//Left. . (7,651 bytes) ( |
|
translate([-100,175,680]) rotate([90, 0, 270]) square_tube("F28 "); |
|
translate([-100,185,495]) rotate([90, 0, 270]) square_tube("F29 "); |
|
translate([-100,185,340]) rotate([90, 0, 270]) square_tube("F30 "); |
|
//Rear |
|
translate([0,370,660]) square_tube(" F31 "); |
|
translate([0,370,515]) square_tube(" F32 "); |
|
translate([0,370,360]) square_tube(" F33 "); |
|
translate([0,370,120]) square_tube(" F34 "); |
|
|
|
//Middle ladder |
|
translate([0,190,660]) square_tube(" F35 "); |
|
translate([0,190,515]) square_tube(" F36 "); |
|
translate([0,190,360]) square_tube(" F37 "); |
|
|
|
|
|
//Cross beams |
|
//Rear |
|
|
|
//Hole distance 26,196373795 |
|
translate([0,378,587.5]) rotate([0,23.629377731,0]) rotate([90, 0, 180]) cross_beam("C61 "); |
|
translate([0,402,587.5]) rotate([0,-23.629377731,0]) rotate([90, 0, 180]) cross_beam("C62 "); |
|
|
|
//Hole distance 25,811818998 |
|
translate([0,378,427.5]) rotate([0,21.595310449,0]) rotate([90, 0, 180]) cross_beam("C63 "); |
|
translate([0,402,427.5]) rotate([0,-21.595310449,0]) rotate([90, 0, 180]) cross_beam("C64 "); |
|
|
|
//Hole distance 30 |
|
translate([0,402,230]) rotate([0,36.869897646,0]) rotate([90, 0, 180]) cross_beam("C65 "); |
|
translate([0,406,230]) rotate([0,-36.869897646,0]) rotate([90, 0, 180]) cross_beam("C66 "); |
|
|
|
//Hole distance 28,844410204 |
|
translate([0,402,20]) rotate([0,33.690067526,0]) rotate([90, 0, 180]) cross_beam("C67 "); |
|
translate([0,378,20]) rotate([0,-33.690067526,0]) rotate([90, 0, 180]) cross_beam("C68 "); |
|
|
|
translate([0,194,248]) rotate([0,31.13897244,0]) rotate([90, 0, 0]) cross_beam("C69 "); |
|
translate([0,198,248]) rotate([0,-31.13897244,0]) rotate([90, 0, 0]) cross_beam("C70 "); |
|
|
|
//Center |
|
|
|
//Hole distance 27,784887979 |
|
translate([0,222,10]) rotate([0,30.256437164,0]) rotate([90, 0, 0]) cross_beam("C1 "); |
|
translate([0,198,10]) rotate([0,-30.256437164,0]) rotate([90, 0, 0]) cross_beam("C2 "); |
|
|
|
translate([0,22,10]) rotate([0,30.256437164,0]) rotate([90, 0, 0]) cross_beam("C3 "); |
|
translate([0,-2,10]) rotate([0,-30.256437164,0]) rotate([90, 0, 0]) cross_beam("C4 "); |
|
|
|
translate([0,-178,10]) rotate([0,30.256437164,0]) rotate([90, 0, 0]) cross_beam("C5 "); |
|
translate([0,-202,10]) rotate([0,-30.256437164,0]) rotate([90, 0, 0]) cross_beam("C6 "); |
|
|
|
translate([0,-378,10]) rotate([0,30.256437164,0]) rotate([90, 0, 0]) cross_beam("C7 "); |
|
translate([0,-402,10]) rotate([0,-30.256437164,0]) rotate([90, 0, 0]) cross_beam("C8 "); |
|
|
|
//Left |
|
|
|
//Hole distance 26,177280225 |
|
translate([108,95,577.5]) rotate([28.523118606,0,0]) rotate([90, 0, 90]) cross_beam("C59 "); |
|
|
|
//Hole distance 23,005434141 |
|
translate([88,85,417.5]) rotate([-42.357454706,0,0]) rotate([90, 0, 90]) cross_beam("C60 "); |
|
|
|
//Hole distance 20,838665984 |
|
translate([108,300,587.5]) rotate([30.256437164,0,0]) rotate([90, 0, 90]) cross_beam("C41 "); |
|
translate([132,300,587.5]) rotate([-30.256437164,0,0]) rotate([90, 0, 90]) cross_beam("C42 "); |
|
|
|
//Hole distance 20,353132437 |
|
translate([108,300,427.5]) rotate([27.824096384,0,0]) rotate([90, 0, 90]) cross_beam("C43 "); |
|
translate([132,300,427.5]) rotate([-27.824096384,0,0]) rotate([90, 0, 90]) cross_beam("C44 "); |
|
|
|
//Hole distance 25,455844123 |
|
translate([132,300,230]) rotate([45,0,0]) rotate([90, 0, 90]) cross_beam("C45 "); |
|
translate([108,300,230]) rotate([-45,0,0]) rotate([90, 0, 90]) cross_beam("C46 "); |
|
|
|
//Hole distance 22,803508502 |
|
translate([132,300,10]) rotate([37.874983651,0,0]) rotate([90, 0, 90]) cross_beam("C47 "); |
|
translate([108,300,10]) rotate([-37.874983651,0,0]) rotate([90, 0, 90]) cross_beam("C48 "); |
|
|
|
//Hole distance 24,413111231 |
|
translate([132,110,10]) rotate([34.992020199,0,0]) rotate([90, 0, 90]) cross_beam("C27 "); |
|
translate([108,110,10]) rotate([-34.992020199,0,0]) rotate([90, 0, 90]) cross_beam("C28 "); |
|
|
|
//Hole distance 24,413111231 |
|
translate([132,-90,10]) rotate([34.992020199,0,0]) rotate([90, 0, 90]) cross_beam("C29 "); |
|
translate([108,-90,10]) rotate([-34.992020199,0,0]) rotate([90, 0, 90]) cross_beam("C30 "); |
|
|
|
//Hole distance 24,413111231 |
|
translate([132,-290,10]) rotate([34.992020199,0,0]) rotate([90, 0, 90]) cross_beam("C31 "); |
|
translate([108,-290,10]) rotate([-34.992020199,0,0]) rotate([90, 0, 90]) cross_beam("C32 "); |
|
|
|
//Right |
|
|
|
//Hole distance 26,177280225 |
|
translate([-108,95,577.5]) rotate([28.523118606,0,0]) rotate([90, 0, 90]) cross_beam("C57 "); |
|
|
|
//Hole distance 23,005434141 |
|
translate([-88,85,417.5]) rotate([-42.357454706,0,0]) rotate([90, 0, 90]) cross_beam("C58 "); |
|
|
|
//Hole distance 20,838665984 |
|
translate([-132,300,587.5]) rotate([30.256437164,0,0]) rotate([90, 0, 90]) cross_beam("C49 "); |
|
translate([-108,300,587.5]) rotate([-30.256437164,0,0]) rotate([90, 0, 90]) cross_beam("C50 "); |
|
|
|
//Hole distance 20,353132437 |
|
translate([-132,300,427.5]) rotate([27.824096384,0,0]) rotate([90, 0, 90]) cross_beam("C51 "); |
|
translate([-108,300,427.5]) rotate([-27.824096384,0,0]) rotate([90, 0, 90]) cross_beam("C52 "); |
|
|
|
//Hole distance 25,455844123 |
|
translate([-132,300,230]) rotate([45,0,0]) rotate([90, 0, 90]) cross_beam("C53 "); |
|
translate([-108,300,230]) rotate([-45,0,0]) rotate([90, 0, 90]) cross_beam("C54 "); |
|
|
|
//Hole distance 22,803508502 |
|
translate([-108,300,10]) rotate([37.874983651,0,0]) rotate([90, 0, 90]) cross_beam("C55 "); |
|
translate([-132,300,10]) rotate([-37.874983651,0,0]) rotate([90, 0, 90]) cross_beam("C56 "); |
|
|
|
//Hole distance 24,413111231 |
|
translate([-108,110,10]) rotate([34.992020199,0,0]) rotate([90, 0, 90]) cross_beam("C21 "); |
|
translate([-132,110,10]) rotate([-34.992020199,0,0]) rotate([90, 0, 90]) cross_beam("C22 "); |
|
|
|
//Hole distance 24,413111231 |
|
translate([-108,-90,10]) rotate([34.992020199,0,0]) rotate([90, 0, 90]) cross_beam("C23 "); |
|
translate([-132,-90,10]) rotate([-34.992020199,0,0]) rotate([90, 0, 90]) cross_beam("C24 "); |
|
|
|
//Hole distance 24,413111231 |
|
translate([-108,-290,10]) rotate([34.992020199,0,0]) rotate([90, 0, 90]) cross_beam("C25 "); |
|
translate([-132,-290,10]) rotate([-34.992020199,0,0]) rotate([90, 0, 90]) cross_beam("C26 "); |
|
|
|
|
|
//Horizontal cross beams |
|
|
|
//Hole distance 24,413111231 |
|
translate([0,280,692]) rotate([0,0,55.007979801]) rotate([0, 0, -90]) cross_beam("C33 "); |
|
translate([0,280,668]) rotate([0,0,-55.007979801]) rotate([0, 0, 90]) cross_beam("C34 "); |
|
|
|
translate([0,280,352]) rotate([0,0,55.007979801]) rotate([0, 0, -90]) cross_beam("C37 "); |
|
translate([0,280,328]) rotate([0,0,-55.007979801]) rotate([0, 0, 90]) cross_beam("C38 "); |
|
|
|
//Hole distance 25 |
|
translate([0,95,692]) rotate([0,0,53.130102354]) rotate([0, 0, -90]) cross_beam("C35 "); |
|
translate([0,95,668]) rotate([0,0,-53.130102354]) rotate([0, 0, 90]) cross_beam("C36 "); |
|
|
|
//Hole distance 26,248809497 |
|
translate([0,85,324]) rotate([0,0,49.635463427]) rotate([0, 0, -90]) cross_beam("C39 "); |
|
translate([0,85,328]) rotate([0,0,-49.635463427]) rotate([0, 0, 90]) cross_beam("C40 "); |
|
|
|
//Hole distance 28,284271247 |
|
translate([0,90,88]) rotate([0,0,45]) rotate([0, 0, -90]) cross_beam("C15 "); |
|
translate([0,90,84]) rotate([0,0,-45]) rotate([0, 0, 90]) cross_beam("C16 "); |
|
|
|
translate([0,-110,88]) rotate([0,0,45]) rotate([0, 0, -90]) cross_beam("C17 "); |
|
translate([0,-110,84]) rotate([0,0,-45]) rotate([0, 0, 90]) cross_beam("C18 "); |
|
|
|
translate([0,-310,88]) rotate([0,0,45]) rotate([0, 0, -90]) cross_beam("C19 "); |
|
translate([0,-310,84]) rotate([0,0,-45]) rotate([0, 0, 90]) cross_beam("C20 "); |
|
|
|
//Bottom |
|
|
|
//Hole distance 28,284271247 |
|
translate([0,90,-68]) rotate([0,0,45]) rotate([0, 0, 90]) cross_beam("C9 "); |
|
translate([0,90,-92]) rotate([0,0,-45]) rotate([0, 0, -90]) cross_beam("C10 "); |
|
|
|
translate([0,-110,-68]) rotate([0,0,45]) rotate([0, 0, 90]) cross_beam("C11 "); |
|
translate([0,-110,-92]) rotate([0,0,-45]) rotate([0, 0, -90]) cross_beam("C12 "); |
|
|
|
translate([0,-310,-68]) rotate([0,0,45]) rotate([0, 0, 90]) cross_beam("C13 "); |
|
translate([0,-310,-92]) rotate([0,0,-45]) rotate([0, 0, -90]) cross_beam("C14 "); |
|
} |
Fantastic ! Thanks for sharing this.