Python 3.10 中的 CGAL alpha 换行

问题描述 投票:0回答:1

这是我第一次在 stackoverflow 上发帖。如果我有任何错误请告诉我。

对于一些背景:我最近开始学习 CFD 网格划分,并且我正在尝试使用 OpenFOAM 的内置 snappyHexMesh 生成纯六角网格。然而,snappyHexMesh 在创建边界层方面非常糟糕,因此我尝试通过创建偏移 .stl 文件并在两者之间生成单层单元来自行替换它们。

我想尝试使用 CGAL 的 alpha 包装功能,因为它似乎完全符合我的要求(我的 .stl 的放大版本)。我尝试简单地缩放 .stl,但是我需要每个方向上的偏移量大致相同,而按一个因子缩放 stl 文件并不能实现这一点。

我使用 python 3.10 并尝试了 pygalmesh 和 cgal swig 绑定,这两个绑定都是我通过 pip install 安装的。

到目前为止我已经尝试过:

import pygalmesh
import meshio

myMesh = meshio.read("myGeometry.stl")
myMesh1 = pygalmesh.alpha_wrap_3(myMesh, 0.01, 0.1)

这给出了错误“模块 pygalmesh 没有属性 alpha_wrap_3” 我还能如何调用该函数?当我列出所有功能时,它不会显示

import pygalmesh

print(help(pygalmesh))

我尝试过的另一件事:

from CGAL import CGAL_Alpha_wrap_3
from CGAL import CGAL_Polygon_mesh_processing as pmp

这有效(至少没有给出错误),我可以调用函数 CGAL_Alpha_wrap_3,它只给出变量未定义的错误。但我不知道如何将我的几何图形导入其中。当我尝试使用 Polygon_mesh_processing.IO.read_poly_mesh("mygeometry.stl") 导入几何图形时,我收到类 IO 不存在的错误。我可以查看 CGAL_Polygon_mesh_processing 的所有类和函数,但我没有看到任何导入几何图形的选项。

**TDLR;如何在 Python 中将 Alpha_wrap_3 函数与导入的 .stl 一起使用? ** 谢谢!

python mesh cgal openfoam
1个回答
0
投票

您可以在 cgal-swig-bindings wiki 中找到答案,更具体地说,可以在其 Github 存储库中的 this example 中找到答案。

alpha_wrap_3
模块中的
CGAL.CGAL_Alpha_wrap_3
函数需要(在您的情况下):
Polyhedron_3
作为输入网格,alpha 和偏移的标量,以及
Polyhedron_3
作为输出包络。

干杯!

© www.soinside.com 2019 - 2024. All rights reserved.