| 2 | from .Mesh import Mesh |
| 3 | |
| 4 | class VoxelGrid: |
| 5 | def __init__(self, cell_size, dim=3): |
| 6 | self.dim = dim |
| 7 | if dim == 3: |
| 8 | self.raw_grid = PyMesh.VoxelGrid3D(cell_size) |
| 9 | elif dim == 2: |
| 10 | self.raw_grid = PyMesh.VoxelGrid2D(cell_size) |
| 11 | else: |
| 12 | raise NotImplementedError("Unsupported dim: {}".format(dim)) |
| 13 | |
| 14 | def insert_mesh(self, mesh): |
| 15 | assert(self.dim == mesh.dim) |
| 16 | self.raw_grid.insert_mesh(mesh.raw_mesh) |
| 17 | |
| 18 | def create_grid(self): |
| 19 | self.raw_grid.create_grid() |
| 20 | |
| 21 | def erode(self, itrs): |
| 22 | self.raw_grid.erode(itrs) |
| 23 | |
| 24 | def dilate(self, itrs): |
| 25 | self.raw_grid.dilate(itrs) |
| 26 | |
| 27 | def remove_cavities(self): |
| 28 | self.raw_grid.remove_cavities() |
| 29 | |
| 30 | @property |
| 31 | def mesh(self): |
| 32 | return Mesh(self.raw_grid.get_voxel_mesh()) |