mirror of
https://github.com/JustinSDK/dotSCAD.git
synced 2025-08-15 03:05:41 +02:00
add knot_tiles
This commit is contained in:
55
examples/tiles/knot_tiles.scad
Normal file
55
examples/tiles/knot_tiles.scad
Normal file
@@ -0,0 +1,55 @@
|
||||
use <experimental/tile_truchet.scad>;
|
||||
use <arc.scad>;
|
||||
use <line2d.scad>;
|
||||
use <experimental/choose_children.scad>;
|
||||
|
||||
size = [50, 25];
|
||||
tile_width = 5;
|
||||
line_width = 1;
|
||||
|
||||
$fn = 12; // 4, 8, 12 ....
|
||||
|
||||
for(tile = tile_truchet(size)) {
|
||||
x = tile[0];
|
||||
y = tile[1];
|
||||
i = tile[2];
|
||||
|
||||
choose_children(i) {
|
||||
tile00(x, y, tile_width, line_width);
|
||||
tile01(x, y, tile_width, line_width);
|
||||
tile02(x, y, tile_width, line_width);
|
||||
tile03(x, y, tile_width, line_width);
|
||||
};
|
||||
}
|
||||
|
||||
module tile00(x, y, tile_width, line_width) {
|
||||
translate([x, y] * tile_width)
|
||||
arc(0.5 * tile_width, [0, 90], line_width);
|
||||
translate([x + 1, y + 1] * tile_width)
|
||||
arc(0.5 * tile_width, [180, 270], line_width);
|
||||
}
|
||||
|
||||
module tile01(x, y, tile_width, line_width) {
|
||||
translate([x, y + 1] * tile_width)
|
||||
arc(0.5 * tile_width, [270, 360], line_width);
|
||||
translate([x + 1, y] * tile_width)
|
||||
arc(0.5 * tile_width, [90, 180], line_width);
|
||||
}
|
||||
|
||||
module tile02(x, y, tile_width, line_width) {
|
||||
half_width = tile_width * 0.5;
|
||||
translate([x, y] * tile_width) {
|
||||
line2d([half_width, 0], [half_width, tile_width], line_width, p1Style = "CAP_BUTT", p2Style = "CAP_BUTT");
|
||||
line2d([0, half_width], [half_width - line_width, half_width], line_width, p1Style = "CAP_BUTT", p2Style = "CAP_BUTT");
|
||||
line2d([half_width + line_width, half_width], [tile_width, half_width], line_width, p1Style = "CAP_BUTT", p2Style = "CAP_BUTT");
|
||||
}
|
||||
}
|
||||
|
||||
module tile03(x, y, tile_width, line_width) {
|
||||
half_width = tile_width * 0.5;
|
||||
translate([x, y] * tile_width) {
|
||||
line2d([0, half_width], [tile_width, half_width], line_width, p1Style = "CAP_BUTT", p2Style = "CAP_BUTT");
|
||||
line2d([half_width, 0], [half_width, half_width - line_width], line_width, p1Style = "CAP_BUTT", p2Style = "CAP_BUTT");
|
||||
line2d([half_width, tile_width], [half_width, half_width + line_width], line_width, p1Style = "CAP_BUTT", p2Style = "CAP_BUTT");
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user