From ceca63b8d22f811b0f20f664a5c753866fe28dfa Mon Sep 17 00:00:00 2001 From: TQ Hirsch Date: Thu, 3 Mar 2022 14:14:37 +0100 Subject: [PATCH] Ran openscad-format over everything --- assembly.scad | 90 +++++----- constants.scad | 2 +- lib.scad | 6 +- parts.scad | 448 +++++++++++++++++++++-------------------------- stock_parts.scad | 115 ++++++------ 5 files changed, 290 insertions(+), 371 deletions(-) diff --git a/assembly.scad b/assembly.scad index eb55899..137ac02 100644 --- a/assembly.scad +++ b/assembly.scad @@ -1,43 +1,37 @@ -include ; -include ; +include +include csize = 15; module frame() { - translate([corner_offset, 0, 0]) - rotate([0, 90, 0]) - tslot(xsize - 2 * corner_offset); + translate([ corner_offset, 0, 0 ]) rotate([ 0, 90, 0 ]) + tslot(xsize - 2 * corner_offset); - translate([0, corner_offset, 0]) - rotate([-90, 0, 0]) - tslot(ysize - 2*corner_offset); + translate([ 0, corner_offset, 0 ]) rotate([ -90, 0, 0 ]) + tslot(ysize - 2 * corner_offset); - translate([corner_offset, ysize, 0]) - rotate([0, 90, 0]) - tslot(xsize - 2*corner_offset); + translate([ corner_offset, ysize, 0 ]) rotate([ 0, 90, 0 ]) + tslot(xsize - 2 * corner_offset); - translate([xsize, corner_offset, 0]) - rotate([-90, 0, 0]) - tslot(ysize - 2*corner_offset); + translate([ xsize, corner_offset, 0 ]) rotate([ -90, 0, 0 ]) + tslot(ysize - 2 * corner_offset); } module corners() { - translate([0,0]) flcorner(); - translate([xsize, 0, 0]) frcorner(); - translate([xsize, ysize, 0]) brcorner(); - translate([0, ysize, 0]) blcorner(); + translate([ 0, 0 ]) flcorner(); + translate([ xsize, 0, 0 ]) frcorner(); + translate([ xsize, ysize, 0 ]) brcorner(); + translate([ 0, ysize, 0 ]) blcorner(); } module rails() { frame_offset = yrail_offset; - colorize(stock_color) - { - for (xpos = [frame_offset, xsize - frame_offset]) { + colorize(stock_color) { + for (xpos = [ frame_offset, xsize - frame_offset ]) { rail_len = ysize - corner_offset * 2; - bom_item(printable=false, label = str("steel_bar(d=8mm, len=", rail_len, "mm)")); - translate([xpos, - frame_size / 2 + wall_thickness]) - rotate([-90, 0, 0]) - cylinder(d = rail_diam, h = ysize - corner_offset * 2); + bom_item(printable = false, + label = str("steel_bar(d=8mm, len=", rail_len, "mm)")); + translate([ xpos, frame_size / 2 + wall_thickness ]) rotate([ -90, 0, 0 ]) + cylinder(d = rail_diam, h = ysize - corner_offset * 2); } } } @@ -45,45 +39,39 @@ module rails() { module ysled_rails() { yoff = ysled_rail_spacing / 2; rail_len = xsize - frame_size - yrail_offset * 2; - colorize(stock_color) - for (ypos = [-yoff, yoff]) { - bom_item(printable=false, label = str("steel_bar(d=8mm, len=", rail_len, "mm)")); - translate([frame_size / 2, ypos, 0]) - rotate([0, 90, 0]) - cylinder(d = rail_diam, h = rail_len); + colorize(stock_color) for (ypos = [ -yoff, yoff ]) { + bom_item(printable = false, + label = str("steel_bar(d=8mm, len=", rail_len, "mm)")); + translate([ frame_size / 2, ypos, 0 ]) rotate([ 0, 90, 0 ]) + cylinder(d = rail_diam, h = rail_len); } } - module xsled() { xdiff = sled_xsize / 2 + frame_size / 2; - translate([0, 0, frame_size]) - xsled_frame(); + translate([ 0, 0, frame_size ]) xsled_frame(); } module moving_parts(xpos = cur_xpos, ypos = cur_ypos) { - translate([yrail_offset, cur_ypos, 0]) - ysled_slider(spread = sled_ysize); - - translate([xsize - yrail_offset, cur_ypos, 0]) - rotate([180, 180, 0]) - ysled_slider(spread = sled_ysize); - - translate([yrail_offset, cur_ypos, 0]) - if($preview) ysled_rails(); - - - translate([cur_xpos, cur_ypos, 0]) { - // xsled(); + translate([ yrail_offset, cur_ypos, 0 ]) ysled_slider(spread = sled_ysize); + + translate([ xsize - yrail_offset, cur_ypos, 0 ]) rotate([ 180, 180, 0 ]) + ysled_slider(spread = sled_ysize); + + translate([ yrail_offset, cur_ypos, 0 ]) if ($preview) ysled_rails(); + + translate([ cur_xpos, cur_ypos, 0 ]) { + // xsled(); xsled2(); } } union() { - if($preview) frame(); - if($preview) rails(); + if ($preview) + frame(); + if ($preview) + rails(); corners(); moving_parts(); } - diff --git a/constants.scad b/constants.scad index f8c5705..3c3aac1 100644 --- a/constants.scad +++ b/constants.scad @@ -12,7 +12,7 @@ cur_xpos = 155; // 140..260 cur_ypos = 140; -echo(str("Range = ", [ xsize - xmin * 2, ysize - ymin*2 ])); +echo(str("Range = ", [ xsize - xmin * 2, ysize - ymin * 2 ])); $fs = 1.5; $include_substock = true; diff --git a/lib.scad b/lib.scad index 7f3f2bf..72c4254 100644 --- a/lib.scad +++ b/lib.scad @@ -1,5 +1,5 @@ module bom_item(printable = true, label = "") { - print_label = printable ? " print " : " stock "; - item_label = label == "" ? parent_module(1) : label; - echo(str("BOM:", print_label, item_label)); + print_label = printable ? " print " : " stock "; + item_label = label == "" ? parent_module(1) : label; + echo(str("BOM:", print_label, item_label)); } \ No newline at end of file diff --git a/parts.scad b/parts.scad index 31942c2..2d4063c 100644 --- a/parts.scad +++ b/parts.scad @@ -1,11 +1,11 @@ -include ; -include ; -include ; -include ; +include +include +include +include frame_size = 20; wall_thickness = 2; -corner_size=30; +corner_size = 30; // The length along each edge that the corner bracket takes. I.e., if // you construct a frame of four corner brackets and 4 tubes of length // $L-$corner_size, the distance between opposite tubes' centerlines @@ -26,63 +26,59 @@ belt_height2 = belt_height1 + belt_width + 2; ysled_rail_spacing = (sled_ysize); motor_shaft_xoffset = (corner_size - wall_thickness) / 2; - - // Generates bar of length $l, centered on origin extending in +Z module tslot(l) { - bom_item(printable=false, label = str("tslot(", l, "mm)")); + bom_item(printable = false, label = str("tslot(", l, "mm)")); colorize(stock_color) { - translate([-frame_size/2, -frame_size/2, 0]) - cube([frame_size, frame_size, l]); + translate([ -frame_size / 2, -frame_size / 2, 0 ]) + cube([ frame_size, frame_size, l ]); } } // A corner, with tubes extending in +x and +y. module corner_base() { - odim = frame_size/2 + wall_thickness; - ldim = frame_size/2 + corner_size; - cap_points = [[-odim, -odim], - [-odim, ldim], - [ odim, ldim], - [ ldim, odim], - [ ldim, -odim]]; + odim = frame_size / 2 + wall_thickness; + ldim = frame_size / 2 + corner_size; + cap_points = [ + [ -odim, -odim ], [ -odim, ldim ], [ odim, ldim ], [ ldim, odim ], + [ ldim, -odim ] + ]; difference() { - translate([0, 0, -odim]) - linear_extrude(odim * 2) - polygon(points = cap_points); - + translate([ 0, 0, -odim ]) linear_extrude(odim * 2) + polygon(points = cap_points); + // two bars... - translate([-frame_size/2, corner_offset, -frame_size/2]) - cube([frame_size, ldim, frame_size]); - translate([corner_offset, -frame_size/2, -frame_size/2]) - cube([ldim, frame_size, frame_size]); - translate([corner_offset, corner_offset, -frame_size/2]) - cube([ldim, ldim, frame_size]); - //translate([-odim - 1, -odim - 1, 0]) - //cube(ldim*2); + translate([ -frame_size / 2, corner_offset, -frame_size / 2 ]) + cube([ frame_size, ldim, frame_size ]); + translate([ corner_offset, -frame_size / 2, -frame_size / 2 ]) + cube([ ldim, frame_size, frame_size ]); + translate([ corner_offset, corner_offset, -frame_size / 2 ]) + cube([ ldim, ldim, frame_size ]); + // translate([-odim - 1, -odim - 1, 0]) + // cube(ldim*2); } } module rail_holder(in_x) { - odim = frame_size/2 + wall_thickness; - ldim = frame_size/2 + corner_size; + odim = frame_size / 2 + wall_thickness; + ldim = frame_size / 2 + corner_size; tube_offset = (corner_size) / 2 + wall_thickness; tube_rotation = in_x ? 90 : 0; translated_rail_offset = yrail_offset - frame_size / 2; - translate([frame_size/2, frame_size/2, -frame_size/2]) { + translate([ frame_size / 2, frame_size / 2, -frame_size / 2 ]) { difference() { linear_extrude(frame_size) - polygon(points = [[wall_thickness, wall_thickness], - [wall_thickness, corner_size], - [corner_size, wall_thickness]]); + polygon(points = [[wall_thickness, wall_thickness], + [wall_thickness, corner_size], + [corner_size, wall_thickness]]); - translate([translated_rail_offset, translated_rail_offset, frame_size/2]) - rotate([tube_rotation -90, tube_rotation, 0]) - translate([0, 0, -corner_size]) - cylinder(d = rail_diam, corner_size * 4); - + translate( + [ translated_rail_offset, translated_rail_offset, frame_size / 2 ]) + rotate([ tube_rotation - 90, tube_rotation, 0 ]) + translate([ 0, 0, -corner_size ]) + cylinder(d = rail_diam, corner_size * 4); } } } @@ -93,59 +89,52 @@ module ysled_slider(spread, associated_parts = $preview) { sled_len = spread + frame_size; sled_height = frame_size; idler_spacing = spread / 3; - - colorize("green") - render() - translate([0, -sled_len/2, 0]) - rotate([-90, 0, 0]) { + + colorize("green") render() translate([ 0, -sled_len / 2, 0 ]) + rotate([ -90, 0, 0 ]) { difference() { union() { - translate([-frame_size/2, -frame_size/2, 0]) - cube([frame_size + 5, frame_size, sled_len]); - translate([pulley_sbend_offset - yrail_offset + motor_shaft_xoffset - pulley_clearance_rad - 4, - -frame_size / 2, 0]) - cube([frame_size + 5, frame_size, sled_len]); + translate([ -frame_size / 2, -frame_size / 2, 0 ]) + cube([ frame_size + 5, frame_size, sled_len ]); + translate([ + pulley_sbend_offset - yrail_offset + motor_shaft_xoffset - + pulley_clearance_rad - 4, + -frame_size / 2, 0 + ]) cube([ frame_size + 5, frame_size, sled_len ]); } - - cylinder(d = bushing_id * 1.1, h = sled_len); - - translate([0,0,-1]) - cylinder(d = bushing_od, h = bushing_len+1); - translate([0,0,sled_len - bushing_len]) - cylinder(d = bushing_od, h = bushing_len+1); - for (zpos = [frame_size / 2, sled_len - frame_size / 2]) { - translate([sled_height/2, 0, zpos]) - rotate([0,90,0]) { - cylinder(h = sled_height + 1, d = rail_diam); - } + cylinder(d = bushing_id * 1.1, h = sled_len); + + translate([ 0, 0, -1 ]) cylinder(d = bushing_od, h = bushing_len + 1); + translate([ 0, 0, sled_len - bushing_len ]) + cylinder(d = bushing_od, h = bushing_len + 1); + + for (zpos = [ frame_size / 2, sled_len - frame_size / 2 ]) { + translate([ sled_height / 2, 0, zpos ]) rotate([ 0, 90, 0 ]) { + cylinder(h = sled_height + 1, d = rail_diam); + } } } } // TODO: add posts for the idlers - - //color("#f00") - translate([pulley_sbend_offset - yrail_offset + motor_shaft_xoffset, 0, 0]) { - translate([0, idler_spacing / 2, 0]) { + + // color("#f00") + translate( + [ pulley_sbend_offset - yrail_offset + motor_shaft_xoffset, 0, 0 ]) { + translate([ 0, idler_spacing / 2, 0 ]) { idler_post(belt_height = belt_height1); } - translate([0, -idler_spacing / 2, 0]) { - *cylinder(d=3, h=30, $fs=1); + translate([ 0, -idler_spacing / 2, 0 ]) { + *cylinder(d = 3, h = 30, $fs = 1); *idler(belt_height2); - rotate([0, 0, -90]) { - idler_post(belt_height = belt_height2); - } - + rotate([ 0, 0, -90 ]) { idler_post(belt_height = belt_height2); } } - - } - translate([0, -sled_len/2, 0]) - rotate([-90, 0, 0]) - if (associated_parts) { + translate([ 0, -sled_len / 2, 0 ]) + rotate([ -90, 0, 0 ]) if (associated_parts) { bushing(); - translate([0,0,sled_len - bushing_len]) bushing(); + translate([ 0, 0, sled_len - bushing_len ]) bushing(); } } @@ -155,33 +144,26 @@ module nema17_housing() { hdepth = frame_size + wall_thickness * 2; screw_dxy = 31 / 2; - translate([0, - -nema17_face/2 - frame_size/2 - wall_thickness, - 0]) - render() - difference() { - cube([hwidth, hheight, hdepth], - center=true); + translate([ 0, -nema17_face / 2 - frame_size / 2 - wall_thickness, 0 ]) + render() difference() { + cube([ hwidth, hheight, hdepth ], center = true); - translate([0,0,-2]) - cube([nema17_face+1, nema17_face+1, hdepth], - center=true); - cylinder(d=23, frame_size); + translate([ 0, 0, -2 ]) + cube([ nema17_face + 1, nema17_face + 1, hdepth ], center = true); + cylinder(d = 23, frame_size); - for (x = [-screw_dxy, screw_dxy], - y = [-screw_dxy, screw_dxy]) - translate([x, y, frame_size/2 + wall_thickness]) - rotate([180, 0, 0]){ - cylinder(d=5,h=3); + for (x = [ -screw_dxy, screw_dxy ], y = [ -screw_dxy, screw_dxy ]) + translate([ x, y, frame_size / 2 + wall_thickness ]) + rotate([ 180, 0, 0 ]) { + cylinder(d = 5, h = 3); } - } } // belt height is the center of the belt. // Roration is in Z axis, from +x/+y -module idler_post(belt_height, toothed=true) { - gap=0.5; +module idler_post(belt_height, toothed = true) { + gap = 0.5; post_radius = pulley_clearance_rad + 4; top_shelf_thickness = 4; @@ -193,23 +175,22 @@ module idler_post(belt_height, toothed=true) { union() { // outer shell cylinder(h = total_height, r = post_radius); - translate([0, -post_radius, 0]) - cube([post_radius, post_radius, total_height]); - translate([-post_radius,0, 0]) - cube([post_radius, post_radius, total_height]); + translate([ 0, -post_radius, 0 ]) + cube([ post_radius, post_radius, total_height ]); + translate([ -post_radius, 0, 0 ]) + cube([ post_radius, post_radius, total_height ]); } - translate([0,0,belt_height - idler_zmargin.x - gap]) { + translate([ 0, 0, belt_height - idler_zmargin.x - gap ]) { cylinder(r = slot_radius, slot_height); - translate([-slot_radius, 0, 0]) - cube([post_radius*2, post_radius * 2, slot_height]); - translate([0, -slot_radius, 0]) - cube([post_radius * 2, post_radius * 2, slot_height]); + translate([ -slot_radius, 0, 0 ]) + cube([ post_radius * 2, post_radius * 2, slot_height ]); + translate([ 0, -slot_radius, 0 ]) + cube([ post_radius * 2, post_radius * 2, slot_height ]); } - cylinder(d = 3, h=total_height + 1, $fn=60); - translate([0, 0, total_height - 2]) - cylinder(r = 3, h = 3); + cylinder(d = 3, h = total_height + 1, $fn = 60); + translate([ 0, 0, total_height - 2 ]) cylinder(r = 3, h = 3); } idler(height = belt_height); @@ -217,49 +198,45 @@ module idler_post(belt_height, toothed=true) { module flcorner() { bom_item(); - rotate([0, 0, 0]) { + rotate([ 0, 0, 0 ]) { corner_base(); rail_holder(false); } - translate([(corner_size-wall_thickness)/2, 0, 0]) - nema17_housing(); - - if($preview) - translate([(corner_size - wall_thickness) / 2, - -nema17_face/2 - frame_size/2 - wall_thickness, - frame_size/2]) { - nema17(); - translate([0, 0, -frame_size/2 + belt_height2]) { - active_pulley(); + translate([ (corner_size - wall_thickness) / 2, 0, 0 ]) nema17_housing(); + + if ($preview) + translate([ + (corner_size - wall_thickness) / 2, + -nema17_face / 2 - frame_size / 2 - wall_thickness, frame_size / 2 + ]) { + nema17(); + translate([ 0, 0, -frame_size / 2 + belt_height2 ]) { active_pulley(); } } - } - } module frcorner() { bom_item(); - rotate([0, 0, 90]) { + rotate([ 0, 0, 90 ]) { corner_base(); rail_holder(true); } - translate([-(corner_size-wall_thickness)/2, 0, 0]) - nema17_housing(); - - if($preview) - translate([-(corner_size - wall_thickness) / 2, - -nema17_face/2 - frame_size/2 - wall_thickness, - frame_size/2]) { - nema17(); - translate([0,0,belt_height1 - frame_size / 2]) { - rotate([180,0,0]) - active_pulley(); + translate([ -(corner_size - wall_thickness) / 2, 0, 0 ]) nema17_housing(); + + if ($preview) + translate([ + -(corner_size - wall_thickness) / 2, + -nema17_face / 2 - frame_size / 2 - wall_thickness, frame_size / 2 + ]) { + nema17(); + translate([ 0, 0, belt_height1 - frame_size / 2 ]) { + rotate([ 180, 0, 0 ]) active_pulley(); + } } - } } module blcorner() { bom_item(); - rotate([0, 0, 270]) { + rotate([ 0, 0, 270 ]) { corner_base(); rail_holder(true); } @@ -267,7 +244,7 @@ module blcorner() { module brcorner() { bom_item(); - rotate([0, 0, 180]) { + rotate([ 0, 0, 180 ]) { corner_base(); rail_holder(false); } @@ -277,84 +254,65 @@ module xsled_slider() { slider_len = bushing_len + 10; screw_tab_len = 20; screw_tab_thickness = 10; - + render() - //translate([screw_tab_len, 0, 0]) - difference() { + // translate([screw_tab_len, 0, 0]) + difference() { union() { - rotate([0, 90, 0]) { - cylinder(d = frame_size, h = slider_len); - } + rotate([ 0, 90, 0 ]) { cylinder(d = frame_size, h = slider_len); } - translate([0, -frame_size/2, 0]) - cube([slider_len, frame_size, frame_size / 2]); + translate([ 0, -frame_size / 2, 0 ]) + cube([ slider_len, frame_size, frame_size / 2 ]); - *translate([-screw_tab_len, -frame_size/2, frame_size/2]) - cube([screw_tab_len * 2 + slider_len, frame_size, screw_tab_thickness]); + *translate([ -screw_tab_len, -frame_size / 2, frame_size / 2 ]) cube( + [ screw_tab_len * 2 + slider_len, frame_size, screw_tab_thickness ]); } - rotate([0, 90, 0]) { + rotate([ 0, 90, 0 ]) { cylinder(d = bushing_od, h = bushing_len); cylinder(d = rail_diam * 1.1, slider_len * 2); } - } - if($preview) - rotate([0, 90, 0]) - bushing(); + if ($preview) + rotate([ 0, 90, 0 ]) bushing(); } module sled_cornera() { bom_item(); corner_base(); - translate([-frame_size/2 - wall_thickness, 0, -frame_size]) - xsled_slider(); + translate([ -frame_size / 2 - wall_thickness, 0, -frame_size ]) + xsled_slider(); } module sled_cornerb() { bom_item(); corner_base(); - rotate([0,0,90]) - translate([-frame_size/2 - wall_thickness, 0, -frame_size]) - xsled_slider(); + rotate([ 0, 0, 90 ]) + translate([ -frame_size / 2 - wall_thickness, 0, -frame_size ]) + xsled_slider(); } module xsled_frame() { - translate([-sled_xsize / 2 + corner_offset, -ysled_rail_spacing/2, 0]) - rotate([0, 90, 0]) - tslot(sled_xsize - corner_offset * 2); - translate([-sled_xsize / 2 + corner_offset, ysled_rail_spacing/2, 0]) - rotate([0, 90, 0]) - tslot(sled_xsize - corner_offset * 2); - translate([-sled_xsize / 2, -ysled_rail_spacing/2 + corner_offset, 0]) - rotate([-90, 0, 0]) - tslot(sled_ysize - corner_offset * 2); - translate([sled_xsize / 2, -ysled_rail_spacing/2 + corner_offset, 0]) - rotate([-90, 0, 0]) - tslot(sled_ysize - corner_offset * 2); + translate([ -sled_xsize / 2 + corner_offset, -ysled_rail_spacing / 2, 0 ]) + rotate([ 0, 90, 0 ]) tslot(sled_xsize - corner_offset * 2); + translate([ -sled_xsize / 2 + corner_offset, ysled_rail_spacing / 2, 0 ]) + rotate([ 0, 90, 0 ]) tslot(sled_xsize - corner_offset * 2); + translate([ -sled_xsize / 2, -ysled_rail_spacing / 2 + corner_offset, 0 ]) + rotate([ -90, 0, 0 ]) tslot(sled_ysize - corner_offset * 2); + translate([ sled_xsize / 2, -ysled_rail_spacing / 2 + corner_offset, 0 ]) + rotate([ -90, 0, 0 ]) tslot(sled_ysize - corner_offset * 2); - translate([-sled_xsize / 2, -sled_ysize / 2, 0]) - sled_cornera(); - translate([sled_xsize / 2, sled_ysize / 2, 0]) - rotate([0,0,180]) - sled_cornera(); - - translate([sled_xsize / 2, -sled_ysize / 2, 0]) - rotate([0,0,90]) - sled_cornerb(); - translate([-sled_xsize / 2, sled_ysize / 2, 0]) - rotate([0,0,270]) - sled_cornerb(); + translate([ -sled_xsize / 2, -sled_ysize / 2, 0 ]) sled_cornera(); + translate([ sled_xsize / 2, sled_ysize / 2, 0 ]) rotate([ 0, 0, 180 ]) + sled_cornera(); + translate([ sled_xsize / 2, -sled_ysize / 2, 0 ]) rotate([ 0, 0, 90 ]) + sled_cornerb(); + translate([ -sled_xsize / 2, sled_ysize / 2, 0 ]) rotate([ 0, 0, 270 ]) + sled_cornerb(); // simulate a piece of film if (false) { - color("#0008") - cube([ - 5*inch, - 4*inch, - 1 - ], - center=true); + color("#0008") cube([ 5 * inch, 4 * inch, 1 ], center = true); } } @@ -371,34 +329,28 @@ module xsled2() { lip_width = glass_thickness; glass_holder_points = [ - [0,0], - [lip_depth + wall_thickness, 0], - [lip_depth + wall_thickness, wall_thickness + 0.5], - [lip_depth, wall_thickness + 0.5], - [lip_depth, wall_thickness + glass_thickness], - [lip_depth - glass_thickness, wall_thickness + glass_thickness], - [lip_depth - glass_thickness, wall_thickness + glass_thickness*2], - [0, tab_thickness] + [ 0, 0 ], [ lip_depth + wall_thickness, 0 ], + [ lip_depth + wall_thickness, wall_thickness + 0.5 ], + [ lip_depth, wall_thickness + 0.5 ], + [ lip_depth, wall_thickness + glass_thickness ], + [ lip_depth - glass_thickness, wall_thickness + glass_thickness ], + [ lip_depth - glass_thickness, wall_thickness + glass_thickness * 2 ], + [ 0, tab_thickness ] ]; - - for (xsign = [1,-1], - ysign = [1,-1]) { - translate([sled_xsize / 2 * xsign, - sled_ysize / 2 * ysign, - 0]) - rotate([0, -90 * xsign, 0]) { + for (xsign = [ 1, -1 ], ysign = [ 1, -1 ]) { + translate([ sled_xsize / 2 * xsign, sled_ysize / 2 * ysign, 0 ]) + rotate([ 0, -90 * xsign, 0 ]) { difference() { union() { cylinder(d = tab_thickness, h = tab_len); - translate([-tab_thickness/2, - ysign > 0 ? -tab_thickness/2: 0, - 0]) - cube([tab_thickness, tab_thickness/2, tab_len]); + translate( + [ -tab_thickness / 2, ysign > 0 ? -tab_thickness / 2 : 0, 0 ]) + cube([ tab_thickness, tab_thickness / 2, tab_len ]); } - translate([0,0,-0.5]) { - cylinder(d = bushing_od, h = bushing_len+0.5); - cylinder(d = rail_diam * 1.1 , h = tab_len + 1); + translate([ 0, 0, -0.5 ]) { + cylinder(d = bushing_od, h = bushing_len + 0.5); + cylinder(d = rail_diam * 1.1, h = tab_len + 1); } } if ($preview) { @@ -406,59 +358,55 @@ module xsled2() { } } - //cube([sled_xsize, inner_ysize, tab_thickness/2], center=true); + // cube([sled_xsize, inner_ysize, tab_thickness/2], center=true); difference() { union() { - translate([-sled_xsize/2, -inner_ysize/2, -tab_thickness/2]) - rotate([0, 90, 0]) - rotate([0,0,90]) - linear_extrude(sled_xsize) - polygon(glass_holder_points); + translate([ -sled_xsize / 2, -inner_ysize / 2, -tab_thickness / 2 ]) + rotate([ 0, 90, 0 ]) rotate([ 0, 0, 90 ]) linear_extrude(sled_xsize) + polygon(glass_holder_points); - translate([sled_xsize/2, inner_ysize/2, -tab_thickness/2]) - rotate([0, 90, 180]) - rotate([0,0,90]) - linear_extrude(sled_xsize) - polygon(glass_holder_points); + translate([ sled_xsize / 2, inner_ysize / 2, -tab_thickness / 2 ]) + rotate([ 0, 90, 180 ]) rotate([ 0, 0, 90 ]) + linear_extrude(sled_xsize) polygon(glass_holder_points); - translate([sled_xsize/2, -inner_ysize/2, -tab_thickness/2]) - rotate([0, 90, 90]) - rotate([0,0,90]) - linear_extrude(inner_ysize) - polygon(glass_holder_points); + translate([ sled_xsize / 2, -inner_ysize / 2, -tab_thickness / 2 ]) + rotate([ 0, 90, 90 ]) rotate([ 0, 0, 90 ]) + linear_extrude(inner_ysize) polygon(glass_holder_points); - translate([-sled_xsize/2, inner_ysize/2, -tab_thickness/2]) - rotate([0, 90, -90]) - rotate([0,0,90]) - linear_extrude(inner_ysize) - polygon(glass_holder_points); + translate([ -sled_xsize / 2, inner_ysize / 2, -tab_thickness / 2 ]) + rotate([ 0, 90, -90 ]) rotate([ 0, 0, 90 ]) + linear_extrude(inner_ysize) polygon(glass_holder_points); } - translate([-10, inner_ysize/2 - 1 - lip_depth + glass_thickness, -tab_thickness/2 + wall_thickness + glass_thickness]) - cube([20, glass_thickness + 1, 30]); + translate([ + -10, inner_ysize / 2 - 1 - lip_depth + glass_thickness, + -tab_thickness / 2 + wall_thickness + + glass_thickness + ]) cube([ 20, glass_thickness + 1, 30 ]); } } - color("#fff3") - if ($preview) { + color("#fff3") if ($preview) { // draw glass sheets - translate([0,0,-tab_thickness/2 + wall_thickness + glass_thickness/2]) - cube([sled_xsize - lip_depth*2, inner_ysize - lip_depth*2, glass_thickness], - center=true); - translate([0,0,-tab_thickness/2 + wall_thickness + 3*glass_thickness/2]) - cube( - [ - sled_xsize - lip_depth*2 + glass_thickness*2, - inner_ysize - lip_depth*2 + glass_thickness*2, - glass_thickness - ], - center=true); - + translate( + [ 0, 0, -tab_thickness / 2 + wall_thickness + glass_thickness / 2 ]) + cube( + [ + sled_xsize - lip_depth * 2, inner_ysize - lip_depth * 2, + glass_thickness + ], + center = true); + translate( + [ 0, 0, -tab_thickness / 2 + wall_thickness + 3 * glass_thickness / 2 ]) + cube( + [ + sled_xsize - lip_depth * 2 + glass_thickness * 2, + inner_ysize - lip_depth * 2 + glass_thickness * 2, + glass_thickness + ], + center = true); } } - - // render() // xsled2(); - diff --git a/stock_parts.scad b/stock_parts.scad index f06d705..2d51bf2 100644 --- a/stock_parts.scad +++ b/stock_parts.scad @@ -1,5 +1,5 @@ -include ; -include ; +include +include stock_color = "#aaa4"; @@ -18,128 +18,111 @@ module colorize(colorname) { } module bushing() { - bom_item(printable=false, label="Bushing"); + bom_item(printable = false, label = "Bushing"); colorize(stock_color) render() { difference() { cylinder(d = bushing_od, h = bushing_len); - translate([0,0,-1]) - cylinder(d = bushing_id, h = bushing_len + 2); + translate([ 0, 0, -1 ]) cylinder(d = bushing_id, h = bushing_len + 2); } } } -// located with the shaft in +z, face on the XY plane +// located with the shaft in +z, face on the XY plane module nema17(depth = 23.5) { - bom_item(printable=false, label="NEMA-17 stepper motor"); + bom_item(printable = false, label = "NEMA-17 stepper motor"); face = 42.3; screw_pitch = 31 / 2; - color(stock_color) - render() - difference() { + color(stock_color) render() difference() { union() { - translate([-face/2, -face/2, -depth]) - cube([face, face, depth]); - translate([0,0,-1]) { - cylinder(d=22, h=2+1); - cylinder(d=5, h=22+1); + translate([ -face / 2, -face / 2, -depth ]) cube([ face, face, depth ]); + translate([ 0, 0, -1 ]) { + cylinder(d = 22, h = 2 + 1); + cylinder(d = 5, h = 22 + 1); } } - translate([1.25, -5, 4]) - cube([10, 10, 20]); + translate([ 1.25, -5, 4 ]) cube([ 10, 10, 20 ]); // screw holes - for (x = [-screw_pitch, screw_pitch], - y = [-screw_pitch, screw_pitch]) { - translate([x,y,-10]) - cylinder(d=5,h=20); + for (x = [ -screw_pitch, screw_pitch ], y = [ -screw_pitch, screw_pitch ]) { + translate([ x, y, -10 ]) cylinder(d = 5, h = 20); } } - } // belts and pulleys belt_pitch = 2; // 2mm tooth width for GT2 = 2mm pitch belt_width = 6; belt_thickness = 1.38; -belt_pld = 0.254; // distance between line of fixed length and tips of gear teeth +belt_pld = + 0.254; // distance between line of fixed length and tips of gear teeth belt_backing = 0.63 - belt_pld; tooth_height = 0.75; pulley_od = 13; pulley_clearance_rad = pulley_od / 2 + 2.5; -module pulley(teeth, lrim, urim, belt_width, shaft=5, toothed=true, od = 0) { - bom_item(printable=false, label=str( - toothed ? "pulley(" : "idler(", - "teeth=", teeth, ", ", - "flange1=", min(lrim, urim), "mm, ", - "flange2=", max(lrim, urim), "mm, ", - "channel=", belt_width, "mm, ", - "shaft=", shaft, "mm", - ")" - )); +module pulley(teeth, lrim, urim, belt_width, shaft = 5, toothed = true, + od = 0) { + bom_item(printable = false, + label = str(toothed ? "pulley(" : "idler(", "teeth=", teeth, ", ", + "flange1=", min(lrim, urim), "mm, ", "flange2=", + max(lrim, urim), "mm, ", "channel=", belt_width, "mm, ", + "shaft=", shaft, "mm", ")")); nominal_rad = belt_pitch * teeth / TAU; inner_rad = nominal_rad - belt_pld; - outer_rad = (od > 0) ? od / 2 : nominal_rad + belt_backing; + outer_rad = (od > 0) ? od / 2 : nominal_rad + belt_backing; minor_rad = inner_rad - tooth_height; mid_rad = inner_rad - tooth_height / 2; idler_rad = nominal_rad - belt_backing; dtheta = 180 / teeth; - tooth_points = [ - for (i = [1:1:teeth]) - let (theta = i * 360 / teeth) - each [ - [sin(theta) * minor_rad, cos(theta) * minor_rad], - [sin(theta) * inner_rad, cos(theta) * inner_rad], - [sin(theta + dtheta) * inner_rad, cos(theta + dtheta) * inner_rad], - [sin(theta + dtheta) * minor_rad, cos(theta + dtheta) * minor_rad] - ] - ]; + tooth_points = [for (i = [1:1:teeth]) let(theta = i * 360 / teeth) each + [[sin(theta) * minor_rad, cos(theta) * minor_rad], + [sin(theta) * inner_rad, cos(theta) * inner_rad], + [sin(theta + dtheta) * inner_rad, cos(theta + dtheta) * inner_rad], + [sin(theta + dtheta) * minor_rad, cos(theta + dtheta) * minor_rad]]]; - //echo([each [0:1:teeth]]); + // echo([each [0:1:teeth]]); - //echo(tooth_points); + // echo(tooth_points); - colorize(stock_color) - render() - difference() { + colorize(stock_color) render() difference() { union() { - cylinder(r=outer_rad, h=lrim); - translate([0,0,lrim]) - if (toothed) { + cylinder(r = outer_rad, h = lrim); + translate([ 0, 0, lrim ]) if (toothed) { linear_extrude(belt_width) - polygon(tooth_points, convexity = teeth * 2 + 4); - } else { + polygon(tooth_points, convexity = teeth * 2 + 4); + } + else { cylinder(r = idler_rad, h = belt_width); } - translate([0,0,lrim + belt_width]) - cylinder(r=outer_rad, h=urim); + translate([ 0, 0, lrim + belt_width ]) cylinder(r = outer_rad, h = urim); } - translate([0,0,-1]) - cylinder(d=shaft, h=belt_width + lrim + urim + 2); + translate([ 0, 0, -1 ]) + cylinder(d = shaft, h = belt_width + lrim + urim + 2); } } idler_zmargin = [ 6.4 / 2 + 1.05, 6.4 / 2 + 1.05 ]; -module idler(height=0, toothed=false) { +module idler(height = 0, toothed = false) { // pulley(20, 1.05, 1.05, 6.4, toothed=toothed, od=18); - translate([0,0, height-idler_zmargin[0]]) - pulley(16, 1.05, 1.05, 6.4, shaft=3, toothed=toothed, od=13); + translate([ 0, 0, height - idler_zmargin[0] ]) + pulley(16, 1.05, 1.05, 6.4, shaft = 3, toothed = toothed, od = 13); } active_pulley_zmargin = [ 9.5, 4.5 ]; -module active_pulley(height=0) { - translate([0,0,-active_pulley_zmargin[0] + height]) - pulley(16,6,1,7, od=13); +module active_pulley(height = 0) { + translate([ 0, 0, -active_pulley_zmargin[0] + height ]) + pulley(16, 6, 1, 7, od = 13); } -// required distance between centers of pulley and idler for an S-bend with right angles. +// required distance between centers of pulley and idler for an S-bend with +// right angles. pulley_sbend_offset = (9.5 + 9.7) / 2 + 0.63; -//!pulley(12, 6, 2, toothed=false); \ No newline at end of file +//! pulley(12, 6, 2, toothed=false); \ No newline at end of file