首页 > 解决方案 > python pygalmesh 无法使工作示例

问题描述

我正在尝试将 pygalmesh 用于我的项目。基本上,我需要创建一个立方体,然后以管状形式减去它的一部分。我有几件事不能上班。首先,我需要创建一个立方体,pygalmesh 中使用的函数是 Cuboid,如下所示:

pygalmesh.Cuboid([0, 0, 0], [1, 1, 1])

我尝试了这行确切的代码,因为我在 pygalmesh 的创建者在这篇文章中的回答中找到了它:Volume of 3d shape using numeric integration with scipy

但即使使用那一行,我也会收到错误消息:RuntimeError: CGAL ERROR: assertion violation!说明:错误:尺寸字段在角处为空 (0 0 0)

我进入 github repo 试图找出这些函数是如何工作的,但我只能找到这样的文件:

from _pygalmesh import Cuboid

仅此而已。那么我如何使用 pygalmesh 创建一个立方体?如果可能的话,我想找到如何使用所有类型的 pygalmesh 卷,目前我只能在 github 上复制示例中的那些。

此外,在上面的同一篇文章中(使用 scipy进行数值积分的 3d 形状的体积)在使用 pygalmesh 的答案中,代码在第 10 行周围使用了关于单元大小的行(cell_size=3.0e-2)。但每次我尝试将此参数添加到我的函数网格中,我收到错误:TypeError: generate_mesh() got an unexpected keyword argument 'cell_size'

但我使用的是和他一样的功能?

是否有更新删除了我缺少的一些功能,我目前正在使用最新版本的 pygalmesh。这是一个显示单元大小错误的简单代码。如果我将 Ball 更改为 Cuboid,则会收到 Cuboid 错误。

import numpy
import pygalmesh

mesh = pygalmesh.generate_mesh(
    pygalmesh.Ball([0.0, 0.0, 0.0], 25.0), cell_size=3.0e-2
)
print(mesh)
mesh.write("out2.vtk")

标签: pythonmesh

解决方案


看起来您使用的是过时版本的 pygalmesh。cell_size前段时间已被删除。尝试使用max_cell_circumradiusmax_edge_size_at_feature_edges

import numpy
import pygalmesh

mesh = pygalmesh.generate_mesh(
    pygalmesh.Ball([0.0, 0.0, 0.0], 25.0), max_cell_circumradius=1.0e-2
    )
print(mesh)
mesh.write("out.vtk")

在此处输入图像描述


推荐阅读