mirror of
https://github.com/JustinSDK/dotSCAD.git
synced 2025-01-17 22:28:16 +01:00
2.5 KiB
2.5 KiB
along_with
Puts children along the given path. If there's only one child, it will put the child for each point.
Parameters
points
: The points along the path.angles
: Rotate before translate each child. If not given, rotate children automatically according topoints
andmethod
.twist
: If given, each child will be twisted before applying each element ofpoints
andangles
.scale
: If given, each child will be scaled before applying each element ofpoints
andangles
. It accepts a single value,[sx, sy]
or[sx, sy, sz]
.method
: Which method doesalong_with
take to guess how to rotate children ifangles
is not specified? It accepts two value,"AXIS_ANGLE"
(default) and"EULER_ANGLE"
. Seepath_extrude
for more information. Since: 1.3
Examples
use <along_with.scad>;
use <shape_circle.scad>;
$fn = 24;
points = shape_circle(radius = 50);
along_with(points)
sphere(5);
use <along_with.scad>;
use <shape_circle.scad>;
$fn = 24;
points = shape_circle(radius = 50);
along_with(points) {
linear_extrude(10, center = true) text("A", valign = "center", halign = "center");
linear_extrude(5, center = true) circle(2);
sphere(1);
cube(5);
linear_extrude(10, center = true) text("A", valign = "center", halign = "center");
linear_extrude(5, center = true) circle(2);
sphere(1);
cube(5);
}
use <along_with.scad>;
use <golden_spiral.scad>;
pts_angles = golden_spiral(
from = 5,
to = 11,
point_distance = 4
);
points = [for(p_a = pts_angles) p_a[0]];
angles = [for(p_a = pts_angles) p_a[1]];
along_with(points, angles)
rotate([90, 0, 0])
linear_extrude(1, center = true)
text("A", valign = "center", halign = "center");
use <bezier_curve.scad>;
use <along_with.scad>;
module scales() {
module one_scale() {
rotate([0, 60, 0])
linear_extrude(1, center = true)
scale([2, 1])
circle(1.25, $fn = 24);
}
rotate([90, 0, 0])
for(a = [0:30:330]) {
rotate(a)
translate([5, 0, 0])
one_scale();
rotate(a + 15)
translate([5, 0, 1.75])
one_scale();
}
}
t_step = 0.01;
p0 = [0, 0, 0];
p1 = [0, 50, 35];
p2 = [-100, 70, 0];
p3 = [30, 120, -35];
p4 = [30, 150, -40];
p5 = [0, 200, -3];
path_pts = bezier_curve(t_step,
[p0, p1, p2, p3, p4, p5]
);
along_with(path_pts, scale = 0.5)
scales();