12345678910111213141516171819202122232425262728293031323334 |
- # Example usage with pygmsh package:
- # https://github.com/nschloe/pygmsh
- import pygmsh # pip install pygmsh
- from vedo import TetMesh, SphereCutter, Plotter
- with pygmsh.occ.Geometry() as geom:
- geom.characteristic_length_min = 0.1
- geom.characteristic_length_max = 0.1
- rectangle = geom.add_rectangle([-1.0, -1.0, 0.0], 2.0, 2.0)
- disk1 = geom.add_disk([-1.2, 0.0, 0.0], 0.5)
- disk2 = geom.add_disk([+1.2, 0.0, 0.0], 0.5)
- disk3 = geom.add_disk([0.0, -0.9, 0.0], 0.5)
- disk4 = geom.add_disk([0.0, +0.9, 0.0], 0.5)
- flat = geom.boolean_difference(
- geom.boolean_union([rectangle, disk1, disk2]),
- geom.boolean_union([disk3, disk4]),
- )
- geom.extrude(flat, [0, 0, 0.3])
- msh = geom.generate_mesh()
- lines, triangles, tetras, vertices = msh.cells
- vmsh = TetMesh([msh.points, tetras.data]).tomesh(fill=True)
- plt = Plotter(axes=1, interactive=False)
- plt.show(
- vmsh,
- "Drag the sphere,\nright-click&drag to zoom",
- )
- cutter = SphereCutter(vmsh)
- plt.add(cutter)
- plt.interactive()
- plt.close()
|