mirror of
https://github.com/JustinSDK/dotSCAD.git
synced 2025-08-18 04:21:16 +02:00
refactor
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
use <bend.scad>;
|
use <bend.scad>;
|
||||||
use <square_maze.scad>;
|
use <experimental/mz_blocks.scad>;
|
||||||
|
use <experimental/mz_walls.scad>;
|
||||||
|
|
||||||
radius = 30;
|
radius = 30;
|
||||||
height = 60;
|
height = 60;
|
||||||
@@ -11,8 +12,7 @@ wall_top_scale = 0.25;
|
|||||||
|
|
||||||
fn = 24;
|
fn = 24;
|
||||||
|
|
||||||
module build_ramp_maze(rows, columns, blocks, block_width, wall_thickness, wall_height, wall_top_scale) {
|
module cylinder_maze() {
|
||||||
|
|
||||||
module ramp_line(point1, point2, width = 1, height = 1, top_scale = 0.25) {
|
module ramp_line(point1, point2, width = 1, height = 1, top_scale = 0.25) {
|
||||||
angle = 90 - atan((point2[1] - point1[1]) / (point2[0] - point1[0]));
|
angle = 90 - atan((point2[1] - point1[1]) / (point2[0] - point1[0]));
|
||||||
offset_x = 0.5 * width * cos(angle);
|
offset_x = 0.5 * width * cos(angle);
|
||||||
@@ -32,61 +32,26 @@ module build_ramp_maze(rows, columns, blocks, block_width, wall_thickness, wall_
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module draw_ramp_block(block, block_width, wall_thickness, wall_height, wall_top_scale) {
|
|
||||||
translate([get_x(block) - 1, get_y(block) - 1] * block_width) {
|
|
||||||
if(upper_wall(block) || upper_right_wall(block)) {
|
|
||||||
ramp_line(
|
|
||||||
[0, block_width], [block_width, block_width], wall_thickness, wall_height, wall_top_scale
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(right_wall(block) || upper_right_wall(block)) {
|
|
||||||
ramp_line(
|
|
||||||
[block_width, block_width], [block_width, 0], wall_thickness, wall_height, wall_top_scale
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for(block = blocks) {
|
|
||||||
draw_ramp_block(
|
|
||||||
block,
|
|
||||||
block_width,
|
|
||||||
wall_thickness,
|
|
||||||
wall_height,
|
|
||||||
wall_top_scale
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
ramp_line(
|
|
||||||
[0, 0], [block_width * columns, 0],
|
|
||||||
wall_thickness, wall_height, wall_top_scale
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
module cylinder_maze() {
|
|
||||||
maze_rows = round(height / block_width);
|
maze_rows = round(height / block_width);
|
||||||
maze_columns = round(2 * 3.14159 * radius / block_width);
|
maze_columns = round(2 * 3.14159 * radius / block_width);
|
||||||
|
|
||||||
maze_blocks = go_maze(
|
maze_blocks = mz_blocks(
|
||||||
1, maze_rows,
|
[1, maze_rows],
|
||||||
starting_maze(maze_rows, maze_columns),
|
|
||||||
maze_rows, maze_columns,
|
maze_rows, maze_columns,
|
||||||
x_circular = true
|
x_circular = true
|
||||||
);
|
);
|
||||||
|
|
||||||
|
walls = mz_walls(maze_blocks, maze_rows, maze_columns, block_width, left_border = false);
|
||||||
|
|
||||||
leng_circumference = block_width * maze_columns + wall_thickness;
|
leng_circumference = block_width * maze_columns + wall_thickness;
|
||||||
|
|
||||||
bend(size = [leng_circumference, block_width * maze_rows + wall_thickness, wall_height], angle = 360 + 360 * wall_thickness / leng_circumference, frags = fn)
|
bend(size = [leng_circumference, block_width * maze_rows + wall_thickness, wall_height], angle = 360 + 360 * wall_thickness / leng_circumference, frags = fn)
|
||||||
translate([0, wall_thickness / 2, 0]) build_ramp_maze(
|
translate([0, wall_thickness / 2])
|
||||||
maze_rows,
|
for(wall = walls) {
|
||||||
maze_columns,
|
for(i = [0:len(wall) - 2]) {
|
||||||
maze_blocks,
|
ramp_line(wall[i], wall[i + 1], wall_thickness, wall_height, wall_top_scale);
|
||||||
block_width,
|
}
|
||||||
wall_thickness,
|
}
|
||||||
wall_height,
|
|
||||||
wall_top_scale
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
cylinder_maze();
|
cylinder_maze();
|
||||||
|
Reference in New Issue
Block a user