gpt4 book ai didi

python - 转换STL 2 numpy、体积数据

转载 作者:太空宇宙 更新时间:2023-11-03 16:44:56 25 4
gpt4 key购买 nike

有没有办法将 STL 文件转换为 numpy 数组?使用 x*y*z 数据点解析的 numpy 数组应包含几何形状“内部”或“外部”意义上的体积信息,例如 0 或 1。

令我惊讶的是,尽管 numpy2STL 似乎很受欢迎,但我还没有找到任何相关内容。

问题是多孔介质的复杂几何形状,因此凸包转换也不起作用。

import numpy
import stl
from stl import mesh
stl.stl.MAX_COUNT = 1e10
your_mesh = stl.mesh.Mesh.from_file('Data.stl')
print your_mesh.data

似乎只能导出三角形。

此外,即使这样也通常会导致 MemoryError 消息;但 numpy-STL(通常)适用于将数据点加载到 numpy 中。

有没有办法将 STL 数据转换为包含每个点在几何体内部或外部的信息的体数据?从技术上讲,生成的 3D 数组可以是二进制数据类型,但这不是必需的。过于复杂对于商业软件来说,这种转换似乎是微不足道的,但它不是 python 或免费的。对于文件类型转换来说,从头开始实现光线转换算法似乎过于复杂。

最佳答案

我确实相信您想要做的是对体积进行体素化。您可以使用 https://trimsh.org/ 处的 trimesh 包来完成此操作。

import trimesh
mesh = trimesh.load_mesh('path2yourstlfile.stl')
assert(mesh.is_watertight) # you cannot build a solid if your volume is not tight
volume = mesh.voxelized(pitch=0.1)
mat = volume.matrix # matrix of boolean

您还可以使用以下方法检查点列表是否位于体积内:

mesh.contains(points)

关于python - 转换STL 2 numpy、体积数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36403383/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com