From 9e026d98ee40090c1a37481e72ec5f2851dee999 Mon Sep 17 00:00:00 2001 From: Justin Lin Date: Thu, 5 Sep 2019 20:01:57 +0800 Subject: [PATCH] add cube_maze --- examples/cube_maze.scad | 85 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 examples/cube_maze.scad diff --git a/examples/cube_maze.scad b/examples/cube_maze.scad new file mode 100644 index 00000000..734d53de --- /dev/null +++ b/examples/cube_maze.scad @@ -0,0 +1,85 @@ +include ; +include ; + +maze_rows = 8; +block_width = 2; +wall_thickness = 1; +inner_cube = false; +travel_all = true; + +module cube_maze(maze_rows, block_width, wall_thickness, inner_cube, travel_all) { + blocks_size = block_width * maze_rows; + cube_size = blocks_size - wall_thickness; + maze_size = blocks_size + wall_thickness; + + half_wall_thickness = wall_thickness / 2; + half_cube_size = cube_size / 2; + half_maze_size = maze_size / 2; + + origin = half_wall_thickness - half_maze_size; + + module two_mazes() { + translate([origin, origin, half_cube_size]) + linear_extrude(wall_thickness) build_square_maze( + maze_rows, + maze_rows, + go_maze( + 1, 1, // starting point + starting_maze(maze_rows, maze_rows), + maze_rows, maze_rows + ), + block_width, + wall_thickness + ); + + rotate([180, 0, 0]) + translate([origin, origin, half_cube_size]) + linear_extrude(wall_thickness) build_square_maze( + maze_rows, + maze_rows, + go_maze( + 1, 1, // starting point + starting_maze(maze_rows, maze_rows), + maze_rows, maze_rows + ), + block_width, + wall_thickness + ); + } + + if(inner_cube) { + cube(cube_size + 0.01, center= true); + } + + difference() { + union() { + two_mazes(); + rotate([90, 0, 0]) two_mazes(); + rotate([0, 90, 0]) two_mazes(); + } + + if(travel_all) { + union() { + translate([half_maze_size - wall_thickness * 2, -half_maze_size, half_cube_size]) + cube(wall_thickness); + + translate([half_maze_size - wall_thickness, half_maze_size - wall_thickness * 2, half_cube_size]) + cube(wall_thickness); + + translate([half_maze_size - wall_thickness, half_maze_size - wall_thickness, -half_cube_size]) + cube(wall_thickness); + + translate([-half_maze_size + wall_thickness, half_maze_size - wall_thickness, -half_cube_size - wall_thickness]) + cube(wall_thickness); + + translate([-half_maze_size, -half_maze_size + wall_thickness, -half_cube_size - wall_thickness]) + cube(wall_thickness); + + translate([-half_maze_size, -half_maze_size, half_cube_size - wall_thickness]) + cube(wall_thickness); + } + } + } +} + +cube_maze(maze_rows, block_width, wall_thickness, inner_cube, travel_all);