Как сохранить три angular меня sh в python - PullRequest
0 голосов
/ 07 мая 2020

У меня есть набор вершин и angular граней, которые вместе образуют треугольник angular меня sh:

import numpy as np

verts = [[0.1, 1.,  1. ]  [1.,  1.,  0.1]  [1.,  0.1, 1. ]  [1.,  1.,  1.9]  [1.,  1.9, 1. ]
 [1.9, 1.,  1. ] ]
faces = [[ 2,  1,  0]  [ 0,  3,  2]  [ 1,  4,  0]  [ 0,  4,  3]  [ 5,  1,  2]  [ 3,  5,  2]
 [ 5,  4,  1]  [ 4,  5,  3]]

Единственный известный мне способ создать из них треугольник angular me sh использует Poly3Dcollection

from mpl_toolkits.mplot3d.art3d import Poly3DCollection

myMesh = Poly3DCollection(verts[faces])

Затем я хочу использовать модуль pygalme sh для создания тома me sh. Он должен взять поверхность me sh и вывести объем me sh, как показано здесь .

Согласно руководству, я должен иметь возможность создать том me sh, используя:

import pygalmesh

mesh = pygalmesh.generate_volume_mesh_from_surface_mesh(
    "elephant.vtu",
    facet_angle=25.0,
    facet_size=0.15,
    facet_distance=0.008,
    cell_radius_edge_ratio=3.0,
    verbose=False
)

Однако, когда я запускаю:

mesh = pygalmesh.generate_volume_mesh_from_surface_mesh(myMesh)

I возвращается:

TypeError: expected str, bytes or os.PathLike object, not Poly3DCollection

Я думаю, это потому, что я либо неправильно создаю свой me sh, либо я должен сохранить его в какой-либо форме перед использованием pygalmesh.generate_volume_mesh_from_surface_mesh. Я не уверен. Я поднял проблему в модулях github , но пока не получил хороших отзывов.

1 Ответ

0 голосов
/ 08 мая 2020

Следуя совету @Paddy Harrison, я использовал функцию meshio write. В частности, с моим набором данных это делается так:

import meshio 

points = np.array(verts)
cells = [("triangle", np.array(faces)]
meshio.write_points_cells('out.vtu',points,cells)
...