1
0
mirror of https://github.com/JustinSDK/dotSCAD.git synced 2025-08-14 10:44:48 +02:00

use [each lt, v] to replace concat(lt, [v])

This commit is contained in:
Justin Lin
2022-02-27 22:32:57 +08:00
parent 8dc6336f2f
commit 57f800f1fc
12 changed files with 47 additions and 55 deletions

View File

@@ -20,32 +20,29 @@ Drive a turtle with `["forward", length]` or `["turn", angle]`. This function is
ta = fa / 2, ta = fa / 2,
leng = sin(ta) * radius * 2 leng = sin(ta) * radius * 2
) )
concat( [
[["turn", ta]], ["turn", ta],
[ each [
for(i = [0:steps - 2]) for(i = [0:steps - 2])
each [["forward", leng], ["turn", fa]] each [["forward", leng], ["turn", fa]]
], ],
[["forward", leng], ["turn", ta]] ["forward", leng],
); ["turn", ta]
];
poly = footprints2( poly = footprints2(
concat( [
[ ["forward", 10],
["forward", 10], ["turn", 90],
["turn", 90], ["forward", 10],
["forward", 10] each arc_cmds(5, 180, 12),
], ["turn", -90],
arc_cmds(5, 180, 12), ["forward", 10],
[ ["turn", 90],
["turn", -90], ["forward", 10],
["forward", 10], ["turn", 90],
["turn", 90], ["forward", 10]
["forward", 10], ]
["turn", 90],
["forward", 10]
]
)
); );
polyline_join(poly) polyline_join(poly)

View File

@@ -20,33 +20,28 @@ A 3D verion of [footprint2](https://openhome.cc/eGossip/OpenSCAD/lib3x-footprint
ta = fa / 2, ta = fa / 2,
leng = sin(ta) * radius * 2 leng = sin(ta) * radius * 2
) )
concat( [
[["turn", ta]], ["turn", ta],
[ each [
for(i = [0:steps - 2]) for(i = [0:steps - 2])
each [["forward", leng], ["turn", fa]] each [["forward", leng], ["turn", fa]]
], ],
[["forward", leng], ["turn", ta]] ["forward", leng],
); ["turn", ta]
];
poly = footprints3( poly = footprints3(
concat( [
[ ["forward", 10],
["forward", 10], ["turn", 90],
["turn", 90], ["forward", 10],
["forward", 10] each xy_arc_cmds(5, 180, 12),
], ["pitch", 90],
xy_arc_cmds(5, 180, 12), ["forward", 10],
[ ["roll", 90],
["pitch", 90], each xy_arc_cmds(5, 180, 12),
["forward", 10], ["forward", 10]
["roll", 90] ]
],
xy_arc_cmds(5, 180, 12),
[
["forward", 10]
]
)
); );
polyline_join(poly) polyline_join(poly)

View File

@@ -54,7 +54,7 @@ Want to simulate class-based OO in OpenSCAD? Here's my experiment.
function clz_list(data) = function(name) _(name, function clz_list(data) = function(name) _(name,
methods([ methods([
["get", function(i) data[i]], ["get", function(i) data[i]],
["append", function(n) clz_list(concat(data, [n]))] ["append", function(n) clz_list([each data, n])]
]) ])
); );

View File

@@ -257,7 +257,7 @@ So, which is the correct method? Both methods are correct when you provide only
// not closed perfectly // not closed perfectly
translate([-8, 0, 0]) path_extrude( translate([-8, 0, 0]) path_extrude(
shape_pentagram_pts, shape_pentagram_pts,
concat(pts, [pts[0]]), [each pts, pts[0]],
closed = true, closed = true,
method = "AXIS_ANGLE" method = "AXIS_ANGLE"
); );
@@ -265,7 +265,7 @@ So, which is the correct method? Both methods are correct when you provide only
// adjust it // adjust it
path_extrude( path_extrude(
shape_pentagram_pts, shape_pentagram_pts,
concat(pts, [pts[0]]), [each pts, pts[0]],
closed = true, closed = true,
twist = 188, twist = 188,
method = "AXIS_ANGLE" method = "AXIS_ANGLE"
@@ -274,7 +274,7 @@ So, which is the correct method? Both methods are correct when you provide only
// "EULER_ANGLE" is easy in this situation // "EULER_ANGLE" is easy in this situation
translate([0, 8, 0]) path_extrude( translate([0, 8, 0]) path_extrude(
shape_pentagram_pts, shape_pentagram_pts,
concat(pts, [pts[0]]), [each pts, pts[0]],
closed = true, closed = true,
method = "EULER_ANGLE" method = "EULER_ANGLE"
); );

View File

@@ -29,7 +29,7 @@ Generate a path of [The (p,q)-torus knot](https://en.wikipedia.org/wiki/Torus_kn
path_extrude( path_extrude(
shape_pentagram_pts, shape_pentagram_pts,
concat(pts, [pts[0]]), [each pts, pts[0]],
closed = true, closed = true,
method = "EULER_ANGLE" method = "EULER_ANGLE"
); );

View File

@@ -32,7 +32,7 @@ Join a set of points to make a [Delaunay triangulation](https://en.wikipedia.org
color("red") color("red")
linear_extrude(3) linear_extrude(3)
for(t = tri_delaunay(points, ret = "VORONOI_CELLS")) { for(t = tri_delaunay(points, ret = "VORONOI_CELLS")) {
polyline_join(concat(t, [t[0]])) polyline_join([each t, t[0]])
circle(1); circle(1);
} }

View File

@@ -36,7 +36,7 @@ A method of [`tri_delaunay`](lib3x-tri_delaunay.html). Returns the indices from
color("red") color("red")
linear_extrude(3) linear_extrude(3)
for(t = tri_delaunay_voronoi(delaunay)) { for(t = tri_delaunay_voronoi(delaunay)) {
polyline_join(concat(t, [t[0]])) polyline_join([each t, t[0]])
circle(1); circle(1);
} }

View File

@@ -36,7 +36,7 @@ A method of [`tri_delaunay`](lib3x-tri_delaunay.html). Returns triangle shapes f
color("red") color("red")
linear_extrude(3) linear_extrude(3)
for(t = tri_delaunay_voronoi(delaunay)) { for(t = tri_delaunay_voronoi(delaunay)) {
polyline_join(concat(t, [t[0]])) polyline_join([each t, t[0]])
circle(1); circle(1);
} }

View File

@@ -36,7 +36,7 @@ A method of [`tri_delaunay`](lib3x-tri_delaunay.html). Returns voronoi cells fro
color("red") color("red")
linear_extrude(3) linear_extrude(3)
for(t = tri_delaunay_voronoi(delaunay)) { for(t = tri_delaunay_voronoi(delaunay)) {
polyline_join(concat(t, [t[0]])) polyline_join([each t, t[0]])
circle(1); circle(1);
} }

View File

@@ -21,7 +21,7 @@ Create cell shapes of Voronoi from a list of points.
cell = cells[i]; cell = cells[i];
linear_extrude(1) linear_extrude(1)
polyline_join(concat(cell, [cell[0]])) polyline_join([each cell, cell[0]])
circle(.5); circle(.5);
color(rands(0, 1, 3)) color(rands(0, 1, 3))

View File

@@ -24,7 +24,7 @@ Create cell shapes of Voronoi in the first quadrant. You specify a space and a g
cell_poly = cell[1]; cell_poly = cell[1];
linear_extrude(1) linear_extrude(1)
polyline_join(concat(cell_poly, [cell_poly[0]])) polyline_join([each cell_poly, cell_poly[0]])
circle(.5); circle(.5);
color(rands(0, 1, 3)) color(rands(0, 1, 3))

View File

@@ -18,7 +18,7 @@ Given a list of points. `vx_polyline` returns points that can be used to draw a
[round(pt.x), round(pt.y)] [round(pt.x), round(pt.y)]
]; ];
for(pt = vx_polyline(concat(pentagram, [pentagram[0]]))) { for(pt = vx_polyline([each pentagram, pentagram[0]])) {
translate(pt) translate(pt)
linear_extrude(1, scale = 0.5) linear_extrude(1, scale = 0.5)
square(1, center = true); square(1, center = true);