是否可以将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或免费的。从头开始实施射线投射算法对于文件类型转换来说似乎过于复杂。
我确实相信您想要做的是体素的体素化。您可以通过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 = mesh.matrix # matrix of boolean
您还可以使用以下方法检查点列表是否在体积内:
mesh.contains(points)