转换stl 2 numpy,体数据

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

是否可以将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或免费的。从头开始实施射线投射算法对于文件类型转换来说似乎过于复杂。

python arrays numpy stl
1个回答
0
投票

我确实相信您想要做的是体素的体素化。您可以通过trimesh

上的https://trimsh.org/软件包来执行此操作
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 = mesh.matrix # matrix of boolean

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

mesh.contains(points)
© www.soinside.com 2019 - 2024. All rights reserved.