numpy 转换stl 2编号、体积数据

polhcujo  于 2023-03-18  发布在  其他
关注(0)|答案(2)|浏览(173)

有没有办法把stl文件转换成numpy数组?用x*y*z数据点解析的numpy数组应该包含几何体“内部”或“外部”的体积信息,比如0或1。
令我惊讶的是,虽然numpy 2stl看起来很受欢迎,但我还没有在这上面找到任何东西。
该问题是一个复杂的几何多孔介质,因此船体转换也不工作。

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

o0lyfsai

o0lyfsai1#

我相信你想做的是你的体积的体素化。你可以用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 = volume.matrix # matrix of boolean

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

mesh.contains(points)
3zwjbxry

3zwjbxry2#

[4]中的小排印错误,trimesh没有矩阵属性,您可以从VoxelGrid获得。

mat = mesh.matrix

固定的

mat = volume.matrix

相关问题