1
0
mirror of https://github.com/JustinSDK/dotSCAD.git synced 2025-02-22 08:32:54 +01:00

add mz_hexwalls

This commit is contained in:
Justin Lin 2022-03-16 09:15:45 +08:00
parent c8efde6258
commit 3dc36af58b

47
src/maze/mz_hexwalls.scad Normal file
View File

@ -0,0 +1,47 @@
/**
* mz_hexwalls.scad
*
* @copyright Justin Lin, 2020
* @license https://opensource.org/licenses/lgpl-3.0.html
*
* @see https://openhome.cc/eGossip/OpenSCAD/lib3x-mz_hexwalls.html
*
**/
use <_impl/_mz_hex_walls.scad>;
function mz_hexwalls(cells, cell_radius, left_border = true, bottom_border = true) =
let(
rows = len([for(cell = cells) if(cell.x == 0) undef]),
columns = len([for(cell = cells) if(cell.y == 0) undef])
)
[
each [for(cell = cells, wall = _build_cell(cell_radius, cell)) wall],
if(left_border) each [
for(y = [0:rows - 1])
let(
cell_p = _cell_position(cell_radius, 0, y),
walls1 = _top_left(cell_radius),
walls2 = _bottom_left(cell_radius)
)
each [
[walls1[0] + cell_p, walls1[1] + cell_p],
[walls2[0] + cell_p, walls2[1] + cell_p]
]
],
if(bottom_border) each [
for(x = [0:columns - 1])
let(
cell_p = _cell_position(cell_radius, x, 0),
walls1 = _bottom(cell_radius)
)
each [
[walls1[0] + cell_p, walls1[1] + cell_p],
if(x % 2 == 0)
let(walls2 = [each _bottom_left(cell_radius), each _bottom_right(cell_radius)])
[walls2[0] + cell_p, walls2[1] + cell_p]
]
]
];