From 6b0e796462400cbe42ef32a19fbadba4ff7c3923 Mon Sep 17 00:00:00 2001 From: Revar Desmera Date: Thu, 18 Apr 2019 23:32:17 -0700 Subject: [PATCH] Renamed all V_ constants. Removed ALIGN_ constants. --- README.md | 2 +- beziers.scad | 20 ++--- constants.scad | 113 ++++++++++------------------ debug.scad | 28 +++---- involute_gears.scad | 8 +- joiners.scad | 42 +++++------ linear_bearings.scad | 8 +- masks.scad | 56 +++++++------- math.scad | 4 +- metric_screws.scad | 12 +-- nema_steppers.scad | 72 +++++++++--------- paths.scad | 4 +- phillips_drive.scad | 2 +- primitives.scad | 20 ++--- shapes.scad | 132 ++++++++++++++++----------------- sliders.scad | 14 ++-- threading.scad | 46 ++++++------ torx_drive.scad | 2 +- transforms.scad | 171 +++++++++++++++++-------------------------- 19 files changed, 340 insertions(+), 416 deletions(-) diff --git a/README.md b/README.md index ab201dd..7f3440e 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ Args | What it is fillet | Radius of rounding for interior or exterior edges. chamfer | Size of chamfers/bevels for interior or exterior edges. orient | Axis a part should be oriented along. Given as an XYZ triplet of rotation angles. It is recommended that you use the `ORIENT_` constants from `constants.scad`. Default is usually `ORIENT_Z` for vertical orientation. -align | Side of the origin that the part should be on. Given as a vector away from the origin. It is recommended that you use the `V_` constants from `constants.scad`. Default is usually `V_ZERO` for centered. +align | Side of the origin that the part should be on. Given as a vector away from the origin. It is recommended that you use the constants from `constants.scad`. Default is usually `CENTER` for centered. ## Examples diff --git a/beziers.scad b/beziers.scad index 672cfe5..3e55428 100644 --- a/beziers.scad +++ b/beziers.scad @@ -446,7 +446,7 @@ module bezier_polygon(bezier, splinesteps=16, N=3) { // slices = Number of vertical slices to use for twisted extrusion. default=20 // center = If true, the extruded solid is centered vertically at z=0. // orient = Orientation of the extrusion. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Z`. -// align = Alignment of the extrusion. Use the `V_` constants from `constants.scad`. Default: `ALIGN_POS`. +// align = Alignment of the extrusion. Use the constants from `constants.scad`. Default: `UP`. // Example: // bez = [ // [-10, 0], [-15, -5], @@ -456,7 +456,7 @@ module bezier_polygon(bezier, splinesteps=16, N=3) { // [ 25, -15], [-10, 0] // ]; // linear_extrude_bezier(bez, height=20, splinesteps=32); -module linear_extrude_bezier(bezier, height=100, splinesteps=16, N=3, center=undef, convexity=undef, twist=undef, slices=undef, scale=undef, orient=ORIENT_Z, align=ALIGN_POS) { +module linear_extrude_bezier(bezier, height=100, splinesteps=16, N=3, center=undef, convexity=undef, twist=undef, slices=undef, scale=undef, orient=ORIENT_Z, align=UP) { maxx = max([for (pt = bezier) abs(pt[0])]); maxy = max([for (pt = bezier) abs(pt[1])]); orient_and_align([maxx*2,maxy*2,height], orient, align) { @@ -479,7 +479,7 @@ module linear_extrude_bezier(bezier, height=100, splinesteps=16, N=3, center=und // convexity = max number of walls a line could pass through, for preview. default=10 // angle = Degrees of sweep to make. Default: 360 // orient = Orientation of the extrusion. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_X`. -// align = Alignment of the extrusion. Use the `V_` constants from `constants.scad`. Default: `V_CENTER`. +// align = Alignment of the extrusion. Use the constants from `constants.scad`. Default: `CENTER`. // Example(FlatSpin): // path = [ // [ 0, 10], [ 50, 0], [ 50, 40], @@ -489,7 +489,7 @@ module linear_extrude_bezier(bezier, height=100, splinesteps=16, N=3, center=und // [ 0, 10] // ]; // revolve_bezier(path, splinesteps=32, $fn=180); -module revolve_bezier(bezier, splinesteps=16, N=3, convexity=10, angle=360, orient=ORIENT_X, align=V_CENTER) +module revolve_bezier(bezier, splinesteps=16, N=3, convexity=10, angle=360, orient=ORIENT_X, align=CENTER) { maxx = max([for (pt = bezier) abs(pt[0])]); maxy = max([for (pt = bezier) abs(pt[1])]); @@ -515,7 +515,7 @@ module revolve_bezier(bezier, splinesteps=16, N=3, convexity=10, angle=360, orie // convexity = max number of walls a line could pass through, for preview. default=10 // angle = Degrees of sweep to make. Default: 360 // orient = Orientation of the extrusion. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Z`. -// align = Alignment of the extrusion. Use the `V_` constants from `constants.scad`. Default: `V_CENTER`. +// align = Alignment of the extrusion. Use the constants from `constants.scad`. Default: `CENTER`. // Example(Spin): // path = [ // [ 0, 10], [ 50, 0], [ 50, 40], @@ -525,7 +525,7 @@ module revolve_bezier(bezier, splinesteps=16, N=3, convexity=10, angle=360, orie // [ 0, 10] // ]; // rotate_extrude_bezier(path, splinesteps=32, $fn=180); -module rotate_extrude_bezier(bezier, splinesteps=16, N=3, convexity=10, angle=360, orient=ORIENT_Z, align=V_CENTER) +module rotate_extrude_bezier(bezier, splinesteps=16, N=3, convexity=10, angle=360, orient=ORIENT_Z, align=CENTER) { maxx = max([for (pt = bezier) abs(pt[0])]); maxy = max([for (pt = bezier) abs(pt[1])]); @@ -550,11 +550,11 @@ module rotate_extrude_bezier(bezier, splinesteps=16, N=3, convexity=10, angle=36 // convexity = max number of walls a line could pass through, for preview. default=10 // angle = Degrees of sweep to make. Default: 360 // orient = Orientation of the extrusion. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_X`. -// align = Alignment of the extrusion. Use the `V_` constants from `constants.scad`. Default: `V_CENTER`. +// align = Alignment of the extrusion. Use the constants from `constants.scad`. Default: `CENTER`. // Example(FlatSpin): // path = [ [0, 10], [33, 10], [66, 40], [100, 40] ]; // revolve_bezier_solid_to_axis(path, splinesteps=32, $fn=72); -module revolve_bezier_solid_to_axis(bezier, splinesteps=16, N=3, convexity=10, angle=360, orient=ORIENT_X, align=V_CENTER) { +module revolve_bezier_solid_to_axis(bezier, splinesteps=16, N=3, convexity=10, angle=360, orient=ORIENT_X, align=CENTER) { revolve_bezier(bezier=bezier_close_to_axis(bezier), splinesteps=splinesteps, N=N, convexity=convexity, angle=angle, orient=orient, align=align); } @@ -572,11 +572,11 @@ module revolve_bezier_solid_to_axis(bezier, splinesteps=16, N=3, convexity=10, a // convexity = max number of walls a line could pass through, for preview. default=10 // angle = degrees of sweep to make. Default: 360 // orient = Orientation of the extrusion. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_X`. -// align = Alignment of the extrusion. Use the `V_` constants from `constants.scad`. Default: `V_CENTER`. +// align = Alignment of the extrusion. Use the constants from `constants.scad`. Default: `CENTER`. // Example(FlatSpin): // path = [ [0, 10], [33, 10], [66, 40], [100, 40] ]; // revolve_bezier_offset_shell(path, offset=1, splinesteps=32, $fn=72); -module revolve_bezier_offset_shell(bezier, offset=1, splinesteps=16, N=3, convexity=10, angle=360, orient=ORIENT_X, align=V_CENTER) { +module revolve_bezier_offset_shell(bezier, offset=1, splinesteps=16, N=3, convexity=10, angle=360, orient=ORIENT_X, align=CENTER) { revolve_bezier(bezier=bezier_offset(offset, bezier), splinesteps=splinesteps, N=N, orient=orient, align=align); } diff --git a/constants.scad b/constants.scad index 21b8be3..f854a76 100644 --- a/constants.scad +++ b/constants.scad @@ -45,116 +45,77 @@ PRINTER_SLOP = 0.20; // The printer specific amount of slop in mm to print with // Section: Directional Vectors // Vectors useful for `rotate()`, `mirror()`, and `align` arguments for `cuboid()`, `cyl()`, etc. -// Constant: V_LEFT +// Constant: LEFT // Description: Vector pointing left. [-1,0,0] // Example(3D): Usage with `align` -// cuboid(20, align=V_LEFT); -V_LEFT = [-1, 0, 0]; +// cuboid(20, align=LEFT); +LEFT = [-1, 0, 0]; -// Constant: V_RIGHT +// Constant: RIGHT // Description: Vector pointing right. [1,0,0] // Example(3D): Usage with `align` -// cuboid(20, align=V_RIGHT); -V_RIGHT = [ 1, 0, 0]; +// cuboid(20, align=RIGHT); +RIGHT = [ 1, 0, 0]; -// Constant: V_FWD +// Constant: FWD // Description: Vector pointing forward. [0,-1,0] // Example(3D): Usage with `align` -// cuboid(20, align=V_FWD); -V_FWD = [ 0, -1, 0]; +// cuboid(20, align=FWD); +FWD = [ 0, -1, 0]; -// Constant: V_BACK +// Constant: BACK // Description: Vector pointing back. [0,1,0] // Example(3D): Usage with `align` -// cuboid(20, align=V_BACK); -V_BACK = [ 0, 1, 0]; +// cuboid(20, align=BACK); +BACK = [ 0, 1, 0]; -// Constant: V_DOWN +// Constant: DOWN // Description: Vector pointing down. [0,0,-1] // Example(3D): Usage with `align` -// cuboid(20, align=V_DOWN); -V_DOWN = [ 0, 0, -1]; +// cuboid(20, align=DOWN); +DOWN = [ 0, 0, -1]; -// Constant: V_UP +// Constant: UP // Description: Vector pointing up. [0,0,1] // Example(3D): Usage with `align` -// cuboid(20, align=V_UP); -V_UP = [ 0, 0, 1]; +// cuboid(20, align=UP); +UP = [ 0, 0, 1]; -// Constant: V_ALLPOS +// Constant: ALLPOS // Description: Vector pointing right, back, and up. [1,1,1] // Example(3D): Usage with `align` -// cuboid(20, align=V_ALLPOS); -V_ALLPOS = [ 1, 1, 1]; // Vector pointing X+,Y+,Z+. +// cuboid(20, align=ALLPOS); +ALLPOS = [ 1, 1, 1]; // Vector pointing X+,Y+,Z+. -// Constant: V_ALLNEG +// Constant: ALLNEG // Description: Vector pointing left, forwards, and down. [-1,-1,-1] // Example(3D): Usage with `align` -// cuboid(20, align=V_ALLNEG); -V_ALLNEG = [-1, -1, -1]; // Vector pointing X-,Y-,Z-. +// cuboid(20, align=ALLNEG); +ALLNEG = [-1, -1, -1]; // Vector pointing X-,Y-,Z-. -// Constant: V_ZERO +// Constant: CENTER // Description: Zero vector. Centered. [0,0,0] // Example(3D): Usage with `align` -// cuboid(20, align=V_ZERO); -V_ZERO = [ 0, 0, 0]; // Centered zero vector. +// cuboid(20, align=CENTER); +CENTER = [ 0, 0, 0]; // Centered zero vector. // Section: Vector Aliases // Useful aliases for use with `align`. -V_CENTER = V_ZERO; // Centered, alias to `V_ZERO`. -V_ABOVE = V_UP; // Vector pointing up, alias to `V_UP`. -V_BELOW = V_DOWN; // Vector pointing down, alias to `V_DOWN`. -V_BEFORE = V_FWD; // Vector pointing forward, alias to `V_FWD`. -V_BEHIND = V_BACK; // Vector pointing back, alias to `V_BACK`. +ABOVE = UP; // Vector pointing up, alias to `UP`. +BELOW = DOWN; // Vector pointing down, alias to `DOWN`. +BEFORE = FWD; // Vector pointing forward, alias to `FWD`. +BEHIND = BACK; // Vector pointing back, alias to `BACK`. -V_TOP = V_UP; // Vector pointing up, alias to `V_UP`. -V_BOTTOM = V_DOWN; // Vector pointing down, alias to `V_DOWN`. -V_FRONT = V_FWD; // Vector pointing forward, alias to `V_FWD`. -V_REAR = V_BACK; // Vector pointing back, alias to `V_BACK`. +TOP = UP; // Vector pointing up, alias to `UP`. +BOTTOM = DOWN; // Vector pointing down, alias to `DOWN`. +FRONT = FWD; // Vector pointing forward, alias to `FWD`. +REAR = BACK; // Vector pointing back, alias to `BACK`. +FORWARD = FWD; // Vector pointing forward, alias to `FWD`. -// Section: Pre-Orientation Alignments -// Constants for pre-orientation alignments. - - -// Constant: ALIGN_POS -// Description: Align the axis-positive end to the origin. -// Example(3D): orient=ORIENT_X -// cyl(d1=10, d2=5, h=20, orient=ORIENT_X, align=ALIGN_POS); -// Example(3D): orient=ORIENT_Y -// cyl(d1=10, d2=5, h=20, orient=ORIENT_Y, align=ALIGN_POS); -// Example(3D): orient=ORIENT_Z -// cyl(d1=10, d2=5, h=20, orient=ORIENT_Z, align=ALIGN_POS); -// Example(3D): orient=ORIENT_XNEG -// cyl(d1=10, d2=5, h=20, orient=ORIENT_XNEG, align=ALIGN_POS); -// Example(3D): orient=ORIENT_YNEG -// cyl(d1=10, d2=5, h=20, orient=ORIENT_YNEG, align=ALIGN_POS); -// Example(3D): orient=ORIENT_ZNEG -// cyl(d1=10, d2=5, h=20, orient=ORIENT_ZNEG, align=ALIGN_POS); -ALIGN_POS = 1; - - -ALIGN_CENTER = 0; // Align centered. - -// Constant: ALIGN_NEG -// Description: Align the axis-negative end to the origin. -// Example(3D): orient=ORIENT_X -// cyl(d1=10, d2=5, h=20, orient=ORIENT_X, align=ALIGN_NEG); -// Example(3D): orient=ORIENT_Y -// cyl(d1=10, d2=5, h=20, orient=ORIENT_Y, align=ALIGN_NEG); -// Example(3D): orient=ORIENT_Z -// cyl(d1=10, d2=5, h=20, orient=ORIENT_Z, align=ALIGN_NEG); -// Example(3D): orient=ORIENT_XNEG -// cyl(d1=10, d2=5, h=20, orient=ORIENT_XNEG, align=ALIGN_NEG); -// Example(3D): orient=ORIENT_YNEG -// cyl(d1=10, d2=5, h=20, orient=ORIENT_YNEG, align=ALIGN_NEG); -// Example(3D): orient=ORIENT_ZNEG -// cyl(d1=10, d2=5, h=20, orient=ORIENT_ZNEG, align=ALIGN_NEG); -ALIGN_NEG = -1; - // CommonCode: // orientations = [ @@ -346,7 +307,7 @@ function corner_edge_count(edges, v) = $color = undef; $overlap = 0.01; $attach_to = undef; -$attach_conn = ["center", V_ZERO, V_UP, 0]; +$attach_conn = ["center", CENTER, UP, 0]; $parent_size = undef; $parent_size2 = undef; $parent_shift = [0,0]; diff --git a/debug.scad b/debug.scad index 7efe5a2..6f95c24 100644 --- a/debug.scad +++ b/debug.scad @@ -183,16 +183,16 @@ module debug_polyhedron(points, faces, convexity=10, txtsize=1, disabled=false) function all_conns(type="cube") = assert(in_list(type,["cube", "cylinder", "sphere"])) let ( - zs = ["top", "bottom"], - ys = ["front", "back"], - xs = ["left", "right"] + zs = [TOP, BOTTOM], + ys = [FRONT, BACK], + xs = [LEFT, RIGHT] ) concat( - ["center"], + [CENTER], [for (a=concat(xs,ys,zs)) a], - in_list(type,["cube","cylinder"])? [for (a=zs, b=ys) str(a,"-",b)] : [], - in_list(type,["cube","cylinder"])? [for (a=zs, b=xs) str(a,"-",b)] : [], - in_list(type,["cube"])? [for (a=ys, b=xs) str(a,"-",b)] : [], - in_list(type,["cube"])? [for (a=zs, b=ys, c=xs) str(a,"-",b,"-",c)] : [] + in_list(type,["cube","cylinder"])? [for (a=zs, b=ys) a+b] : [], + in_list(type,["cube","cylinder"])? [for (a=zs, b=xs) a+b] : [], + in_list(type,["cube"])? [for (a=ys, b=xs) a+b] : [], + in_list(type,["cube"])? [for (a=zs, b=ys, c=xs) a+b+c] : [] ); @@ -209,10 +209,10 @@ function all_conns(type="cube") = module connector_arrow(s=10, color=[0.333,0.333,1], flag=true) { $fn=12; recolor("gray") spheroid(d=s/6) - recolor(color) cyl(h=s*2/3, d=s/15, align=V_UP) - attach("top") cyl(h=s/3, d1=s/5, d2=0, align=V_UP) { + recolor(color) cyl(h=s*2/3, d=s/15, align=UP) + attach(TOP) cyl(h=s/3, d1=s/5, d2=0, align=UP) { if(flag) { - attach("bottom") recolor([1,0.5,0.5]) cuboid([s/50, s/6, s/4], align="front-top"); + attach(BOTTOM) recolor([1,0.5,0.5]) cuboid([s/50, s/6, s/4], align="front-top"); } } } @@ -240,9 +240,9 @@ module show_connectors(type="cube") { // s = Length of the arrows. module frameref(s=15) { sphere(0.001) { - attach("right") connector_arrow(s=s, color="red", flag=false); - attach("back") connector_arrow(s=s, color="green", flag=false); - attach("top") connector_arrow(s=s, color="blue", flag=false); + attach(RIGHT) connector_arrow(s=s, color="red", flag=false); + attach(BACK) connector_arrow(s=s, color="green", flag=false); + attach(TOP) connector_arrow(s=s, color="blue", flag=false); } } diff --git a/involute_gears.scad b/involute_gears.scad index ff32f04..b3f1604 100644 --- a/involute_gears.scad +++ b/involute_gears.scad @@ -289,7 +289,7 @@ module gear2d( // scale = Scale of top of gear compared to bottom. Useful for making crown gears. // interior = If true, create a mask for difference()ing from something else. // orient = Orientation of the gear. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Z`. -// align = Alignment of the gear. Use the `V_` constants from `constants.scad`. Default: `V_CENTER`. +// align = Alignment of the gear. Use the constants from `constants.scad`. Default: `CENTER`. // Example: Spur Gear // gear(mm_per_tooth=5, number_of_teeth=20, thickness=8, hole_diameter=5); // Example: Beveled Gear @@ -308,7 +308,7 @@ module gear( slices = undef, //Number of slices to divide gear into. Useful for refining gears with `twist`. interior = false, orient = ORIENT_Z, - align = V_CENTER + align = CENTER ) { p = pitch_radius(mm_per_tooth, number_of_teeth); c = outer_radius(mm_per_tooth, number_of_teeth, clearance, interior); @@ -358,7 +358,7 @@ module gear( // pressure_angle = Controls how straight or bulged the tooth sides are. In degrees. // backlash = Gap between two meshing teeth, in the direction along the circumference of the pitch circle // orient = Orientation of the rack. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_X`. -// align = Alignment of the rack. Use the `V_` constants from `constants.scad`. Default: `V_RIGHT`. +// align = Alignment of the rack. Use the constants from `constants.scad`. Default: `RIGHT`. // Example: // rack(mm_per_tooth=5, number_of_teeth=10, thickness=5, height=5, pressure_angle=20); module rack( @@ -370,7 +370,7 @@ module rack( backlash = 0.0, //gap between two meshing teeth, in the direction along the circumference of the pitch circle clearance = undef, orient = ORIENT_X, - align = V_RIGHT + align = RIGHT ) { a = adendum(mm_per_tooth); d = dedendum(mm_per_tooth, clearance); diff --git a/joiners.scad b/joiners.scad index 6cc8972..dca51da 100644 --- a/joiners.scad +++ b/joiners.scad @@ -58,10 +58,10 @@ include // clearance = Extra width to clear. // overlap = Extra depth to clear. // orient = Orientation of the shape. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Y`. -// align = Alignment of the shape by the axis-negative (size1) end. Use the `V_` constants from `constants.scad`. Default: `V_CENTER`. +// align = Alignment of the shape by the axis-negative (size1) end. Use the constants from `constants.scad`. Default: `CENTER`. // Example: // half_joiner_clear(orient=ORIENT_X); -module half_joiner_clear(h=20, w=10, a=30, clearance=0, overlap=0.01, orient=ORIENT_Y, align=V_CENTER) +module half_joiner_clear(h=20, w=10, a=30, clearance=0, overlap=0.01, orient=ORIENT_Y, align=CENTER) { dmnd_height = h*1.0; dmnd_width = dmnd_height*tan(a); @@ -101,10 +101,10 @@ module half_joiner_clear(h=20, w=10, a=30, clearance=0, overlap=0.01, orient=ORI // guides = If true, create sliding alignment guides. // slop = Printer specific slop value to make parts fit more closely. // orient = Orientation of the shape. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Y`. -// align = Alignment of the shape by the axis-negative (size1) end. Use the `V_` constants from `constants.scad`. Default: `V_CENTER`. +// align = Alignment of the shape by the axis-negative (size1) end. Use the constants from `constants.scad`. Default: `CENTER`. // Example: // half_joiner(screwsize=3, orient=ORIENT_X); -module half_joiner(h=20, w=10, l=10, a=30, screwsize=undef, guides=true, slop=PRINTER_SLOP, orient=ORIENT_Y, align=V_CENTER) +module half_joiner(h=20, w=10, l=10, a=30, screwsize=undef, guides=true, slop=PRINTER_SLOP, orient=ORIENT_Y, align=CENTER) { dmnd_height = h*1.0; dmnd_width = dmnd_height*tan(a); @@ -166,7 +166,7 @@ module half_joiner(h=20, w=10, l=10, a=30, screwsize=undef, guides=true, slop=PR } } } -//half_joiner(screwsize=3, orient=ORIENT_Z, align=V_UP); +//half_joiner(screwsize=3, orient=ORIENT_Z, align=UP); @@ -183,10 +183,10 @@ module half_joiner(h=20, w=10, l=10, a=30, screwsize=undef, guides=true, slop=PR // screwsize = Diameter of screwhole. // guides = If true, create sliding alignment guides. // orient = Orientation of the shape. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Y`. -// align = Alignment of the shape by the axis-negative (size1) end. Use the `V_` constants from `constants.scad`. Default: `V_CENTER`. +// align = Alignment of the shape by the axis-negative (size1) end. Use the constants from `constants.scad`. Default: `CENTER`. // Example: // half_joiner2(screwsize=3, orient=ORIENT_X); -module half_joiner2(h=20, w=10, l=10, a=30, screwsize=undef, guides=true, orient=ORIENT_Y, align=V_CENTER) +module half_joiner2(h=20, w=10, l=10, a=30, screwsize=undef, guides=true, orient=ORIENT_Y, align=CENTER) { dmnd_height = h*1.0; dmnd_width = dmnd_height*tan(a); @@ -236,10 +236,10 @@ module half_joiner2(h=20, w=10, l=10, a=30, screwsize=undef, guides=true, orient // clearance = Extra width to clear. // overlap = Extra depth to clear. // orient = Orientation of the shape. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Y`. -// align = Alignment of the shape by the axis-negative (size1) end. Use the `V_` constants from `constants.scad`. Default: `V_CENTER`. +// align = Alignment of the shape by the axis-negative (size1) end. Use the constants from `constants.scad`. Default: `CENTER`. // Example: // joiner_clear(orient=ORIENT_X); -module joiner_clear(h=40, w=10, a=30, clearance=0, overlap=0.01, orient=ORIENT_Y, align=V_CENTER) +module joiner_clear(h=40, w=10, a=30, clearance=0, overlap=0.01, orient=ORIENT_Y, align=CENTER) { dmnd_height = h*0.5; dmnd_width = dmnd_height*tan(a); @@ -268,11 +268,11 @@ module joiner_clear(h=40, w=10, a=30, clearance=0, overlap=0.01, orient=ORIENT_Y // guides = If true, create sliding alignment guides. // slop = Printer specific slop value to make parts fit more closely. // orient = Orientation of the shape. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Y`. -// align = Alignment of the shape by the axis-negative (size1) end. Use the `V_` constants from `constants.scad`. Default: `V_CENTER`. +// align = Alignment of the shape by the axis-negative (size1) end. Use the constants from `constants.scad`. Default: `CENTER`. // Examples: // joiner(screwsize=3, orient=ORIENT_X); -// joiner(w=10, l=10, h=40, orient=ORIENT_X) cuboid([10, 10*2, 40], align=V_LEFT); -module joiner(h=40, w=10, l=10, a=30, screwsize=undef, guides=true, slop=PRINTER_SLOP, orient=ORIENT_Y, align=V_CENTER) +// joiner(w=10, l=10, h=40, orient=ORIENT_X) cuboid([10, 10*2, 40], align=LEFT); +module joiner(h=40, w=10, l=10, a=30, screwsize=undef, guides=true, slop=PRINTER_SLOP, orient=ORIENT_Y, align=CENTER) { if ($children > 0) { difference() { @@ -305,11 +305,11 @@ module joiner(h=40, w=10, l=10, a=30, screwsize=undef, guides=true, slop=PRINTER // clearance = Extra width to clear. // overlap = Extra depth to clear. // orient = Orientation of the shape. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Y`. -// align = Alignment of the shape by the axis-negative (size1) end. Use the `V_` constants from `constants.scad`. Default: `V_CENTER`. +// align = Alignment of the shape by the axis-negative (size1) end. Use the constants from `constants.scad`. Default: `CENTER`. // Examples: // joiner_pair_clear(spacing=50, n=2); // joiner_pair_clear(spacing=50, n=3); -module joiner_pair_clear(spacing=100, h=40, w=10, a=30, n=2, clearance=0, overlap=0.01, orient=ORIENT_Y, align=V_CENTER) +module joiner_pair_clear(spacing=100, h=40, w=10, a=30, n=2, clearance=0, overlap=0.01, orient=ORIENT_Y, align=CENTER) { dmnd_height = h*0.5; dmnd_width = dmnd_height*tan(a); @@ -342,14 +342,14 @@ module joiner_pair_clear(spacing=100, h=40, w=10, a=30, n=2, clearance=0, overla // guides = If true, create sliding alignment guides. // slop = Printer specific slop value to make parts fit more closely. // orient = Orientation of the shape. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Y`. -// align = Alignment of the shape by the axis-negative (size1) end. Use the `V_` constants from `constants.scad`. Default: `V_CENTER`. +// align = Alignment of the shape by the axis-negative (size1) end. Use the constants from `constants.scad`. Default: `CENTER`. // Examples: -// joiner_pair(spacing=50, l=10, orient=ORIENT_X) cuboid([10, 50+10-0.1, 40], align=V_LEFT); +// joiner_pair(spacing=50, l=10, orient=ORIENT_X) cuboid([10, 50+10-0.1, 40], align=LEFT); // joiner_pair(spacing=50, l=10, n=2, orient=ORIENT_X); // joiner_pair(spacing=50, l=10, n=3, alternate=false, orient=ORIENT_X); // joiner_pair(spacing=50, l=10, n=3, alternate=true, orient=ORIENT_X); // joiner_pair(spacing=50, l=10, n=3, alternate="alt", orient=ORIENT_X); -module joiner_pair(spacing=100, h=40, w=10, l=10, a=30, n=2, alternate=true, screwsize=undef, guides=true, slop=PRINTER_SLOP, orient=ORIENT_Y, align=V_CENTER) +module joiner_pair(spacing=100, h=40, w=10, l=10, a=30, n=2, alternate=true, screwsize=undef, guides=true, slop=PRINTER_SLOP, orient=ORIENT_Y, align=CENTER) { if ($children > 0) { difference() { @@ -390,11 +390,11 @@ module joiner_pair(spacing=100, h=40, w=10, l=10, a=30, n=2, alternate=true, scr // clearance = Extra width to clear. // overlap = Extra depth to clear. // orient = Orientation of the shape. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Y`. -// align = Alignment of the shape by the axis-negative (size1) end. Use the `V_` constants from `constants.scad`. Default: `V_CENTER`. +// align = Alignment of the shape by the axis-negative (size1) end. Use the constants from `constants.scad`. Default: `CENTER`. // Examples: // joiner_quad_clear(spacing1=50, spacing2=50, n=2); // joiner_quad_clear(spacing1=50, spacing2=50, n=3); -module joiner_quad_clear(xspacing=undef, yspacing=undef, spacing1=undef, spacing2=undef, n=2, h=40, w=10, a=30, clearance=0, overlap=0.01, orient=ORIENT_Y, align=V_CENTER) +module joiner_quad_clear(xspacing=undef, yspacing=undef, spacing1=undef, spacing2=undef, n=2, h=40, w=10, a=30, clearance=0, overlap=0.01, orient=ORIENT_Y, align=CENTER) { spacing1 = first_defined([spacing1, xspacing, 100]); spacing2 = first_defined([spacing2, yspacing, 50]); @@ -426,14 +426,14 @@ module joiner_quad_clear(xspacing=undef, yspacing=undef, spacing1=undef, spacing // guides = If true, create sliding alignment guides. // slop = Printer specific slop value to make parts fit more closely. // orient = Orientation of the shape. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Y`. -// align = Alignment of the shape by the axis-negative (size1) end. Use the `V_` constants from `constants.scad`. Default: `V_CENTER`. +// align = Alignment of the shape by the axis-negative (size1) end. Use the constants from `constants.scad`. Default: `CENTER`. // Examples: // joiner_quad(spacing1=50, spacing2=50, l=10, orient=ORIENT_X) cuboid([50, 50+10-0.1, 40]); // joiner_quad(spacing1=50, spacing2=50, l=10, n=2, orient=ORIENT_X); // joiner_quad(spacing1=50, spacing2=50, l=10, n=3, alternate=false, orient=ORIENT_X); // joiner_quad(spacing1=50, spacing2=50, l=10, n=3, alternate=true, orient=ORIENT_X); // joiner_quad(spacing1=50, spacing2=50, l=10, n=3, alternate="alt", orient=ORIENT_X); -module joiner_quad(spacing1=undef, spacing2=undef, xspacing=undef, yspacing=undef, h=40, w=10, l=10, a=30, n=2, alternate=true, screwsize=undef, guides=true, slop=PRINTER_SLOP, orient=ORIENT_Y, align=V_CENTER) +module joiner_quad(spacing1=undef, spacing2=undef, xspacing=undef, yspacing=undef, h=40, w=10, l=10, a=30, n=2, alternate=true, screwsize=undef, guides=true, slop=PRINTER_SLOP, orient=ORIENT_Y, align=CENTER) { spacing1 = first_defined([spacing1, xspacing, 100]); spacing2 = first_defined([spacing2, yspacing, 50]); diff --git a/linear_bearings.scad b/linear_bearings.scad index dc788b6..0f14fbf 100644 --- a/linear_bearings.scad +++ b/linear_bearings.scad @@ -106,10 +106,10 @@ function get_lmXuu_bearing_length(size) = lookup(size, [ // gap = Gap in clamp. (Default: 5) // screwsize = Size of screw to use to tighten clamp. (Default: 3) // orient = Orientation of the housing. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_X`. -// align = Alignment of the housing by the axis-negative (size1) end. Use the `V_` constants from `constants.scad`. Default: `V_UP` +// align = Alignment of the housing by the axis-negative (size1) end. Use the constants from `constants.scad`. Default: `UP` // Example: // linear_bearing_housing(d=19, l=29, wall=2, tab=6, screwsize=2.5); -module linear_bearing_housing(d=15, l=24, tab=7, gap=5, wall=3, tabwall=5, screwsize=3, orient=ORIENT_X, align=V_UP) +module linear_bearing_housing(d=15, l=24, tab=7, gap=5, wall=3, tabwall=5, screwsize=3, orient=ORIENT_X, align=UP) { od = d+2*wall; ogap = gap+2*tabwall; @@ -146,10 +146,10 @@ module linear_bearing_housing(d=15, l=24, tab=7, gap=5, wall=3, tabwall=5, screw // gap = Gap in clamp. Default: 5 // screwsize = Size of screw to use to tighten clamp. Default: 3 // orient = Orientation of the housing. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_X`. -// align = Alignment of the housing by the axis-negative (size1) end. Use the `V_` constants from `constants.scad`. Default: `V_UP` +// align = Alignment of the housing by the axis-negative (size1) end. Use the constants from `constants.scad`. Default: `UP` // Example: // lmXuu_housing(size=10, wall=2, tab=6, screwsize=2.5); -module lmXuu_housing(size=8, tab=7, gap=5, wall=3, tabwall=5, screwsize=3, orient=ORIENT_X, align=V_UP) +module lmXuu_housing(size=8, tab=7, gap=5, wall=3, tabwall=5, screwsize=3, orient=ORIENT_X, align=UP) { d = get_lmXuu_bearing_diam(size); l = get_lmXuu_bearing_length(size); diff --git a/masks.scad b/masks.scad index c3cbb34..7bcc750 100644 --- a/masks.scad +++ b/masks.scad @@ -62,7 +62,7 @@ include // d1 = Bottom diameter of cone that wedge is created from. (optional) // d2 = Upper diameter of cone that wedge is created from. (optional) // orient = Orientation of the pie slice. Use the ORIENT_ constants from constants.h. Default: ORIENT_Z. -// align = Alignment of the pie slice. Use the V_ constants from constants.h. Default: V_CENTER. +// align = Alignment of the pie slice. Use the constants from constants.h. Default: CENTER. // center = If true, centers vertically. If false, lift up to sit on top of the XY plane. Overrides `align`. // Example(FR): // angle_pie_mask(ang=30, d=100, l=20); @@ -70,14 +70,14 @@ module angle_pie_mask( ang=45, l=undef, r=undef, r1=undef, r2=undef, d=undef, d1=undef, d2=undef, - orient=ORIENT_Z, align=V_CENTER, + orient=ORIENT_Z, align=CENTER, h=undef, center=undef ) { l = first_defined([l, h, 1]); r1 = get_radius(r1, r, d1, d, 10); r2 = get_radius(r2, r, d2, d, 10); orient_and_align([2*r1, 2*r1, l], orient, align, center=center) { - pie_slice(ang=ang, l=l+0.1, r1=r1, r2=r2, align=V_CENTER); + pie_slice(ang=ang, l=l+0.1, r1=r1, r2=r2, align=CENTER); } } @@ -120,7 +120,7 @@ module angle_pie_mask( // overage = The extra thickness of the mask. Default: `10`. // ends_only = If true, only mask the ends and not around the middle of the cylinder. // orient = Orientation. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Z`. -// align = Alignment of the region. Use the `V_` constants from `constants.scad`. Default: `V_CENTER`. +// align = Alignment of the region. Use the constants from `constants.scad`. Default: `CENTER`. // Example: // difference() { // cylinder(h=100, r1=60, r2=30, center=true); @@ -139,7 +139,7 @@ module cylinder_mask( fillet=undef, fillet1=undef, fillet2=undef, circum=false, from_end=false, overage=10, ends_only=false, - orient=ORIENT_Z, align=V_CENTER + orient=ORIENT_Z, align=CENTER ) { r1 = get_radius(r=r, d=d, r1=r1, d1=d1, dflt=1); r2 = get_radius(r=r, d=d, r1=r2, d1=d2, dflt=1); @@ -195,14 +195,14 @@ module cylinder_mask( // l = Length of mask. // chamfer = Size of chamfer // orient = Orientation of the mask. Use the `ORIENT_` constants from `constants.h`. Default: vertical. -// align = Alignment of the mask. Use the `V_` constants from `constants.h`. Default: centered. +// align = Alignment of the mask. Use the constants from `constants.h`. Default: centered. // center = If true, centers vertically. If false, lift up to sit on top of the XY plane. Overrides `align`. // Example: // difference() { // cube(50); -// #chamfer_mask(l=50, chamfer=10, orient=ORIENT_X, align=V_RIGHT); +// #chamfer_mask(l=50, chamfer=10, orient=ORIENT_X, align=RIGHT); // } -module chamfer_mask(l=1, chamfer=1, orient=ORIENT_Z, align=V_CENTER, center=undef) { +module chamfer_mask(l=1, chamfer=1, orient=ORIENT_Z, align=CENTER, center=undef) { orient_and_align([chamfer, chamfer, l], orient, align, center=center) { cylinder(d=chamfer*2, h=l+0.1, center=true, $fn=4); } @@ -219,13 +219,13 @@ module chamfer_mask(l=1, chamfer=1, orient=ORIENT_Z, align=V_CENTER, center=unde // Arguments: // l = Height of mask // chamfer = size of chamfer -// align = Alignment of the cylinder. Use the V_ constants from constants.h. Default: centered. +// align = Alignment of the cylinder. Use the constants from constants.h. Default: centered. // Example: // difference() { // left(40) cube(80); // #chamfer_mask_x(l=80, chamfer=20); // } -module chamfer_mask_x(l=1.0, chamfer=1.0, align=V_CENTER) { +module chamfer_mask_x(l=1.0, chamfer=1.0, align=CENTER) { chamfer_mask(l=l, chamfer=chamfer, orient=ORIENT_X, align=align); } @@ -240,13 +240,13 @@ module chamfer_mask_x(l=1.0, chamfer=1.0, align=V_CENTER) { // Arguments: // l = Height of mask // chamfer = size of chamfer -// align = Alignment of the cylinder. Use the V_ constants from constants.h. Default: centered. +// align = Alignment of the cylinder. Use the constants from constants.h. Default: centered. // Example: // difference() { // fwd(40) cube(80); // right(80) #chamfer_mask_y(l=80, chamfer=20); // } -module chamfer_mask_y(l=1.0, chamfer=1.0, align=V_CENTER) { +module chamfer_mask_y(l=1.0, chamfer=1.0, align=CENTER) { chamfer_mask(l=l, chamfer=chamfer, orient=ORIENT_Y, align=align); } @@ -261,13 +261,13 @@ module chamfer_mask_y(l=1.0, chamfer=1.0, align=V_CENTER) { // Arguments: // l = Height of mask // chamfer = size of chamfer -// align = Alignment of the cylinder. Use the V_ constants from constants.h. Default: centered. +// align = Alignment of the cylinder. Use the constants from constants.h. Default: centered. // Example: // difference() { // down(40) cube(80); // #chamfer_mask_z(l=80, chamfer=20); // } -module chamfer_mask_z(l=1.0, chamfer=1.0, align=V_CENTER) { +module chamfer_mask_z(l=1.0, chamfer=1.0, align=CENTER) { chamfer_mask(l=l, chamfer=chamfer, orient=ORIENT_Z, align=align); } @@ -332,7 +332,7 @@ module chamfer(chamfer=1, size=[1,1,1], edges=EDGES_ALL) module chamfer_cylinder_mask(r=1.0, d=undef, chamfer=0.25, ang=45, from_end=false, orient=ORIENT_Z) { r = get_radius(r=r, d=d, dflt=1); - rot(orient) cylinder_mask(l=chamfer*3, r=r, chamfer2=chamfer, chamfang2=ang, from_end=from_end, ends_only=true, align=V_DOWN); + rot(orient) cylinder_mask(l=chamfer*3, r=r, chamfer2=chamfer, chamfang2=ang, from_end=from_end, ends_only=true, align=DOWN); } @@ -388,14 +388,14 @@ module chamfer_hole_mask(r=undef, d=undef, chamfer=0.25, ang=45, from_end=false, // l = Length of mask. // r = Radius of the fillet. // orient = Orientation of the mask. Use the `ORIENT_` constants from `constants.h`. Default: vertical. -// align = Alignment of the mask. Use the `V_` constants from `constants.h`. Default: centered. +// align = Alignment of the mask. Use the constants from `constants.h`. Default: centered. // center = If true, centers vertically. If false, lift up to sit on top of the XY plane. Overrides `align`. // Example: // difference() { // cube(size=100, center=false); -// #fillet_mask(l=100, r=25, orient=ORIENT_Z, align=V_UP); +// #fillet_mask(l=100, r=25, orient=ORIENT_Z, align=UP); // } -module fillet_mask(l=undef, r=1.0, orient=ORIENT_Z, align=V_CENTER, h=undef, center=undef) +module fillet_mask(l=undef, r=1.0, orient=ORIENT_Z, align=CENTER, h=undef, center=undef) { l = first_defined([l, h, 1]); sides = quantup(segs(r),4); @@ -421,14 +421,14 @@ module fillet_mask(l=undef, r=1.0, orient=ORIENT_Z, align=V_CENTER, h=undef, cen // Arguments: // l = Length of mask. // r = Radius of the fillet. -// align = Alignment of the mask. Use the `V_` constants from `constants.h`. Default: centered. +// align = Alignment of the mask. Use the constants from `constants.h`. Default: centered. // center = If true, centers vertically. If false, lift up to sit on top of the XY plane. Overrides `align`. // Example: // difference() { // cube(size=100, center=false); -// #fillet_mask_x(l=100, r=25, align=V_RIGHT); +// #fillet_mask_x(l=100, r=25, align=RIGHT); // } -module fillet_mask_x(l=1.0, r=1.0, align=V_CENTER) fillet_mask(l=l, r=r, orient=ORIENT_X, align=align); +module fillet_mask_x(l=1.0, r=1.0, align=CENTER) fillet_mask(l=l, r=r, orient=ORIENT_X, align=align); // Module: fillet_mask_y() @@ -442,14 +442,14 @@ module fillet_mask_x(l=1.0, r=1.0, align=V_CENTER) fillet_mask(l=l, r=r, orient= // Arguments: // l = Length of mask. // r = Radius of the fillet. -// align = Alignment of the mask. Use the `V_` constants from `constants.h`. Default: centered. +// align = Alignment of the mask. Use the constants from `constants.h`. Default: centered. // center = If true, centers vertically. If false, lift up to sit on top of the XY plane. Overrides `align`. // Example: // difference() { // cube(size=100, center=false); -// right(100) #fillet_mask_y(l=100, r=25, align=V_BACK); +// right(100) #fillet_mask_y(l=100, r=25, align=BACK); // } -module fillet_mask_y(l=1.0, r=1.0, align=V_CENTER) fillet_mask(l=l, r=r, orient=ORIENT_Y, align=align); +module fillet_mask_y(l=1.0, r=1.0, align=CENTER) fillet_mask(l=l, r=r, orient=ORIENT_Y, align=align); // Module: fillet_mask_z() @@ -463,14 +463,14 @@ module fillet_mask_y(l=1.0, r=1.0, align=V_CENTER) fillet_mask(l=l, r=r, orient= // Arguments: // l = Length of mask. // r = Radius of the fillet. -// align = Alignment of the mask. Use the `V_` constants from `constants.h`. Default: centered. +// align = Alignment of the mask. Use the constants from `constants.h`. Default: centered. // center = If true, centers vertically. If false, lift up to sit on top of the XY plane. Overrides `align`. // Example: // difference() { // cube(size=100, center=false); -// #fillet_mask_z(l=100, r=25, align=V_UP); +// #fillet_mask_z(l=100, r=25, align=UP); // } -module fillet_mask_z(l=1.0, r=1.0, align=V_CENTER) fillet_mask(l=l, r=r, orient=ORIENT_Z, align=align); +module fillet_mask_z(l=1.0, r=1.0, align=CENTER) fillet_mask(l=l, r=r, orient=ORIENT_Z, align=align); // Module: fillet() @@ -646,7 +646,7 @@ module fillet_cylinder_mask(r=1.0, fillet=0.25, xtilt=0, ytilt=0) { skew_xz(za=xtilt) { skew_yz(za=ytilt) { - cylinder_mask(l=fillet*3, r=r, fillet2=fillet, overage=fillet+2*r*sin(max(xtilt,ytilt)), ends_only=true, align=V_DOWN); + cylinder_mask(l=fillet*3, r=r, fillet2=fillet, overage=fillet+2*r*sin(max(xtilt,ytilt)), ends_only=true, align=DOWN); } } } diff --git a/math.scad b/math.scad index 7e03f9e..086c67b 100644 --- a/math.scad +++ b/math.scad @@ -897,8 +897,8 @@ function vector_axis(v1,v2) = v1 = point3d(v1/norm(v1)), v2 = point3d(v2/norm(v2)), v3 = (norm(v1-v2) > eps && norm(v1+v2) > eps)? v2 : - (norm(vabs(v2)-V_UP) > eps)? V_UP : - V_RIGHT + (norm(vabs(v2)-UP) > eps)? UP : + RIGHT ) normalize(cross(v1,v3)); diff --git a/metric_screws.scad b/metric_screws.scad index cca7864..313a051 100644 --- a/metric_screws.scad +++ b/metric_screws.scad @@ -403,7 +403,7 @@ function get_metric_nut_thickness(size) = lookup(size, [ // headlen = length of the screw head. // countersunk = If true, center from cap's top instead of it's bottom. // orient = Orientation of the screw. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Z`. -// align = Alignment of the screw. Use the `V_` constants from `constants.scad` or `"sunken"`, or `"base"`. Default: `"base"`. +// align = Alignment of the screw. Use the constants from `constants.scad` or `"sunken"`, or `"base"`. Default: `"base"`. // Examples: // screw(screwsize=3,screwlen=10,headsize=6,headlen=3,countersunk=true); // screw(screwsize=3,screwlen=10,headsize=6,headlen=3, align="base"); @@ -418,7 +418,7 @@ module screw( align="base" ) { sides = max(12, segs(screwsize/2)); - algn = countersunk? ALIGN_NEG : align; + algn = countersunk? DOWN : align; alignments = [ ["base", [0,0,-headlen/2+screwlen/2]], ["sunken", [0,0,(headlen+screwlen)/2-0.01]] @@ -453,7 +453,7 @@ module screw( // phillips = If given, the size of the phillips drive hole to add. (ie: "#1", "#2", or "#3") // torx = If given, the size of the torx drive hole to add. (ie: 10, 20, 30, etc.) // orient = Orientation of the bolt. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Z`. -// align = Alignment of the bolt. Use the `V_` constants from `constants.scad` or `"sunken"`, `"base"`, or `"shank"`. Default: `"base"`. +// align = Alignment of the bolt. Use the constants from `constants.scad` or `"sunken"`, `"base"`, or `"shank"`. Default: `"base"`. // Example: Bolt Head Types // ydistribute(40) { // xdistribute(30) { @@ -566,7 +566,7 @@ module metric_bolt( } } } else if (headtype == "pan") { - cyl(l=H*0.75, d=D, fillet2=H*0.75/2, align=V_UP); + cyl(l=H*0.75, d=D, fillet2=H*0.75/2, align=UP); } else if (headtype == "round") { top_half() zscale(H*0.75/D*2) sphere(d=D); } else if (headtype == "button") { @@ -643,7 +643,7 @@ module metric_bolt( // flange = radius of flange beyond the head. Default = 0 (no flange) // details = true if model should be rendered with extra details. (Default: false) // orient = Orientation of the nut. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Z`. -// align = Alignment of the nut. Use the `V_` constants from `constants.scad`. Default: `V_UP`. +// align = Alignment of the nut. Use the constants from `constants.scad`. Default: `UP`. // center = If true, centers the nut at the origin. If false, sits on top of XY plane. Overrides `align` if given. // Example: No details, No Hole. Useful for a mask. // metric_nut(size=10, hole=false); @@ -665,7 +665,7 @@ module metric_nut( flange=0, center=undef, orient=ORIENT_Z, - align=V_UP + align=UP ) { H = get_metric_nut_thickness(size); D = get_metric_nut_size(size); diff --git a/nema_steppers.scad b/nema_steppers.scad index 3901264..c2fec76 100644 --- a/nema_steppers.scad +++ b/nema_steppers.scad @@ -134,10 +134,10 @@ function nema_motor_screw_depth(size) = lookup(size, [ // shaft = Shaft diameter. Default: 5mm // shaft_len = Length of shaft protruding out the top of the stepper motor. Default: 20mm // orient = Orientation of the stepper. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Z`. -// align = Alignment of the stepper. Use the `V_` constants from `constants.scad`. Default: `V_DOWN`. +// align = Alignment of the stepper. Use the constants from `constants.scad`. Default: `DOWN`. // Example: // nema11_stepper(); -module nema11_stepper(h=24, shaft=5, shaft_len=20, orient=ORIENT_Z, align=V_DOWN) +module nema11_stepper(h=24, shaft=5, shaft_len=20, orient=ORIENT_Z, align=DOWN) { size = 11; motor_width = nema_motor_width(size); @@ -147,10 +147,10 @@ module nema11_stepper(h=24, shaft=5, shaft_len=20, orient=ORIENT_Z, align=V_DOWN screw_size = nema_motor_screw_size(size); screw_depth = nema_motor_screw_depth(size); - orient_and_align([motor_width, motor_width, h], orient, align, orig_align=V_DOWN) { + orient_and_align([motor_width, motor_width, h], orient, align, orig_align=DOWN) { difference() { color([0.4, 0.4, 0.4]) - cuboid(size=[motor_width, motor_width, h], chamfer=2, edges=EDGES_Z_ALL, align=V_DOWN); + cuboid(size=[motor_width, motor_width, h], chamfer=2, edges=EDGES_Z_ALL, align=DOWN); color("silver") xspread(screw_spacing) yspread(screw_spacing) @@ -176,10 +176,10 @@ module nema11_stepper(h=24, shaft=5, shaft_len=20, orient=ORIENT_Z, align=V_DOWN // shaft = Shaft diameter. Default: 5mm // shaft_len = Length of shaft protruding out the top of the stepper motor. Default: 24mm // orient = Orientation of the stepper. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Z`. -// align = Alignment of the stepper. Use the `V_` constants from `constants.scad`. Default: `V_DOWN`. +// align = Alignment of the stepper. Use the constants from `constants.scad`. Default: `DOWN`. // Example: // nema14_stepper(); -module nema14_stepper(h=24, shaft=5, shaft_len=24, orient=ORIENT_Z, align=V_DOWN) +module nema14_stepper(h=24, shaft=5, shaft_len=24, orient=ORIENT_Z, align=DOWN) { size = 14; motor_width = nema_motor_width(size); @@ -189,10 +189,10 @@ module nema14_stepper(h=24, shaft=5, shaft_len=24, orient=ORIENT_Z, align=V_DOWN screw_size = nema_motor_screw_size(size); screw_depth = nema_motor_screw_depth(size); - orient_and_align([motor_width, motor_width, h], orient, align, orig_align=V_DOWN) { + orient_and_align([motor_width, motor_width, h], orient, align, orig_align=DOWN) { difference() { color([0.4, 0.4, 0.4]) - cuboid(size=[motor_width, motor_width, h], chamfer=2, edges=EDGES_Z_ALL, align=V_DOWN); + cuboid(size=[motor_width, motor_width, h], chamfer=2, edges=EDGES_Z_ALL, align=DOWN); color("silver") xspread(screw_spacing) yspread(screw_spacing) @@ -205,7 +205,7 @@ module nema14_stepper(h=24, shaft=5, shaft_len=24, orient=ORIENT_Z, align=V_DOWN } } color("silver") - cyl(h=shaft_len, d=shaft, align=V_UP, $fn=max(12,segs(shaft/2))); + cyl(h=shaft_len, d=shaft, align=UP, $fn=max(12,segs(shaft/2))); } } @@ -218,10 +218,10 @@ module nema14_stepper(h=24, shaft=5, shaft_len=24, orient=ORIENT_Z, align=V_DOWN // shaft = Shaft diameter. Default: 5mm // shaft_len = Length of shaft protruding out the top of the stepper motor. Default: 20mm // orient = Orientation of the stepper. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Z`. -// align = Alignment of the stepper. Use the `V_` constants from `constants.scad`. Default: `V_DOWN`. +// align = Alignment of the stepper. Use the constants from `constants.scad`. Default: `DOWN`. // Example: // nema17_stepper(); -module nema17_stepper(h=34, shaft=5, shaft_len=20, orient=ORIENT_Z, align=V_DOWN) +module nema17_stepper(h=34, shaft=5, shaft_len=20, orient=ORIENT_Z, align=DOWN) { size = 17; motor_width = nema_motor_width(size); @@ -231,10 +231,10 @@ module nema17_stepper(h=34, shaft=5, shaft_len=20, orient=ORIENT_Z, align=V_DOWN screw_size = nema_motor_screw_size(size); screw_depth = nema_motor_screw_depth(size); - orient_and_align([motor_width, motor_width, h], orient, align, orig_align=V_DOWN) { + orient_and_align([motor_width, motor_width, h], orient, align, orig_align=DOWN) { difference() { color([0.4, 0.4, 0.4]) - cuboid([motor_width, motor_width, h], chamfer=2, edges=EDGES_Z_ALL, align=V_DOWN); + cuboid([motor_width, motor_width, h], chamfer=2, edges=EDGES_Z_ALL, align=DOWN); color("silver") xspread(screw_spacing) yspread(screw_spacing) @@ -278,10 +278,10 @@ module nema17_stepper(h=34, shaft=5, shaft_len=20, orient=ORIENT_Z, align=V_DOWN // shaft = Shaft diameter. Default: 6.35mm // shaft_len = Length of shaft protruding out the top of the stepper motor. Default: 25mm // orient = Orientation of the stepper. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Z`. -// align = Alignment of the stepper. Use the `V_` constants from `constants.scad`. Default: `V_DOWN`. +// align = Alignment of the stepper. Use the constants from `constants.scad`. Default: `DOWN`. // Example: // nema23_stepper(); -module nema23_stepper(h=50, shaft=6.35, shaft_len=25, orient=ORIENT_Z, align=V_DOWN) +module nema23_stepper(h=50, shaft=6.35, shaft_len=25, orient=ORIENT_Z, align=DOWN) { size = 23; motor_width = nema_motor_width(size); @@ -292,11 +292,11 @@ module nema23_stepper(h=50, shaft=6.35, shaft_len=25, orient=ORIENT_Z, align=V_D screw_depth = nema_motor_screw_depth(size); screw_inset = motor_width - screw_spacing + 1; - orient_and_align([motor_width, motor_width, h], orient, align, orig_align=V_DOWN) { + orient_and_align([motor_width, motor_width, h], orient, align, orig_align=DOWN) { difference() { union() { color([0.4, 0.4, 0.4]) - cuboid([motor_width, motor_width, h], chamfer=2, edges=EDGES_Z_ALL, align=V_DOWN); + cuboid([motor_width, motor_width, h], chamfer=2, edges=EDGES_Z_ALL, align=DOWN); color([0.4, 0.4, 0.4]) cylinder(h=plinth_height, d=plinth_diam); color("silver") @@ -306,7 +306,7 @@ module nema23_stepper(h=50, shaft=6.35, shaft_len=25, orient=ORIENT_Z, align=V_D xspread(screw_spacing) { yspread(screw_spacing) { cyl(d=screw_size, h=screw_depth*3, $fn=max(12,segs(screw_size/2))); - down(screw_depth) cuboid([screw_inset, screw_inset, h], align=V_DOWN); + down(screw_depth) cuboid([screw_inset, screw_inset, h], align=DOWN); } } } @@ -323,10 +323,10 @@ module nema23_stepper(h=50, shaft=6.35, shaft_len=25, orient=ORIENT_Z, align=V_D // shaft = Shaft diameter. Default: 12.7mm // shaft_len = Length of shaft protruding out the top of the stepper motor. Default: 32mm // orient = Orientation of the stepper. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Z`. -// align = Alignment of the stepper. Use the `V_` constants from `constants.scad`. Default: `V_DOWN`. +// align = Alignment of the stepper. Use the constants from `constants.scad`. Default: `DOWN`. // Example: // nema34_stepper(); -module nema34_stepper(h=75, shaft=12.7, shaft_len=32, orient=ORIENT_Z, align=V_DOWN) +module nema34_stepper(h=75, shaft=12.7, shaft_len=32, orient=ORIENT_Z, align=DOWN) { size = 34; motor_width = nema_motor_width(size); @@ -337,11 +337,11 @@ module nema34_stepper(h=75, shaft=12.7, shaft_len=32, orient=ORIENT_Z, align=V_D screw_depth = nema_motor_screw_depth(size); screw_inset = motor_width - screw_spacing + 1; - orient_and_align([motor_width, motor_width, h], orient, align, orig_align=V_DOWN) { + orient_and_align([motor_width, motor_width, h], orient, align, orig_align=DOWN) { difference() { union() { color([0.4, 0.4, 0.4]) - cuboid(size=[motor_width, motor_width, h], chamfer=2, edges=EDGES_Z_ALL, align=V_DOWN); + cuboid(size=[motor_width, motor_width, h], chamfer=2, edges=EDGES_Z_ALL, align=DOWN); color([0.4, 0.4, 0.4]) cylinder(h=plinth_height, d=plinth_diam); color("silver") @@ -373,14 +373,14 @@ module nema34_stepper(h=75, shaft=12.7, shaft_len=32, orient=ORIENT_Z, align=V_D // l = The length of the slots, for making an adjustable motor mount. Default: 5 // slop = The printer-specific slop value to make parts fit just right. Default: `PRINTER_SLOP` // orient = Orientation of the stepper. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Z`. -// align = Alignment of the stepper. Use the `V_` constants from `constants.scad`. Default: `V_CENTER`. +// align = Alignment of the stepper. Use the constants from `constants.scad`. Default: `CENTER`. // Example: // nema_mount_holes(size=14, depth=5, l=5); // Example: // nema_mount_holes(size=17, depth=5, l=5); // Example: // nema_mount_holes(size=17, depth=5, l=0); -module nema_mount_holes(size=17, depth=5, l=5, slop=PRINTER_SLOP, orient=ORIENT_Z, align=V_CENTER) +module nema_mount_holes(size=17, depth=5, l=5, slop=PRINTER_SLOP, orient=ORIENT_Z, align=CENTER) { motor_width = nema_motor_width(size); plinth_diam = nema_motor_plinth_diam(size)+slop; @@ -422,12 +422,12 @@ module nema_mount_holes(size=17, depth=5, l=5, slop=PRINTER_SLOP, orient=ORIENT_ // l = The length of the slots, for making an adjustable motor mount. Default: 5 // slop = The printer-specific slop value to make parts fit just right. Default: `PRINTER_SLOP` // orient = Orientation of the stepper. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Z`. -// align = Alignment of the stepper. Use the `V_` constants from `constants.scad`. Default: `V_CENTER`. +// align = Alignment of the stepper. Use the constants from `constants.scad`. Default: `CENTER`. // Example: // nema11_mount_holes(depth=5, l=5); // Example: // nema11_mount_holes(depth=5, l=0); -module nema11_mount_holes(depth=5, l=5, slop=PRINTER_SLOP, orient=ORIENT_Z, align=V_CENTER) +module nema11_mount_holes(depth=5, l=5, slop=PRINTER_SLOP, orient=ORIENT_Z, align=CENTER) { nema_mount_holes(size=11, depth=depth, l=l, slop=slop, orient=orient, align=align); } @@ -441,12 +441,12 @@ module nema11_mount_holes(depth=5, l=5, slop=PRINTER_SLOP, orient=ORIENT_Z, alig // l = The length of the slots, for making an adjustable motor mount. Default: 5 // slop = The printer-specific slop value to make parts fit just right. Default: `PRINTER_SLOP` // orient = Orientation of the stepper. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Z`. -// align = Alignment of the stepper. Use the `V_` constants from `constants.scad`. Default: `V_CENTER`. +// align = Alignment of the stepper. Use the constants from `constants.scad`. Default: `CENTER`. // Example: // nema14_mount_holes(depth=5, l=5); // Example: // nema14_mount_holes(depth=5, l=0); -module nema14_mount_holes(depth=5, l=5, slop=PRINTER_SLOP, orient=ORIENT_Z, align=V_CENTER) +module nema14_mount_holes(depth=5, l=5, slop=PRINTER_SLOP, orient=ORIENT_Z, align=CENTER) { nema_mount_holes(size=14, depth=depth, l=l, slop=slop, orient=orient, align=align); } @@ -460,12 +460,12 @@ module nema14_mount_holes(depth=5, l=5, slop=PRINTER_SLOP, orient=ORIENT_Z, alig // l = The length of the slots, for making an adjustable motor mount. Default: 5 // slop = The printer-specific slop value to make parts fit just right. Default: `PRINTER_SLOP` // orient = Orientation of the stepper. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Z`. -// align = Alignment of the stepper. Use the `V_` constants from `constants.scad`. Default: `V_CENTER`. +// align = Alignment of the stepper. Use the constants from `constants.scad`. Default: `CENTER`. // Example: // nema17_mount_holes(depth=5, l=5); // Example: // nema17_mount_holes(depth=5, l=0); -module nema17_mount_holes(depth=5, l=5, slop=PRINTER_SLOP, orient=ORIENT_Z, align=V_CENTER) +module nema17_mount_holes(depth=5, l=5, slop=PRINTER_SLOP, orient=ORIENT_Z, align=CENTER) { nema_mount_holes(size=17, depth=depth, l=l, slop=slop, orient=orient, align=align); } @@ -479,12 +479,12 @@ module nema17_mount_holes(depth=5, l=5, slop=PRINTER_SLOP, orient=ORIENT_Z, alig // l = The length of the slots, for making an adjustable motor mount. Default: 5 // slop = The printer-specific slop value to make parts fit just right. Default: `PRINTER_SLOP` // orient = Orientation of the stepper. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Z`. -// align = Alignment of the stepper. Use the `V_` constants from `constants.scad`. Default: `V_CENTER`. +// align = Alignment of the stepper. Use the constants from `constants.scad`. Default: `CENTER`. // Example: // nema23_mount_holes(depth=5, l=5); // Example: // nema23_mount_holes(depth=5, l=0); -module nema23_mount_holes(depth=5, l=5, slop=PRINTER_SLOP, orient=ORIENT_Z, align=V_CENTER) +module nema23_mount_holes(depth=5, l=5, slop=PRINTER_SLOP, orient=ORIENT_Z, align=CENTER) { nema_mount_holes(size=23, depth=depth, l=l, slop=slop, orient=orient, align=align); } @@ -498,12 +498,12 @@ module nema23_mount_holes(depth=5, l=5, slop=PRINTER_SLOP, orient=ORIENT_Z, alig // l = The length of the slots, for making an adjustable motor mount. Default: 5 // slop = The printer-specific slop value to make parts fit just right. Default: `PRINTER_SLOP` // orient = Orientation of the stepper. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Z`. -// align = Alignment of the stepper. Use the `V_` constants from `constants.scad`. Default: `V_CENTER`. +// align = Alignment of the stepper. Use the constants from `constants.scad`. Default: `CENTER`. // Example: // nema34_mount_holes(depth=5, l=5); // Example: // nema34_mount_holes(depth=5, l=0); -module nema34_mount_holes(depth=5, l=5, slop=PRINTER_SLOP, orient=ORIENT_Z, align=V_CENTER) +module nema34_mount_holes(depth=5, l=5, slop=PRINTER_SLOP, orient=ORIENT_Z, align=CENTER) { nema_mount_holes(size=34, depth=depth, l=l, slop=slop, orient=orient, align=align); } @@ -517,12 +517,12 @@ module nema34_mount_holes(depth=5, l=5, slop=PRINTER_SLOP, orient=ORIENT_Z, alig // l = The length of the slots, for making an adjustable motor mount. Default: 5 // slop = The printer-specific slop value to make parts fit just right. Default: `PRINTER_SLOP` // orient = Orientation of the stepper. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Z`. -// align = Alignment of the stepper. Use the `V_` constants from `constants.scad`. Default: `V_CENTER`. +// align = Alignment of the stepper. Use the constants from `constants.scad`. Default: `CENTER`. // Example: // nema34_mount_holes(depth=5, l=5); // Example: // nema34_mount_holes(depth=5, l=0); -module nema34_mount_holes(depth=5, l=5, slop=PRINTER_SLOP, orient=ORIENT_Z, align=V_CENTER) +module nema34_mount_holes(depth=5, l=5, slop=PRINTER_SLOP, orient=ORIENT_Z, align=CENTER) { nema_mount_holes(size=34, depth=depth, l=l, slop=slop, orient=orient, align=align); } diff --git a/paths.scad b/paths.scad index 8dbf2fb..7ef018d 100644 --- a/paths.scad +++ b/paths.scad @@ -235,7 +235,7 @@ module extrude_from_to(pt1, pt2, convexity=undef, twist=undef, scale=undef, slic // Example: // extrude_2d_hollow(wall=2, height=100, twist=90, slices=50) // circle(r=40, $fn=6); -module extrude_2d_hollow(wall=2, height=50, twist=90, slices=60, center=undef, orient=ORIENT_Z, align=V_UP) +module extrude_2d_hollow(wall=2, height=50, twist=90, slices=60, center=undef, orient=ORIENT_Z, align=UP) { orient_and_align([0,0,height], orient, align, center) { linear_extrude(height=height, twist=twist, slices=slices, center=true) { @@ -262,7 +262,7 @@ module extrude_2d_hollow(wall=2, height=50, twist=90, slices=60, center=undef, o // Example: // poly = [[-10,0], [-3,-5], [3,-5], [10,0], [0,-30]]; // extrude_2dpath_along_spiral(poly, h=200, r=50, twist=1080, $fn=36); -module extrude_2dpath_along_spiral(polyline, h, r, twist=360, center=undef, orient=ORIENT_Z, align=V_CENTER) { +module extrude_2dpath_along_spiral(polyline, h, r, twist=360, center=undef, orient=ORIENT_Z, align=CENTER) { pline_count = len(polyline); steps = ceil(segs(r)*(twist/360)); diff --git a/phillips_drive.scad b/phillips_drive.scad index 08dde3f..bcc59e5 100644 --- a/phillips_drive.scad +++ b/phillips_drive.scad @@ -58,7 +58,7 @@ include // phillips_drive(size="#2", shaft=6, l=20); // phillips_drive(size="#3", shaft=6, l=20); // } -module phillips_drive(size="#2", shaft=6, l=20, orient=ORIENT_Z, align=V_UP) { +module phillips_drive(size="#2", shaft=6, l=20, orient=ORIENT_Z, align=UP) { // These are my best guess reverse-engineered measurements of // the tip diameters of various phillips screwdriver sizes. ang = 11; diff --git a/primitives.scad b/primitives.scad index 449b7da..63279cf 100644 --- a/primitives.scad +++ b/primitives.scad @@ -55,17 +55,17 @@ use // // Arguments: // size = The size of the cube. -// align = The side of the origin to align to. Use `V_` constants from `constants.scad`. Default: `V_CENTER` -// center = If given, overrides `align`. A true value sets `align=V_CENTER`, false sets `align=V_UP+V_BACK+V_RIGHT`. +// align = The side of the origin to align to. Use constants from `constants.scad`. Default: `CENTER` +// center = If given, overrides `align`. A true value sets `align=CENTER`, false sets `align=UP+BACK+RIGHT`. // // Example: Simple regular cube. // cube(40); // Example: Rectangular cube, with given X, Y, and Z sizes. // cuboid([20,40,50]); -module cube(size, center=undef, align=V_ALLPOS) +module cube(size, center=undef, align=ALLPOS) { size = scalar_vec3(size); - orient_and_align(size, ORIENT_Z, align, center, noncentered=V_ALLPOS, chain=true) { + orient_and_align(size, ORIENT_Z, align, center, noncentered=ALLPOS, chain=true) { linear_extrude(height=size.z, convexity=2, center=true) { square([size.x, size.y], center=true); } @@ -90,8 +90,8 @@ module cube(size, center=undef, align=V_ALLPOS) // d1 = The bottom diameter of the cylinder. (Before orientation.) // d2 = The top diameter of the cylinder. (Before orientation.) // orient = Orientation of the cylinder. Use the `ORIENT_` constants from `constants.scad`. Default: vertical. -// align = The side of the origin to align to. Use `V_` constants from `constants.scad`. Default: `V_CENTER` -// center = If given, overrides `align`. A true value sets `align=V_CENTER`, false sets `align=V_UP+V_BACK+V_RIGHT`. +// align = The side of the origin to align to. Use constants from `constants.scad`. Default: `UP` +// center = If given, overrides `align`. A true value sets `align=CENTER`, false sets `align=UP+BACK+RIGHT`. // Example: By Radius // xdistribute(30) { // cylinder(h=40, r=10); @@ -102,14 +102,14 @@ module cube(size, center=undef, align=V_ALLPOS) // cylinder(h=40, d=25); // cylinder(h=40, d1=25, d2=10); // } -module cylinder(r=undef, d=undef, r1=undef, r2=undef, d1=undef, d2=undef, h=undef, l=undef, center=undef, orient=ORIENT_Z, align=ALIGN_POS) +module cylinder(r=undef, d=undef, r1=undef, r2=undef, d1=undef, d2=undef, h=undef, l=undef, center=undef, orient=ORIENT_Z, align=UP) { r1 = get_radius(r1=r1, r=r, d1=d1, d=d, dflt=1); r2 = get_radius(r1=r2, r=r, d1=d2, d=d, dflt=1); l = first_defined([h, l]); sides = segs(max(r1,r2)); size = [r1*2, r1*2, l]; - orient_and_align(size, orient, align, center, size2=[r2*2,r2*2], noncentered=ALIGN_POS, chain=true) { + orient_and_align(size, orient, align, center, size2=[r2*2,r2*2], noncentered=UP, chain=true) { linear_extrude(height=l, scale=r2/r1, convexity=2, center=true) { circle(r=r1, $fn=sides); } @@ -129,10 +129,10 @@ module cylinder(r=undef, d=undef, r1=undef, r2=undef, d1=undef, d2=undef, h=unde // r = Radius of the sphere. // d = Diameter of the sphere. // orient = Orientation of the sphere, if you don't like where the vertices lay. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Z`. -// align = Alignment of the sphere. Use the `V_` constants from `constants.scad`. Default: `V_CENTER`. +// align = Alignment of the sphere. Use the constants from `constants.scad`. Default: `CENTER`. // Example: // staggered_sphere(d=100); -module sphere(r=undef, d=undef, orient=ORIENT_Z, align=V_CENTER) +module sphere(r=undef, d=undef, orient=ORIENT_Z, align=CENTER) { r = get_radius(r=r, d=d, dflt=1); sides = segs(r); diff --git a/shapes.scad b/shapes.scad index 18839f8..addc04d 100644 --- a/shapes.scad +++ b/shapes.scad @@ -57,10 +57,10 @@ include // fillet = Radius of fillet for edge rounding. Default: No filleting. // edges = Edges to chamfer/fillet. Use `EDGE` constants from constants.scad. Default: `EDGES_ALL` // trimcorners = If true, rounds or chamfers corners where three chamferred/filleted edges meet. Default: `true` -// p1 = Align the cuboid's corner at `p1`, if given. Forces `align=V_UP+V_BACK+V_RIGHT`. +// p1 = Align the cuboid's corner at `p1`, if given. Forces `align=UP+BACK+RIGHT`. // p2 = If given with `p1`, defines the cornerpoints of the cuboid. -// align = The side of the origin to align to. Use `V_` constants from `constants.scad`. Default: `V_CENTER` -// center = If given, overrides `align`. A true value sets `align=V_CENTER`, false sets `align=V_UP+V_BACK+V_RIGHT`. +// align = The side of the origin to align to. Use constants from `constants.scad`. Default: `CENTER` +// center = If given, overrides `align`. A true value sets `align=CENTER`, false sets `align=UP+BACK+RIGHT`. // // Example: Simple regular cube. // cuboid(40); @@ -96,18 +96,18 @@ module cuboid( if (is_def(p1)) { if (is_def(p2)) { translate([for (v=array_zip([p1,p2],0)) min(v)]) { - cuboid(size=vabs(p2-p1), chamfer=chamfer, fillet=fillet, edges=edges, trimcorners=trimcorners, align=V_ALLPOS) children(); + cuboid(size=vabs(p2-p1), chamfer=chamfer, fillet=fillet, edges=edges, trimcorners=trimcorners, align=ALLPOS) children(); } } else { translate(p1) { - cuboid(size=size, chamfer=chamfer, fillet=fillet, edges=edges, trimcorners=trimcorners, align=V_ALLPOS) children(); + cuboid(size=size, chamfer=chamfer, fillet=fillet, edges=edges, trimcorners=trimcorners, align=ALLPOS) children(); } } } else { if (chamfer != undef) assertion(chamfer <= min(size)/2, "chamfer must be smaller than half the cube width, length, or height."); if (fillet != undef) assertion(fillet <= min(size)/2, "fillet must be smaller than half the cube width, length, or height."); majrots = [[0,90,0], [90,0,0], [0,0,0]]; - orient_and_align(size, ORIENT_Z, align, center=center, noncentered=V_ALLPOS, chain=true) { + orient_and_align(size, ORIENT_Z, align, center=center, noncentered=ALLPOS, chain=true) { if (chamfer != undef) { isize = [for (v = size) max(0.001, v-2*chamfer)]; if (edges == EDGES_ALL && trimcorners) { @@ -136,7 +136,7 @@ module cuboid( for (za=[-1,1], ya=[-1,1], xa=[-1,1]) { if (corner_edge_count(edges, [xa,ya,za]) > 2) { translate(vmul([xa,ya,za]/2, size-[1,1,1]*chamfer*4/3)) { - rot(from=V_UP, to=[xa,ya,za]) { + rot(from=UP, to=[xa,ya,za]) { upcube(chamfer*3); } } @@ -320,8 +320,8 @@ module upcube(size=[1,1,1]) {siz = scalar_vec3(size); up(siz[2]/2) cube(size=siz // h = Height of the prism. // shift = [x, y] amount to shift the center of the top with respect to the center of the bottom. // orient = Orientation of the prismoid. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Z`. -// align = Alignment of the prismoid by the axis-negative (size1) end. Use the `V_` constants from `constants.scad`. Default: `ALIGN_POS`. -// center = If given, overrides `align`. A true value sets `align=V_CENTER`, false sets `align=ALIGN_POS`. +// align = Alignment of the prismoid by the axis-negative (size1) end. Use the constants from `constants.scad`. Default: `UP`. +// center = If given, overrides `align`. A true value sets `align=CENTER`, false sets `align=UP`. // // Example: Rectangular Pyramid // prismoid(size1=[40,40], size2=[0,0], h=20); @@ -341,13 +341,13 @@ module upcube(size=[1,1,1]) {siz = scalar_vec3(size); up(siz[2]/2) cube(size=siz // prismoid(size1=[50,30], size2=[20,20], h=20, shift=[15,5]); module prismoid( size1=[1,1], size2=[1,1], h=1, shift=[0,0], - orient=ORIENT_Z, align=ALIGN_POS, center=undef + orient=ORIENT_Z, align=UP, center=undef ) { eps = 0.001; shiftby = point3d(point2d(shift)); s1 = [max(size1.x, eps), max(size1.y, eps)]; s2 = [max(size2.x, eps), max(size2.y, eps)]; - orient_and_align([s1.x,s1.y,h], orient, align, center, size2=s2, shift=shift, noncentered=ALIGN_POS, chain=true) { + orient_and_align([s1.x,s1.y,h], orient, align, center, size2=s2, shift=shift, noncentered=UP, chain=true) { polyhedron( points=[ [+s2.x/2, +s2.y/2, +h/2] + shiftby, @@ -394,7 +394,7 @@ module prismoid( // r2 = radius of vertical edge fillets at top. // shift = [x, y] amount to shift the center of the top with respect to the center of the bottom. // orient = Orientation of the prismoid. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Z`. -// align = Alignment of the prismoid by the axis-negative (`size1`) end. Use the `V_` constants from `constants.scad`. Default: `V_UP`. +// align = Alignment of the prismoid by the axis-negative (`size1`) end. Use the constants from `constants.scad`. Default: `UP`. // center = vertically center the prism. Overrides `align`. // // Example: Rounded Pyramid @@ -408,7 +408,7 @@ module prismoid( module rounded_prismoid( size1, size2, h, shift=[0,0], r=undef, r1=undef, r2=undef, - align=V_UP, orient=ORIENT_Z, center=undef + align=UP, orient=ORIENT_Z, center=undef ) { eps = 0.001; maxrad1 = min(size1.x/2, size1.y/2); @@ -416,7 +416,7 @@ module rounded_prismoid( rr1 = min(maxrad1, (r1!=undef)? r1 : r); rr2 = min(maxrad2, (r2!=undef)? r2 : r); shiftby = point3d(shift); - orient_and_align([size1.x, size1.y, h], orient, align, center, size2=size2, shift=shift, noncentered=ALIGN_POS, chain=true) { + orient_and_align([size1.x, size1.y, h], orient, align, center, size2=size2, shift=shift, noncentered=UP, chain=true) { down(h/2) { hull() { linear_extrude(height=eps, center=false, convexity=2) { @@ -452,14 +452,14 @@ module rounded_prismoid( // Arguments: // size = [width, thickness, height] // orient = The axis to place the hypotenuse along. Only accepts `ORIENT_X`, `ORIENT_Y`, or `ORIENT_Z` from `constants.scad`. Default: `ORIENT_Y`. -// align = The side of the origin to align to. Use `V_` constants from `constants.scad`. Default: `V_UP+V_BACK+V_RIGHT`. -// center = If given, overrides `align`. A true value sets `align=V_CENTER`, false sets `align=V_UP+V_BACK+V_RIGHT`. +// align = The side of the origin to align to. Use constants from `constants.scad`. Default: `UP+BACK+RIGHT`. +// center = If given, overrides `align`. A true value sets `align=CENTER`, false sets `align=UP+BACK+RIGHT`. // // Example: Centered // right_triangle([60, 10, 40], center=true); // Example: *Non*-Centered // right_triangle([60, 10, 40]); -module right_triangle(size=[1, 1, 1], orient=ORIENT_Y, align=V_ALLPOS, center=undef) +module right_triangle(size=[1, 1, 1], orient=ORIENT_Y, align=ALLPOS, center=undef) { size = scalar_vec3(size); orient_and_align(size, align=align, center=center, chain=true) { @@ -547,8 +547,8 @@ module right_triangle(size=[1, 1, 1], orient=ORIENT_Y, align=V_ALLPOS, center=un // fillet2 = The radius of the fillet on the axis-positive end of the cylinder. // realign = If true, rotate the cylinder by half the angle of one face. // orient = Orientation of the cylinder. Use the `ORIENT_` constants from `constants.scad`. Default: vertical. -// align = Alignment of the cylinder. Use the `V_` constants from `constants.scad`. Default: centered. -// center = If given, overrides `align`. A true value sets `align=V_CENTER`, false sets `align=ALIGN_POS`. +// align = Alignment of the cylinder. Use the constants from `constants.scad`. Default: centered. +// center = If given, overrides `align`. A true value sets `align=CENTER`, false sets `align=UP`. // // Example: By Radius // xdistribute(30) { @@ -591,7 +591,7 @@ module cyl( chamfang=undef, chamfang1=undef, chamfang2=undef, fillet=undef, fillet1=undef, fillet2=undef, circum=false, realign=false, from_end=false, - orient=ORIENT_Z, align=V_CENTER, center=undef + orient=ORIENT_Z, align=CENTER, center=undef ) { r1 = get_radius(r1, r, d1, d, 1); r2 = get_radius(r2, r, d2, d, 1); @@ -753,7 +753,7 @@ module cyl( module downcyl(r=undef, h=undef, l=undef, d=undef, d1=undef, d2=undef, r1=undef, r2=undef) { l = first_defined([l, h, 1]); - cyl(r=r, r1=r1, r2=r2, d=d, d1=d1, d2=d2, l=l, align=V_DOWN) children(); + cyl(r=r, r1=r1, r2=r2, d=d, d1=d1, d2=d2, l=l, align=DOWN) children(); } @@ -775,8 +775,8 @@ module downcyl(r=undef, h=undef, l=undef, d=undef, d1=undef, d2=undef, r1=undef, // d = Optional diameter of cylinder. (use instead of `r`) // d1 = Optional diameter of left (X-) end of cylinder. // d2 = Optional diameter of right (X+) end of cylinder. -// align = The side of the origin to align to. Use `V_` constants from `constants.scad`. Default: `V_CENTER` -// center = If given, overrides `align`. A `true` value sets `align=V_CENTER`, `false` sets `align=ALIGN_POS`. +// align = The side of the origin to align to. Use constants from `constants.scad`. Default: `CENTER` +// center = If given, overrides `align`. A `true` value sets `align=CENTER`, `false` sets `align=UP`. // // Example: By Radius // ydistribute(50) { @@ -789,7 +789,7 @@ module downcyl(r=undef, h=undef, l=undef, d=undef, d1=undef, d2=undef, r1=undef, // xcyl(l=35, d=20); // xcyl(l=35, d1=30, d2=10); // } -module xcyl(l=undef, r=undef, d=undef, r1=undef, r2=undef, d1=undef, d2=undef, h=undef, align=V_CENTER, center=undef) +module xcyl(l=undef, r=undef, d=undef, r1=undef, r2=undef, d1=undef, d2=undef, h=undef, align=CENTER, center=undef) { cyl(l=l, h=h, r=r, r1=r1, r2=r2, d=d, d1=d1, d2=d2, orient=ORIENT_X, align=align, center=center) children(); } @@ -813,8 +813,8 @@ module xcyl(l=undef, r=undef, d=undef, r1=undef, r2=undef, d1=undef, d2=undef, h // d = Diameter of cylinder. // d1 = Diameter of front (Y-) end of one. // d2 = Diameter of back (Y+) end of one. -// align = The side of the origin to align to. Use `V_` constants from `constants.scad`. Default: `V_CENTER` -// center = Overrides `align` if given. If true, `align=V_CENTER`, if false, `align=ALIGN_POS`. +// align = The side of the origin to align to. Use constants from `constants.scad`. Default: `CENTER` +// center = Overrides `align` if given. If true, `align=CENTER`, if false, `align=UP`. // // Example: By Radius // xdistribute(50) { @@ -827,7 +827,7 @@ module xcyl(l=undef, r=undef, d=undef, r1=undef, r2=undef, d1=undef, d2=undef, h // ycyl(l=35, d=20); // ycyl(l=35, d1=30, d2=10); // } -module ycyl(l=undef, r=undef, d=undef, r1=undef, r2=undef, d1=undef, d2=undef, h=undef, align=V_CENTER, center=undef) +module ycyl(l=undef, r=undef, d=undef, r1=undef, r2=undef, d1=undef, d2=undef, h=undef, align=CENTER, center=undef) { cyl(l=l, h=h, r=r, r1=r1, r2=r2, d=d, d1=d1, d2=d2, orient=ORIENT_Y, align=align, center=center) children(); } @@ -851,8 +851,8 @@ module ycyl(l=undef, r=undef, d=undef, r1=undef, r2=undef, d1=undef, d2=undef, h // d = Diameter of cylinder. // d1 = Diameter of front (Y-) end of one. // d2 = Diameter of back (Y+) end of one. -// align = The side of the origin to align to. Use `V_` constants from `constants.scad`. Default: `V_CENTER` -// center = Overrides `align` if given. If true, `align=V_CENTER`, if false, `align=ALIGN_POS`. +// align = The side of the origin to align to. Use constants from `constants.scad`. Default: `CENTER` +// center = Overrides `align` if given. If true, `align=CENTER`, if false, `align=UP`. // // Example: By Radius // xdistribute(50) { @@ -865,7 +865,7 @@ module ycyl(l=undef, r=undef, d=undef, r1=undef, r2=undef, d1=undef, d2=undef, h // zcyl(l=35, d=20); // zcyl(l=35, d1=30, d2=10); // } -module zcyl(l=undef, r=undef, d=undef, r1=undef, r2=undef, d1=undef, d2=undef, h=undef, align=V_CENTER, center=undef) +module zcyl(l=undef, r=undef, d=undef, r1=undef, r2=undef, d1=undef, d2=undef, h=undef, align=CENTER, center=undef) { cyl(l=l, h=h, r=r, r1=r1, r2=r2, d=d, d1=d1, d2=d2, orient=ORIENT_Z, align=align, center=center) children(); } @@ -902,7 +902,7 @@ module zcyl(l=undef, r=undef, d=undef, r1=undef, r2=undef, d1=undef, d2=undef, h // id2 = Inner diameter of top of tube. // realign = If true, rotate the tube by half the angle of one face. // orient = Orientation of the tube. Use the `ORIENT_` constants from `constants.scad`. Default: vertical. -// align = Alignment of the tube. Use the `V_` constants from `constants.scad`. Default: centered. +// align = Alignment of the tube. Use the constants from `constants.scad`. Default: centered. // // Example: These all Produce the Same Tube // tube(h=30, or=40, wall=5); @@ -923,7 +923,7 @@ module tube( od=undef, od1=undef, od2=undef, ir=undef, id=undef, ir1=undef, ir2=undef, id1=undef, id2=undef, - center=undef, orient=ORIENT_Z, align=ALIGN_POS, + center=undef, orient=ORIENT_Z, align=UP, realign=false ) { r1 = first_defined([or1, od1/2, r1, d1/2, or, od/2, r, d/2, ir1+wall, id1/2+wall, ir+wall, id/2+wall]); @@ -966,7 +966,7 @@ module tube( // od = outer diameter of the torus. (use with 'ir' or 'id') // id = inside diameter of the torus. (use with 'or' or 'od') // orient = Orientation of the torus. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Z`. -// align = Alignment of the torus. Use the `V_` constants from `constants.scad`. Default: `V_CENTER`. +// align = Alignment of the torus. Use the constants from `constants.scad`. Default: `CENTER`. // // Example: // // These all produce the same torus. @@ -979,7 +979,7 @@ module torus( r2=undef, d2=undef, or=undef, od=undef, ir=undef, id=undef, - orient=ORIENT_Z, align=V_CENTER, center=undef + orient=ORIENT_Z, align=CENTER, center=undef ) { orr = get_radius(r=or, d=od, dflt=1.0); irr = get_radius(r=ir, d=id, dflt=0.5); @@ -1009,10 +1009,10 @@ module torus( // d = Diameter of the sphere. // circum = If true, circumscribes the perfect sphere of the given radius/diameter. // orient = Orientation of the sphere, if you don't like where the vertices lay. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Z`. -// align = Alignment of the sphere. Use the `V_` constants from `constants.scad`. Default: `V_CENTER`. +// align = Alignment of the sphere. Use the constants from `constants.scad`. Default: `CENTER`. // Example: // spheroid(d=100, circum=true, $fn=10); -module spheroid(r=undef, d=undef, circum=false, orient=V_UP, align=V_CENTER) +module spheroid(r=undef, d=undef, circum=false, orient=UP, align=CENTER) { r = get_radius(r=r, d=d, dflt=1); hsides = segs(r); @@ -1040,11 +1040,11 @@ module spheroid(r=undef, d=undef, circum=false, orient=V_UP, align=V_CENTER) // d = Diameter of the sphere. // circum = If true, circumscribes the perfect sphere of the given size. // orient = Orientation of the sphere, if you don't like where the vertices lay. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Z`. -// align = Alignment of the sphere. Use the `V_` constants from `constants.scad`. Default: `V_CENTER`. +// align = Alignment of the sphere. Use the constants from `constants.scad`. Default: `CENTER`. // // Example: // staggered_sphere(d=100, circum=true, $fn=10); -module staggered_sphere(r=undef, d=undef, circum=false, orient=V_UP, align=V_CENTER) { +module staggered_sphere(r=undef, d=undef, circum=false, orient=UP, align=CENTER) { r = get_radius(r=r, d=d, dflt=1); sides = segs(r); vsides = max(3, ceil(sides/2))+1; @@ -1146,7 +1146,7 @@ module teardrop2d(r=1, d=undef, ang=45, cap_h=undef) // ang = Angle of hat walls from the Z axis. (Default: 45 degrees) // cap_h = If given, height above center where the shape will be truncated. // orient = Orientation of the shape. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Y`. -// align = Alignment of the shape. Use the `V_` constants from `constants.scad`. Default: `V_CENTER`. +// align = Alignment of the shape. Use the constants from `constants.scad`. Default: `CENTER`. // // Example: Typical Shape // teardrop(r=30, h=10, ang=30); @@ -1154,7 +1154,7 @@ module teardrop2d(r=1, d=undef, ang=45, cap_h=undef) // teardrop(r=30, h=10, ang=30, cap_h=40); // Example: Close Crop // teardrop(r=30, h=10, ang=30, cap_h=20); -module teardrop(r=undef, d=undef, l=undef, h=undef, ang=45, cap_h=undef, orient=ORIENT_Y, align=V_CENTER) +module teardrop(r=undef, d=undef, l=undef, h=undef, ang=45, cap_h=undef, orient=ORIENT_Y, align=CENTER) { r = get_radius(r=r, d=d, dflt=1); l = first_defined([l, h, 1]); @@ -1182,7 +1182,7 @@ module teardrop(r=undef, d=undef, l=undef, h=undef, ang=45, cap_h=undef, orient= // cap_h = height above sphere center to truncate teardrop shape. // maxang = angle of cone on top from vertical. // orient = Orientation of the shape. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Y`. -// align = Alignment of the shape. Use the `V_` constants from `constants.scad`. Default: `V_CENTER`. +// align = Alignment of the shape. Use the constants from `constants.scad`. Default: `CENTER`. // // Example: Typical Shape // onion(r=30, maxang=30); @@ -1190,7 +1190,7 @@ module teardrop(r=undef, d=undef, l=undef, h=undef, ang=45, cap_h=undef, orient= // onion(r=30, maxang=30, cap_h=40); // Example: Close Crop // onion(r=30, maxang=30, cap_h=20); -module onion(cap_h=undef, r=undef, d=undef, maxang=45, h=undef, orient=ORIENT_Z, align=V_CENTER) +module onion(cap_h=undef, r=undef, d=undef, maxang=45, h=undef, orient=ORIENT_Z, align=CENTER) { r = get_radius(r=r, d=d, dflt=1); h = first_defined([cap_h, h]); @@ -1225,11 +1225,11 @@ module onion(cap_h=undef, r=undef, d=undef, maxang=45, h=undef, orient=ORIENT_Z, // wall = height of rectangular portion of the strut. // ang = angle that the trianglar side will converge at. // orient = Orientation of the length axis of the shape. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Y`. -// align = Alignment of the shape. Use the `V_` constants from `constants.scad`. Default: `V_CENTER`. +// align = Alignment of the shape. Use the constants from `constants.scad`. Default: `CENTER`. // // Example: // narrowing_strut(w=10, l=100, wall=5, ang=30); -module narrowing_strut(w=10, l=100, wall=5, ang=30, orient=ORIENT_Y, align=V_UP) +module narrowing_strut(w=10, l=100, wall=5, ang=30, orient=ORIENT_Y, align=UP) { h = wall + w/2/tan(ang); size = [w, h, l]; @@ -1269,13 +1269,13 @@ module narrowing_strut(w=10, l=100, wall=5, ang=30, orient=ORIENT_Y, align=V_UP) // strut = the width of the diagonal brace. // wall = the thickness of the thinned portion of the wall. // orient = Orientation of the length axis of the wall. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_X`. -// align = Alignment of the shape. Use the `V_` constants from `constants.scad`. Default: `V_CENTER`. +// align = Alignment of the shape. Use the constants from `constants.scad`. Default: `CENTER`. // // Example: Typical Shape // thinning_wall(h=50, l=80, thick=4); // Example: Trapezoidal // thinning_wall(h=50, l=[80,50], thick=4); -module thinning_wall(h=50, l=100, thick=5, ang=30, strut=5, wall=2, orient=ORIENT_Z, align=V_CENTER) +module thinning_wall(h=50, l=100, thick=5, ang=30, strut=5, wall=2, orient=ORIENT_Z, align=CENTER) { l1 = (l[0] == undef)? l : l[0]; l2 = (l[1] == undef)? l : l[1]; @@ -1413,11 +1413,11 @@ module thinning_wall(h=50, l=100, thick=5, ang=30, strut=5, wall=2, orient=ORIEN // strut = the width of the diagonal brace. // wall = the thickness of the thinned portion of the wall. // orient = Orientation of the length axis of the wall. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Y`. -// align = Alignment of the shape. Use the `V_` constants from `constants.scad`. Default: `V_CENTER`. +// align = Alignment of the shape. Use the constants from `constants.scad`. Default: `CENTER`. // // Example: Typical Shape // braced_thinning_wall(h=50, l=100, thick=5); -module braced_thinning_wall(h=50, l=100, thick=5, ang=30, strut=5, wall=2, orient=ORIENT_Y, align=V_CENTER) +module braced_thinning_wall(h=50, l=100, thick=5, ang=30, strut=5, wall=2, orient=ORIENT_Y, align=CENTER) { dang = atan((h-2*strut)/(l-2*strut)); dlen = (h-2*strut)/sin(dang); @@ -1465,8 +1465,8 @@ module braced_thinning_wall(h=50, l=100, thick=5, ang=30, strut=5, wall=2, orien // wall = the thickness of the thinned portion of the wall. // diagonly = boolean, which denotes only the diagonal side (hypotenuse) should be thick. // orient = Orientation of the length axis of the shape. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Y`. -// align = Alignment of the shape. Use the `V_` constants from `constants.scad`. Default: `V_CENTER`. -// center = If true, centers shape. If false, overrides `align` with `V_UP+V_BACK`. +// align = Alignment of the shape. Use the constants from `constants.scad`. Default: `CENTER`. +// center = If true, centers shape. If false, overrides `align` with `UP+BACK`. // // Example: Centered // thinning_triangle(h=50, l=80, thick=4, ang=30, strut=5, wall=2, center=true); @@ -1474,12 +1474,12 @@ module braced_thinning_wall(h=50, l=100, thick=5, ang=30, strut=5, wall=2, orien // thinning_triangle(h=50, l=80, thick=4, ang=30, strut=5, wall=2, center=false); // Example: Diagonal Brace Only // thinning_triangle(h=50, l=80, thick=4, ang=30, strut=5, wall=2, diagonly=true, center=false); -module thinning_triangle(h=50, l=100, thick=5, ang=30, strut=5, wall=3, diagonly=false, center=undef, orient=ORIENT_Y, align=V_CENTER) +module thinning_triangle(h=50, l=100, thick=5, ang=30, strut=5, wall=3, diagonly=false, center=undef, orient=ORIENT_Y, align=CENTER) { dang = atan(h/l); dlen = h/sin(dang); size = [thick, l, h]; - orient_and_align(size, orient, align, center=center, noncentered=V_UP+V_BACK, orig_orient=ORIENT_Y, chain=true) { + orient_and_align(size, orient, align, center=center, noncentered=UP+BACK, orig_orient=ORIENT_Y, chain=true) { difference() { union() { if (!diagonly) { @@ -1524,7 +1524,7 @@ module thinning_triangle(h=50, l=100, thick=5, ang=30, strut=5, wall=3, diagonly // max_bridge = maximum bridging distance between cross-braces. // strut = the width of the cross-braces. // orient = Orientation of the length axis of the shape. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Y`. -// align = Alignment of the shape. Use the `V_` constants from `constants.scad`. Default: `V_CENTER`. +// align = Alignment of the shape. Use the constants from `constants.scad`. Default: `CENTER`. // // Example: Typical Shape // sparse_strut(h=40, l=100, thick=3); @@ -1534,7 +1534,7 @@ module thinning_triangle(h=50, l=100, thick=5, ang=30, strut=5, wall=3, diagonly // sparse_strut(h=40, l=100, thick=3, strut=2, maxang=45); // Example: Longer max_bridge // sparse_strut(h=40, l=100, thick=3, strut=2, maxang=45, max_bridge=30); -module sparse_strut(h=50, l=100, thick=4, maxang=30, strut=5, max_bridge=20, orient=ORIENT_Y, align=V_CENTER) +module sparse_strut(h=50, l=100, thick=4, maxang=30, strut=5, max_bridge=20, orient=ORIENT_Y, align=CENTER) { zoff = h/2 - strut/2; yoff = l/2 - strut/2; @@ -1591,7 +1591,7 @@ module sparse_strut(h=50, l=100, thick=4, maxang=30, strut=5, max_bridge=20, ori // max_bridge = maximum bridging distance between cross-braces. // strut = the width of the cross-braces. // orient = Orientation of the length axis of the shape. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Y`. -// align = Alignment of the shape. Use the `V_` constants from `constants.scad`. Default: `V_CENTER`. +// align = Alignment of the shape. Use the constants from `constants.scad`. Default: `CENTER`. // // Example: Typical Shape // sparse_strut3d(h=30, w=30, l=100); @@ -1601,7 +1601,7 @@ module sparse_strut(h=50, l=100, thick=4, maxang=30, strut=5, max_bridge=20, ori // sparse_strut3d(h=30, w=30, l=100, strut=2, maxang=50); // Example: Smaller max_bridge // sparse_strut3d(h=30, w=30, l=100, strut=2, maxang=50, max_bridge=20); -module sparse_strut3d(h=50, l=100, w=50, thick=3, maxang=40, strut=3, max_bridge=30, orient=ORIENT_Y, align=V_CENTER) +module sparse_strut3d(h=50, l=100, w=50, thick=3, maxang=40, strut=3, max_bridge=30, orient=ORIENT_Y, align=CENTER) { xoff = w - thick; @@ -1687,7 +1687,7 @@ module sparse_strut3d(h=50, l=100, w=50, thick=3, maxang=40, strut=3, max_bridge // strut = the width of the cross-braces. // wall = thickness of corrugations. // orient = Orientation of the length axis of the shape. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Y`. -// align = Alignment of the shape. Use the `V_` constants from `constants.scad`. Default: `V_CENTER`. +// align = Alignment of the shape. Use the constants from `constants.scad`. Default: `CENTER`. // // Example: Typical Shape // corrugated_wall(h=50, l=100); @@ -1695,7 +1695,7 @@ module sparse_strut3d(h=50, l=100, w=50, thick=3, maxang=40, strut=3, max_bridge // corrugated_wall(h=50, l=100, strut=8); // Example: Thicker Wall // corrugated_wall(h=50, l=100, strut=8, wall=3); -module corrugated_wall(h=50, l=100, thick=5, strut=5, wall=2, orient=ORIENT_Y, align=V_CENTER) +module corrugated_wall(h=50, l=100, thick=5, strut=5, wall=2, orient=ORIENT_Y, align=CENTER) { amplitude = (thick - wall) / 2; period = min(15, thick * 2); @@ -1760,8 +1760,8 @@ module noop() children(); // d1 = bottom diameter of pie slice. // d2 = top diameter of pie slice. // orient = Orientation of the pie slice. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Z`. -// align = Alignment of the pie slice. Use the `V_` constants from `constants.scad`. Default: `V_CENTER`. -// center = If given, overrides `align`. A true value sets `align=V_CENTER`, false sets `align=ALIGN_POS`. +// align = Alignment of the pie slice. Use the constants from `constants.scad`. Default: `CENTER`. +// center = If given, overrides `align`. A true value sets `align=CENTER`, false sets `align=UP`. // // Example: Cylindrical Pie Slice // pie_slice(ang=45, l=20, r=30); @@ -1771,7 +1771,7 @@ module pie_slice( ang=30, l=undef, r=10, r1=undef, r2=undef, d=undef, d1=undef, d2=undef, - orient=ORIENT_Z, align=ALIGN_POS, + orient=ORIENT_Z, align=UP, center=undef, h=undef ) { l = first_defined([l, h, 1]); @@ -1808,7 +1808,7 @@ module pie_slice( // ang = angle between faces to fillet. // overlap = overlap size for unioning with faces. // orient = Orientation of the fillet. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_X`. -// align = Alignment of the fillet. Use the `V_` or `ALIGN_` constants from `constants.scad`. Default: `V_CENTER`. +// align = Alignment of the fillet. Use the constants from `constants.scad`. Default: `CENTER`. // // Example: // union() { @@ -1819,7 +1819,7 @@ module pie_slice( // // Example: // interior_fillet(l=40, r=10, orient=ORIENT_Y_90); -module interior_fillet(l=1.0, r=1.0, ang=90, overlap=0.01, orient=ORIENT_X, align=V_CENTER) { +module interior_fillet(l=1.0, r=1.0, ang=90, overlap=0.01, orient=ORIENT_X, align=CENTER) { dy = r/tan(ang/2); size = [l,r,r]; orient_and_align(size, orient, align, orig_orient=ORIENT_X, chain=true) { @@ -1903,7 +1903,7 @@ module slot( // sa = starting angle. (Default: 0.0) // ea = ending angle. (Default: 90.0) // orient = Orientation of the arced slot. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Z`. -// align = Alignment of the arced slot. Use the `V_` constants from `constants.scad`. Default: `V_CENTER`. +// align = Alignment of the arced slot. Use the constants from `constants.scad`. Default: `CENTER`. // center = If true, centers vertically. If false, drops flush with XY plane. Overrides `align`. // $fn2 = The $fn value to use on the small round endcaps. The major arcs are still based on $fn. Default: $fn // @@ -1916,7 +1916,7 @@ module arced_slot( sr=undef, sr1=undef, sr2=undef, sd=undef, sd1=undef, sd2=undef, sa=0, ea=90, cp=[0,0,0], - orient=ORIENT_Z, align=V_CENTER, + orient=ORIENT_Z, align=CENTER, $fn2 = undef ) { r = get_radius(r=r, d=d, dflt=2); @@ -1929,7 +1929,7 @@ module arced_slot( translate(cp) { zrot(sa) { difference() { - pie_slice(ang=da, l=h, r1=r+sr1, r2=r+sr2, orient=ORIENT_Z, align=V_CENTER); + pie_slice(ang=da, l=h, r1=r+sr1, r2=r+sr2, orient=ORIENT_Z, align=CENTER); cylinder(h=h+0.1, r1=r-sr1, r2=r-sr2, center=true); } right(r) cylinder(h=h, r1=sr1, r2=sr2, center=true, $fn=fn_minor); diff --git a/sliders.scad b/sliders.scad index 54b0e6e..9a0210b 100644 --- a/sliders.scad +++ b/sliders.scad @@ -59,10 +59,10 @@ include // ang = Overhang angle for slider, to facilitate supportless printig. // slop = Printer-specific slop value to make parts fit exactly. // orient = Orientation of the slider. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Y`. -// align = Alignment of the slider. Use the `V_` constants from `constants.scad`. Default: `V_UP`. +// align = Alignment of the slider. Use the constants from `constants.scad`. Default: `UP`. // Example: // slider(l=30, base=10, wall=4, slop=0.2, orient=ORIENT_Y); -module slider(l=30, w=10, h=10, base=10, wall=5, ang=30, slop=PRINTER_SLOP, orient=ORIENT_Y, align=V_UP) +module slider(l=30, w=10, h=10, base=10, wall=5, ang=30, slop=PRINTER_SLOP, orient=ORIENT_Y, align=UP) { full_width = w + 2*wall; full_height = h + base; @@ -70,18 +70,18 @@ module slider(l=30, w=10, h=10, base=10, wall=5, ang=30, slop=PRINTER_SLOP, orie orient_and_align([full_width, l, h+2*base], orient, align, orig_orient=ORIENT_Y) { down(base+h/2) { // Base - cuboid([full_width, l, base-slop], chamfer=2, edges=EDGE_TOP_FR+EDGE_TOP_BK+EDGES_Z_ALL, align=V_UP); + cuboid([full_width, l, base-slop], chamfer=2, edges=EDGE_TOP_FR+EDGE_TOP_BK+EDGES_Z_ALL, align=UP); // Wall xflip_copy(offset=w/2+slop) { - cuboid([wall, l, full_height], chamfer=2, edges=EDGE_TOP_RT+EDGE_FR_RT+EDGE_BK_RT, align=V_UP+V_RIGHT); + cuboid([wall, l, full_height], chamfer=2, edges=EDGE_TOP_RT+EDGE_FR_RT+EDGE_BK_RT, align=UP+RIGHT); } // Sliders up(base+h/2) { xflip_copy(offset=w/2+slop+0.02) { bev_h = h/2*tan(ang); - prismoid([l, h], [l-w, 0], h=bev_h+0.01, orient=ORIENT_XNEG, align=V_LEFT); + prismoid([l, h], [l-w, 0], h=bev_h+0.01, orient=ORIENT_XNEG, align=LEFT); } } } @@ -102,10 +102,10 @@ module slider(l=30, w=10, h=10, base=10, wall=5, ang=30, slop=PRINTER_SLOP, orie // chamfer = Size of chamfer at end of rail. // ang = Overhang angle for slider, to facilitate supportless printig. // orient = Orientation of the rail. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Y`. -// align = Alignment of the rail. Use the `V_` constants from `constants.scad`. Default: `V_UP`. +// align = Alignment of the rail. Use the constants from `constants.scad`. Default: `UP`. // Example: // rail(l=100, w=10, h=10); -module rail(l=30, w=10, h=10, chamfer=1.0, ang=30, orient=ORIENT_Y, align=V_UP) +module rail(l=30, w=10, h=10, chamfer=1.0, ang=30, orient=ORIENT_Y, align=UP) { attack_ang = 30; attack_len = 2; diff --git a/threading.scad b/threading.scad index 9c023cb..c91b31c 100644 --- a/threading.scad +++ b/threading.scad @@ -66,8 +66,8 @@ function _trpzd_thread_pt(thread, threads, start, starts, astep, asteps, part, p // bevel = if true, bevel the thread ends. Default: true // starts = The number of lead starts. Default = 1 // orient = Orientation of the rod. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Z`. -// align = Alignment of the rod. Use the `V_` constants from `constants.scad`. Default: `V_CENTER`. -// center = If given, overrides `align`. A true value sets `align=V_CENTER`, false sets `align=ALIGN_POS`. +// align = Alignment of the rod. Use the constants from `constants.scad`. Default: `CENTER`. +// center = If given, overrides `align`. A true value sets `align=CENTER`, false sets `align=UP`. // Examples: // trapezoidal_threaded_rod(d=10, l=100, pitch=2, thread_angle=15, $fn=32); // trapezoidal_threaded_rod(d=3/8*25.4, l=20, pitch=1/8*25.4, thread_angle=29, $fn=32); @@ -77,7 +77,7 @@ function _trpzd_thread_pt(thread, threads, start, starts, astep, asteps, part, p // trapezoidal_threaded_rod(d=10, l=40, pitch=3, thread_angle=15, left_handed=true, starts=3, $fn=36); // trapezoidal_threaded_rod(d=25, l=100, pitch=10, thread_depth=8/3, thread_angle=50, starts=4, center=false, $fa=2, $fs=2); // trapezoidal_threaded_rod(d=50, l=75, pitch=8, thread_angle=30, starts=3, bevel=true); -// trapezoidal_threaded_rod(l=25, d=10, pitch=2, thread_angle=15, starts=3, $fa=1, $fs=1, orient=ORIENT_X, align=ALIGN_POS); +// trapezoidal_threaded_rod(l=25, d=10, pitch=2, thread_angle=15, starts=3, $fa=1, $fs=1, orient=ORIENT_X, align=UP); module trapezoidal_threaded_rod( d=10, l=100, @@ -88,7 +88,7 @@ module trapezoidal_threaded_rod( bevel=false, starts=1, orient=ORIENT_Z, - align=V_CENTER, + align=CENTER, center=undef ) { astep = 360 / quantup(segs(d/2), starts); @@ -253,9 +253,9 @@ module trapezoidal_threaded_rod( // slop = printer slop calibration to allow for tight fitting of parts. default=0.2 // bevel = if true, bevel the thread ends. Default: true // orient = Orientation of the nut. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Z`. -// align = Alignment of the nut. Use the `V_` constants from `constants.scad`. Default: `V_CENTER`. +// align = Alignment of the nut. Use the constants from `constants.scad`. Default: `CENTER`. // Examples: -// trapezoidal_threaded_nut(od=16, id=8, h=8, pitch=2, slop=0.2, align=V_UP); +// trapezoidal_threaded_nut(od=16, id=8, h=8, pitch=2, slop=0.2, align=UP); // trapezoidal_threaded_nut(od=17.4, id=10, h=10, pitch=2, slop=0.2, left_handed=true); // trapezoidal_threaded_nut(od=17.4, id=10, h=10, pitch=2, thread_angle=15, starts=3, $fa=1, $fs=1); module trapezoidal_threaded_nut( @@ -270,7 +270,7 @@ module trapezoidal_threaded_nut( bevel=true, slop=PRINTER_SLOP, orient=ORIENT_Z, - align=V_CENTER + align=CENTER ) { depth = min((thread_depth==undef? pitch/2 : thread_depth), pitch/2/tan(thread_angle)); orient_and_align([od/cos(30),od,h], orient, align) { @@ -312,10 +312,10 @@ module trapezoidal_threaded_nut( // left_handed = if true, create left-handed threads. Default = false // bevel = if true, bevel the thread ends. Default: false // orient = Orientation of the rod. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Z`. -// align = Alignment of the rod. Use the `V_` constants from `constants.scad`. Default: `V_CENTER`. +// align = Alignment of the rod. Use the constants from `constants.scad`. Default: `CENTER`. // Examples: // threaded_rod(d=10, l=30, pitch=1.25, left_handed=true, $fa=1, $fs=1); -module threaded_rod(d=10, l=100, pitch=2, left_handed=false, bevel=false, orient=ORIENT_Z, align=V_CENTER) { +module threaded_rod(d=10, l=100, pitch=2, left_handed=false, bevel=false, orient=ORIENT_Z, align=CENTER) { trapezoidal_threaded_rod( d=d, l=l, pitch=pitch, thread_depth=pitch*3*sqrt(3)/8, @@ -342,14 +342,14 @@ module threaded_rod(d=10, l=100, pitch=2, left_handed=false, bevel=false, orient // bevel = if true, bevel the thread ends. Default: false // slop = printer slop calibration to allow for tight fitting of parts. default=0.2 // orient = Orientation of the nut. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Z`. -// align = Alignment of the nut. Use the `V_` constants from `constants.scad`. Default: `V_CENTER`. +// align = Alignment of the nut. Use the constants from `constants.scad`. Default: `CENTER`. // Examples: // threaded_nut(od=16, id=8, h=8, pitch=1.25, left_handed=true, slop=0.2, $fa=1, $fs=1); module threaded_nut( od=16, id=10, h=10, pitch=2, left_handed=false, bevel=false, slop=0.2, - orient=ORIENT_Z, align=V_CENTER + orient=ORIENT_Z, align=CENTER ) { trapezoidal_threaded_nut( od=od, id=id, h=h, @@ -376,7 +376,7 @@ module threaded_nut( // bevel = if true, bevel the thread ends. Default: false // starts = The number of lead starts. Default = 1 // orient = Orientation of the rod. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Z`. -// align = Alignment of the rod. Use the `V_` constants from `constants.scad`. Default: `V_CENTER`. +// align = Alignment of the rod. Use the constants from `constants.scad`. Default: `CENTER`. // Examples: // metric_trapezoidal_threaded_rod(d=10, l=30, pitch=2, left_handed=true, $fa=1, $fs=1); module metric_trapezoidal_threaded_rod( @@ -385,7 +385,7 @@ module metric_trapezoidal_threaded_rod( starts=1, bevel=false, orient=ORIENT_Z, - align=V_CENTER + align=CENTER ) { trapezoidal_threaded_rod( d=d, l=l, @@ -415,7 +415,7 @@ module metric_trapezoidal_threaded_rod( // starts = The number of lead starts. Default = 1 // slop = printer slop calibration to allow for tight fitting of parts. default=0.2 // orient = Orientation of the nut. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Z`. -// align = Alignment of the nut. Use the `V_` constants from `constants.scad`. Default: `V_CENTER`. +// align = Alignment of the nut. Use the constants from `constants.scad`. Default: `CENTER`. // Examples: // metric_trapezoidal_threaded_nut(od=16, id=10, h=10, pitch=2, left_handed=true, bevel=true, $fa=1, $fs=1); module metric_trapezoidal_threaded_nut( @@ -426,7 +426,7 @@ module metric_trapezoidal_threaded_nut( bevel=false, slop=PRINTER_SLOP, orient=ORIENT_Z, - align=V_CENTER + align=CENTER ) { trapezoidal_threaded_nut( od=od, id=id, h=h, @@ -457,7 +457,7 @@ module metric_trapezoidal_threaded_nut( // left_handed = if true, create left-handed threads. Default = false // bevel = if true, bevel the thread ends. Default: false // orient = Orientation of the rod. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Z`. -// align = Alignment of the rod. Use the `V_` constants from `constants.scad`. Default: `V_CENTER`. +// align = Alignment of the rod. Use the constants from `constants.scad`. Default: `CENTER`. // Examples: // acme_threaded_rod(d=3/8*25.4, l=20, pitch=1/8*25.4, $fn=32); // acme_threaded_rod(d=10, l=40, pitch=2, starts=3, $fa=1, $fs=1); @@ -469,7 +469,7 @@ module acme_threaded_rod( left_handed=false, bevel=false, orient=ORIENT_Z, - align=V_CENTER + align=CENTER ) { trapezoidal_threaded_rod( d=d, l=l, pitch=pitch, @@ -500,7 +500,7 @@ module acme_threaded_rod( // bevel = if true, bevel the thread ends. Default: false // slop = printer slop calibration to allow for tight fitting of parts. default=0.2 // orient = Orientation of the nut. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Z`. -// align = Alignment of the nut. Use the `V_` constants from `constants.scad`. Default: `V_CENTER`. +// align = Alignment of the nut. Use the constants from `constants.scad`. Default: `CENTER`. // Examples: // acme_threaded_nut(od=16, id=3/8*25.4, h=8, pitch=1/8*25.4, slop=0.2); // acme_threaded_nut(od=16, id=10, h=10, pitch=2, starts=3, slop=0.2, $fa=1, $fs=1); @@ -513,7 +513,7 @@ module acme_threaded_nut( bevel=false, slop=PRINTER_SLOP, orient=ORIENT_Z, - align=V_CENTER + align=CENTER ) { trapezoidal_threaded_nut( od=od, id=id, h=h, pitch=pitch, @@ -543,7 +543,7 @@ module acme_threaded_nut( // bevel = if true, bevel the thread ends. Default: false // starts = The number of lead starts. Default = 1 // orient = Orientation of the rod. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Z`. -// align = Alignment of the rod. Use the `V_` constants from `constants.scad`. Default: `V_CENTER`. +// align = Alignment of the rod. Use the constants from `constants.scad`. Default: `CENTER`. // Examples: // square_threaded_rod(d=10, l=30, pitch=2, starts=2, $fn=32); module square_threaded_rod( @@ -552,7 +552,7 @@ module square_threaded_rod( bevel=false, starts=1, orient=ORIENT_Z, - align=V_CENTER + align=CENTER ) { trapezoidal_threaded_rod( d=d, l=l, pitch=pitch, @@ -581,7 +581,7 @@ module square_threaded_rod( // starts = The number of lead starts. Default = 1 // slop = printer slop calibration to allow for tight fitting of parts. default=0.2 // orient = Orientation of the nut. Use the `ORIENT_` constants from `constants.scad`. Default: `ORIENT_Z`. -// align = Alignment of the nut. Use the `V_` constants from `constants.scad`. Default: `V_CENTER`. +// align = Alignment of the nut. Use the constants from `constants.scad`. Default: `CENTER`. // Examples: // square_threaded_nut(od=16, id=10, h=10, pitch=2, starts=2, slop=0.15, $fn=32); module square_threaded_nut( @@ -592,7 +592,7 @@ module square_threaded_nut( starts=1, slop=PRINTER_SLOP, orient=ORIENT_Z, - align=V_CENTER + align=CENTER ) { trapezoidal_threaded_nut( od=od, id=id, h=h, pitch=pitch, diff --git a/torx_drive.scad b/torx_drive.scad index 9805df7..3220334 100644 --- a/torx_drive.scad +++ b/torx_drive.scad @@ -215,7 +215,7 @@ module torx_drive2d(size) { // center = If true, centers bit vertically. // Examples: // torx_drive(size=30, l=10, $fa=1, $fs=1); -module torx_drive(size, l=5, center=undef, orient=ORIENT_Z, align=V_UP) { +module torx_drive(size, l=5, center=undef, orient=ORIENT_Z, align=UP) { od = torx_outer_diam(size); orient_and_align([od, od, l], orient, align, center) { linear_extrude(height=l, convexity=4, center=true) { diff --git a/transforms.scad b/transforms.scad index 15822e5..b5c5d88 100644 --- a/transforms.scad +++ b/transforms.scad @@ -254,7 +254,7 @@ module up(z=0) translate([0,0,z]) children(); // // Arguments: // a = Scalar angle or vector of XYZ rotation angles to rotate by, in degrees. -// v = vector for the axis of rotation. Default: [0,0,1] or V_UP +// v = vector for the axis of rotation. Default: [0,0,1] or UP // cp = centerpoint to rotate around. Default: [0,0,0] // from = Starting vector for vector-based rotations. // to = Target vector for vector-based rotations. @@ -270,7 +270,7 @@ module up(z=0) translate([0,0,z]) children(); // // Example: // #cube([2,4,9]); -// rot(from=V_UP, to=V_LEFT+V_BACK) cube([2,4,9]); +// rot(from=UP, to=LEFT+BACK) cube([2,4,9]); module rot(a=0, v=undef, cp=undef, from=undef, to=undef, reverse=false) { if (is_def(cp)) { @@ -700,7 +700,7 @@ module spread(p1=undef, p2=undef, spacing=undef, l=undef, n=undef) // } module xspread(spacing=undef, n=undef, l=undef, sp=undef) { - spread(l=l*V_RIGHT, spacing=spacing*V_RIGHT, n=n, p1=sp) children(); + spread(l=l*RIGHT, spacing=spacing*RIGHT, n=n, p1=sp) children(); } @@ -735,7 +735,7 @@ module xspread(spacing=undef, n=undef, l=undef, sp=undef) // } module yspread(spacing=undef, n=undef, l=undef, sp=undef) { - spread(l=l*V_BACK, spacing=spacing*V_BACK, n=n, p1=sp) children(); + spread(l=l*BACK, spacing=spacing*BACK, n=n, p1=sp) children(); } @@ -770,7 +770,7 @@ module yspread(spacing=undef, n=undef, l=undef, sp=undef) // } module zspread(spacing=undef, n=undef, l=undef, sp=undef) { - spread(l=l*V_UP, spacing=spacing*V_UP, n=n, p1=sp) children(); + spread(l=l*UP, spacing=spacing*UP, n=n, p1=sp) children(); } @@ -798,12 +798,12 @@ module zspread(spacing=undef, n=undef, l=undef, sp=undef) // `$idx` is set to the index number of each child being copied. // // Example: -// distribute(sizes=[100, 30, 50], dir=V_UP) { +// distribute(sizes=[100, 30, 50], dir=UP) { // sphere(r=50); // cube([10,20,30], center=true); // cylinder(d=30, h=50, center=true); // } -module distribute(spacing=undef, sizes=undef, dir=V_RIGHT, l=undef) +module distribute(spacing=undef, sizes=undef, dir=RIGHT, l=undef) { gaps = ($children < 2)? [0] : is_def(sizes)? [for (i=[0:$children-2]) sizes[i]/2 + sizes[i+1]/2] : @@ -849,7 +849,7 @@ module distribute(spacing=undef, sizes=undef, dir=V_RIGHT, l=undef) // } module xdistribute(spacing=10, sizes=undef, l=undef) { - dir = V_RIGHT; + dir = RIGHT; gaps = ($children < 2)? [0] : is_def(sizes)? [for (i=[0:$children-2]) sizes[i]/2 + sizes[i+1]/2] : [for (i=[0:$children-2]) 0]; @@ -894,7 +894,7 @@ module xdistribute(spacing=10, sizes=undef, l=undef) // } module ydistribute(spacing=10, sizes=undef, l=undef) { - dir = V_BACK; + dir = BACK; gaps = ($children < 2)? [0] : is_def(sizes)? [for (i=[0:$children-2]) sizes[i]/2 + sizes[i+1]/2] : [for (i=[0:$children-2]) 0]; @@ -939,7 +939,7 @@ module ydistribute(spacing=10, sizes=undef, l=undef) // } module zdistribute(spacing=10, sizes=undef, l=undef) { - dir = V_UP; + dir = UP; gaps = ($children < 2)? [0] : is_def(sizes)? [for (i=[0:$children-2]) sizes[i]/2 + sizes[i+1]/2] : [for (i=[0:$children-2]) 0]; @@ -1003,12 +1003,12 @@ module zdistribute(spacing=10, sizes=undef, l=undef) // grid2d(spacing=10, stagger=true, in_poly=hexregion) { // // Note: You must use for(var=[val]) or let(var=val) // // to set vars from $pos or other special vars in this scope. -// let (ref_v = (normalize([0,0,50]-point3d($pos)) + V_UP)/2) +// let (ref_v = (normalize([0,0,50]-point3d($pos)) + UP)/2) // half_of(v=-ref_v, cp=[0,0,5]) // zrot(180/6) // cylinder(h=20, d=10/cos(180/6)+0.01, $fn=6); // } -module grid2d(size=undef, spacing=undef, cols=undef, rows=undef, stagger=false, scale=[1,1,1], in_poly=undef, orient=ORIENT_Z, align=V_CENTER) +module grid2d(size=undef, spacing=undef, cols=undef, rows=undef, stagger=false, scale=[1,1,1], in_poly=undef, orient=ORIENT_Z, align=CENTER) { assert_in_list("stagger", stagger, [false, true, "alt"]); scl = vmul(scalar_vec3(scale, 1), (stagger!=false? [0.5, sin(60), 0] : [1,1,0])); @@ -1161,27 +1161,27 @@ module grid3d(xa=[0], ya=[0], za=[0], n=undef, spacing=undef) // rot_copies([[45,0,0],[0,45,90],[90,-45,270]]) cylinder(h=20, r1=5, r2=0); // // Example: -// rot_copies([45, 90, 135], v=V_DOWN+V_BACK) +// rot_copies([45, 90, 135], v=DOWN+BACK) // yrot(90) cylinder(h=20, r1=5, r2=0); // color("red",0.333) yrot(90) cylinder(h=20, r1=5, r2=0); // // Example: -// rot_copies(n=6, v=V_DOWN+V_BACK) +// rot_copies(n=6, v=DOWN+BACK) // yrot(90) cylinder(h=20, r1=5, r2=0); // color("red",0.333) yrot(90) cylinder(h=20, r1=5, r2=0); // // Example: -// rot_copies(n=6, v=V_DOWN+V_BACK, delta=[10,0,0]) +// rot_copies(n=6, v=DOWN+BACK, delta=[10,0,0]) // yrot(90) cylinder(h=20, r1=5, r2=0); // color("red",0.333) yrot(90) cylinder(h=20, r1=5, r2=0); // // Example: -// rot_copies(n=6, v=V_UP+V_FWD, delta=[10,0,0], sa=45) +// rot_copies(n=6, v=UP+FWD, delta=[10,0,0], sa=45) // yrot(90) cylinder(h=20, r1=5, r2=0); // color("red",0.333) yrot(90) cylinder(h=20, r1=5, r2=0); // // Example: -// rot_copies(n=6, v=V_DOWN+V_BACK, delta=[20,0,0], subrot=false) +// rot_copies(n=6, v=DOWN+BACK, delta=[20,0,0], subrot=false) // yrot(90) cylinder(h=20, r1=5, r2=0); // color("red",0.333) yrot(90) cylinder(h=20, r1=5, r2=0); module rot_copies(rots=[], v=undef, cp=[0,0,0], count=undef, n=undef, sa=0, offset=0, delta=[0,0,0], subrot=true) @@ -1254,7 +1254,7 @@ module xrot_copies(rots=[], cp=[0,0,0], n=undef, count=undef, sa=0, offset=0, r= { cnt = first_defined([count, n]); sang = sa + offset; - rot_copies(rots=rots, v=V_RIGHT, cp=cp, n=cnt, sa=sang, delta=[0, r, 0], subrot=subrot) children(); + rot_copies(rots=rots, v=RIGHT, cp=cp, n=cnt, sa=sang, delta=[0, r, 0], subrot=subrot) children(); } @@ -1307,7 +1307,7 @@ module yrot_copies(rots=[], cp=[0,0,0], n=undef, count=undef, sa=0, offset=0, r= { cnt = first_defined([count, n]); sang = sa + offset; - rot_copies(rots=rots, v=V_BACK, cp=cp, n=cnt, sa=sang, delta=[-r, 0, 0], subrot=subrot) children(); + rot_copies(rots=rots, v=BACK, cp=cp, n=cnt, sa=sang, delta=[-r, 0, 0], subrot=subrot) children(); } @@ -1360,7 +1360,7 @@ module zrot_copies(rots=[], cp=[0,0,0], n=undef, count=undef, sa=0, offset=0, r= { cnt = first_defined([count, n]); sang = sa + offset; - rot_copies(rots=rots, v=V_UP, cp=cp, n=cnt, sa=sang, delta=[r, 0, 0], subrot=subrot) children(); + rot_copies(rots=rots, v=UP, cp=cp, n=cnt, sa=sang, delta=[r, 0, 0], subrot=subrot) children(); } @@ -1572,7 +1572,7 @@ module ovoid_spread(r=undef, d=undef, n=100, cone_ang=90, scale=[1,1,1], perp=tr $rad = r; translate($pos) { if (perp) { - rot(from=V_UP, to=xyz) children(); + rot(from=UP, to=xyz) children(); } else { children(); } @@ -1613,8 +1613,8 @@ module ovoid_spread(r=undef, d=undef, n=100, cone_ang=90, scale=[1,1,1], perp=tr // color("blue",0.25) zrot(45) cube([0.01,15,15], center=true); // // Example: -// mirror_copy(V_UP+V_BACK, cp=[0,-5,-5]) rot(from=V_UP, to=V_BACK+V_UP) cylinder(d1=10, d2=0, h=20); -// color("blue",0.25) translate([0,-5,-5]) rot(from=V_UP, to=V_BACK+V_UP) cube([15,15,0.01], center=true); +// mirror_copy(UP+BACK, cp=[0,-5,-5]) rot(from=UP, to=BACK+UP) cylinder(d1=10, d2=0, h=20); +// color("blue",0.25) translate([0,-5,-5]) rot(from=UP, to=BACK+UP) cube([15,15,0.01], center=true); module mirror_copy(v=[0,0,1], offset=0, cp=[0,0,0]) { nv = v/norm(v); @@ -1750,23 +1750,23 @@ module zflip_copy(offset=0, cp=[0,0,0]) // Slices an object at a cut plane, and masks away everything that is on one side. // // Arguments: -// v = Normal of plane to slice at. Keeps everything on the side the normal points to. Default: [0,0,1] (V_UP) +// v = Normal of plane to slice at. Keeps everything on the side the normal points to. Default: [0,0,1] (UP) // cp = If given as a scalar, moves the cut plane along the normal by the given amount. If given as a point, specifies a point on the cut plane. This can be used to shift where it slices the object at. Default: [0,0,0] // s = Mask size to use. Use a number larger than twice your object's largest axis. If you make this too large, it messes with centering your view. Default: 100 -// planar = If true, this becomes a 2D operation. When planar, a `v` of `V_UP` or `V_DOWN` becomes equivalent of `V_BACK` and `V_FWD` respectively. +// planar = If true, this becomes a 2D operation. When planar, a `v` of `UP` or `DOWN` becomes equivalent of `BACK` and `FWD` respectively. // // Examples: -// half_of(V_DOWN+V_BACK, cp=[0,-10,0]) cylinder(h=40, r1=10, r2=0, center=false); -// half_of(V_DOWN+V_LEFT, s=200) sphere(d=150); +// half_of(DOWN+BACK, cp=[0,-10,0]) cylinder(h=40, r1=10, r2=0, center=false); +// half_of(DOWN+LEFT, s=200) sphere(d=150); // Example(2D): // half_of([1,1], planar=true) circle(d=50); -module half_of(v=V_UP, cp=[0,0,0], s=100, planar=false) +module half_of(v=UP, cp=[0,0,0], s=100, planar=false) { cp = is_scalar(cp)? cp*normalize(v) : cp; if (cp != [0,0,0]) { translate(cp) half_of(v=v, s=s, planar=planar) translate(-cp) children(); } else if (planar) { - v = (v==V_UP)? V_BACK : (v==V_DOWN)? V_FWD : v; + v = (v==UP)? BACK : (v==DOWN)? FWD : v; ang = atan2(v.y, v.x); difference() { children(); @@ -1777,7 +1777,7 @@ module half_of(v=V_UP, cp=[0,0,0], s=100, planar=false) } else { difference() { children(); - rot(from=V_UP, to=-v) { + rot(from=UP, to=-v) { up(s/2) cube(s, center=true); } } @@ -1806,7 +1806,7 @@ module half_of(v=V_UP, cp=[0,0,0], s=100, planar=false) // top_half(planar=true) circle(r=20); module top_half(s=100, cp=[0,0,0], planar=false) { - dir = planar? V_BACK : V_UP; + dir = planar? BACK : UP; cp = is_scalar(cp)? cp*dir : cp; translate(cp) difference() { translate(-cp) children(); @@ -1843,7 +1843,7 @@ module top_half(s=100, cp=[0,0,0], planar=false) // bottom_half(planar=true) circle(r=20); module bottom_half(s=100, cp=[0,0,0], planar=false) { - dir = planar? V_FWD : V_DOWN; + dir = planar? FWD : DOWN; cp = is_scalar(cp)? cp*dir : cp; translate(cp) difference() { translate(-cp) children(); @@ -1880,7 +1880,7 @@ module bottom_half(s=100, cp=[0,0,0], planar=false) // left_half(planar=true) circle(r=20); module left_half(s=100, cp=[0,0,0], planar=false) { - dir = V_LEFT; + dir = LEFT; cp = is_scalar(cp)? cp*dir : cp; translate(cp) difference() { translate(-cp) children(); @@ -1917,7 +1917,7 @@ module left_half(s=100, cp=[0,0,0], planar=false) // right_half(planar=true) circle(r=20); module right_half(s=100, cp=[0,0,0], planar=false) { - dir = V_RIGHT; + dir = RIGHT; cp = is_scalar(cp)? cp*dir : cp; translate(cp) difference() { translate(-cp) children(); @@ -1954,7 +1954,7 @@ module right_half(s=100, cp=[0,0,0], planar=false) // front_half(planar=true) circle(r=20); module front_half(s=100, cp=[0,0,0], planar=false) { - dir = V_FWD; + dir = FWD; cp = is_scalar(cp)? cp*dir : cp; translate(cp) difference() { translate(-cp) children(); @@ -1991,7 +1991,7 @@ module front_half(s=100, cp=[0,0,0], planar=false) // back_half(planar=true) circle(r=20); module back_half(s=100, cp=[0,0,0], planar=false) { - dir = V_BACK; + dir = BACK; cp = is_scalar(cp)? cp*dir : cp; translate(cp) difference() { translate(-cp) children(); @@ -2058,7 +2058,7 @@ module chain_hull() // r = Radius of arc. // d = Diameter of arc. // orient = The axis to align to. Use `ORIENT_` constants from `constants.scad` -// align = The side of the origin the part should be aligned with. Use `V_` constants from `constants.scad` +// align = The side of the origin the part should be aligned with. Use `` constants from `constants.scad` // masksize = size of mask used to clear unused part of circle arc. should be larger than height or width of 2D shapes to extrude. // caps = If true, spin the 2D shapes to make rounded caps the ends of the arc. // convexity = Max number of times a ray passes through the 2D shape's walls. @@ -2069,7 +2069,7 @@ module chain_hull() // extrude_arc(arc=270, sa=45, r=40, caps=true, convexity=4, $fa=2, $fs=2) { // polygon(points=pts); // } -module extrude_arc(arc=90, sa=0, r=undef, d=undef, orient=ORIENT_Z, align=V_CENTER, masksize=100, caps=false, convexity=4) +module extrude_arc(arc=90, sa=0, r=undef, d=undef, orient=ORIENT_Z, align=CENTER, masksize=100, caps=false, convexity=4) { eps = 0.001; r = get_radius(r=r, d=d, dflt=100); @@ -2192,7 +2192,7 @@ module shell2d(thickness, or=0, ir=0, fill=0, round=0) // orientations and alignments without extra translate()s and rotate()s. // Children should be vertically (Z-axis) oriented, and centered. // Non-extremity alignment points should be named via the `alignments` arg. -// Named alignments, as well as `ALIGN_NEG`/`ALIGN_POS` are aligned pre-rotation. +// Named alignments are aligned pre-rotation. // // Usage: // orient_and_align(size, [orient], [align], [center], [noncentered], [orig_orient], [orig_align], [alignments], [chain]) ... @@ -2204,9 +2204,9 @@ module shell2d(thickness, or=0, ir=0, fill=0, round=0) // orient = The axis to align to. Use `ORIENT_` constants from `constants.scad`. // align = The side of the origin the part should be aligned with. // center = If given, overrides `align`. If true, centers vertically. If false, `align` will be set to the value in `noncentered`. -// noncentered = The value to set `align` to if `center` == `false`. Default: `V_UP`. +// noncentered = The value to set `align` to if `center` == `false`. Default: `UP`. // orig_orient = The original orientation of the part. Default: `ORIENT_Z`. -// orig_align = The original alignment of the part. Default: `V_CENTER`. +// orig_align = The original alignment of the part. Default: `CENTER`. // alignments = A list of extra, non-standard connectors that can be aligned to. // chain = If true, allow attachable children. // @@ -2220,19 +2220,19 @@ module shell2d(thickness, or=0, ir=0, fill=0, round=0) // // Example: // #cylinder(d=5, h=10); -// orient_and_align([5,5,10], orient=ORIENT_Y, align=V_BACK, orig_align=V_UP) cylinder(d=5, h=10); +// orient_and_align([5,5,10], orient=ORIENT_Y, align=BACK, orig_align=UP) cylinder(d=5, h=10); module orient_and_align( - size=undef, orient=ORIENT_Z, align=V_CENTER, - center=undef, noncentered=ALIGN_POS, - orig_orient=ORIENT_Z, orig_align=V_CENTER, + size=undef, orient=ORIENT_Z, align=CENTER, + center=undef, noncentered=TOP, + orig_orient=ORIENT_Z, orig_align=CENTER, size2=undef, shift=[0,0], alignments=[], chain=false ) { size2 = point2d(default(size2, size)); shift = point2d(shift); - align = is_def(center)? (center? V_CENTER : noncentered) : align; + align = is_def(center)? (center? CENTER : noncentered) : align; m = matrix4_mult(concat( - (orig_align==V_CENTER)? [] : [ + (orig_align==CENTER)? [] : [ // If original alignment is not centered, center it. matrix4_translate(vmul(size/2, -orig_align)) ], @@ -2245,9 +2245,9 @@ module orient_and_align( ($attach_to!=undef)? ( let( conn = find_connector($attach_to, size.z, size, size2=size2, shift=shift), - ang = vector_angle(conn[2],V_DOWN), - axis = vector_axis(conn[2],V_DOWN), - ang2 = (conn[2]==V_UP || conn[2]==V_DOWN)? 0 : 180-conn[3], + ang = vector_angle(conn[2], DOWN), + axis = vector_axis(conn[2], DOWN), + ang2 = (conn[2]==UP || conn[2]==DOWN)? 0 : 180-conn[3], axis2 = rotate_points3d([axis],[0,0,ang2])[0] ) [ matrix4_translate(-conn[1]), @@ -2255,7 +2255,7 @@ module orient_and_align( matrix4_rot_by_axis(axis2, ang) ] ) : concat( - (!is_scalar(align) && !is_str(align))? [] : [ + (align==CENTER)? [] : [ let(conn = find_connector(align, size.z, size, size2=size2, shift=shift, extra_conns=alignments)) matrix4_translate(-conn[1]) ], @@ -2263,10 +2263,6 @@ module orient_and_align( matrix4_xrot(orient.x), matrix4_yrot(orient.y), matrix4_zrot(orient.z) - ], - (!is_array(align) || align==[0,0,0])? [] : [ - let(conn = find_connector(align, size.z, size, size2=size2, shift=shift)) - matrix4_translate(conn[1]) ] ) )); @@ -2295,15 +2291,6 @@ module orient_and_align( -// Internal. Not exposed. -function _str_char_split(s,delim,n=0,acc=[],word="") = - (n>=len(s))? concat(acc, [word]) : - (s[n]==delim)? - _str_char_split(s,delim,n+1,concat(acc,[word]),"") : - _str_char_split(s,delim,n+1,acc,str(word,s[n])); - - - // Function: connector() // Usage: // connector(name, pos, dir, [rot]) @@ -2314,7 +2301,7 @@ function _str_char_split(s,delim,n=0,acc=[],word="") = // pos = The [X,Y,Z] position of the connector. // dir = A vector pointing in the direction parts should project from the connector position. // rot = If needed, the angle to rotate the part around the direction vector. -function connector(name, pos=[0,0,0], dir=V_UP, rot=0) = [name, pos, dir, rot]; +function connector(name, pos=[0,0,0], dir=UP, rot=0) = [name, pos, dir, rot]; @@ -2332,49 +2319,25 @@ function connector(name, pos=[0,0,0], dir=V_UP, rot=0) = [name, pos, dir, rot]; // extra_conns = A list of extra named connectors. function find_connector(align, h, size, size2=undef, shift=[0,0], extra_conns=[]) = let( - eps = 1e-9, shift = point3d(shift), size = point3d(point2d(size)), size2 = (size2!=undef)? point3d(point2d(size2)) : size, found = !is_str(align)? [] : search([align], extra_conns, num_returns_per_match=1)[0] ) (found!=[])? extra_conns[found] : let( - words = is_scalar(align)? ( - align==ALIGN_NEG? ["top"] : - align==ALIGN_POS? ["bottom"] : - ["center"] - ) : is_array(align)? align : _str_char_split(align,"-"), - ovec = is_array(align)? align : - sum([ - for (word = words) - word=="left"? V_LEFT : - word=="right"? V_RIGHT : - word=="front"? V_FWD : - word=="back"? V_BACK : - word=="top"? V_UP : - word=="bottom"? V_DOWN : - word=="center"? V_ZERO : - assertion(false, - str( - "Alignment label '", align, "' is not known.", - (!extra_conns? "" : str( - " Try one of ", [for (v=extra_conns) v[0]], " or the standard alignments." - )) - ) - ) - ]), top = [-size2/2+shift, shift, size2/2+shift], - bot = [-size/2, V_ZERO, size/2], - toppt = [top[ovec.x+1].x, top[ovec.y+1].y, h/2], - botpt = [bot[ovec.x+1].x, bot[ovec.y+1].y, -h/2], - pos = lerp(botpt, toppt, (ovec.z+1)/2), + bot = [-size/2, CENTER, size/2], + toppt = [top[align.x+1].x, top[align.y+1].y, h/2], + botpt = [bot[align.x+1].x, bot[align.y+1].y, -h/2], + pos = lerp(botpt, toppt, (align.z+1)/2), oang = ( - ovec == V_UP? 0 : - ovec == V_DOWN? 0 : - (norm([ovec.x,ovec.y]) < eps)? 0 : atan2(ovec.y, ovec.x)+90 + align == UP? 0 : + align == DOWN? 0 : + (norm([align.x,align.y]) < EPSILON)? 0 : + atan2(align.y, align.x)+90 ), vec = ( - abs(ovec.z) > eps? ovec : - rotate_points3d([ovec], from=V_UP, to=toppt-botpt)[0] + abs(align.z) > EPSILON? align : + rotate_points3d([align], from=UP, to=toppt-botpt)[0] ) ) [align, pos, vec, oang]; @@ -2393,9 +2356,9 @@ function find_connector(align, h, size, size2=undef, shift=[0,0], extra_conns=[] // norot = If true, don't rotate children when aligning to the attachment point. // Example: // spheroid(d=20) { -// attach("top") down(1.5) cyl(l=11.5, d1=10, d2=5, align="bottom"); -// attach("right", "bottom") down(1.5) cyl(l=11.5, d1=10, d2=5); -// attach("front") down(1.5) cyl(l=11.5, d1=10, d2=5, align="bottom"); +// attach(TOP) down(1.5) cyl(l=11.5, d1=10, d2=5, align=BOTTOM); +// attach(RIGHT, BOTTOM) down(1.5) cyl(l=11.5, d1=10, d2=5); +// attach(FRONT) down(1.5) cyl(l=11.5, d1=10, d2=5, align=BOTTOM); // } module attach(name, to=undef, overlap=undef, norot=false) { @@ -2407,10 +2370,10 @@ module attach(name, to=undef, overlap=undef, norot=false) ang = conn[3]; $attach_to = to; $attach_conn = conn; - if (norot || (norm(vec-V_UP)<1e-9 && ang==0)) { + if (norot || (norm(vec-UP)<1e-9 && ang==0)) { translate(pos) translate([0,0,-overlap]) children(); } else { - translate(pos) rot(ang,from=V_UP,to=vec) translate([0,0,-overlap]) children(); + translate(pos) rot(ang,from=UP,to=vec) translate([0,0,-overlap]) children(); } }