有没有办法将 stl文件转换为numpy 数组?
使用x*y*z
数据点解析的numpy数组应该包含" inside"意义上的体积信息。或"外面"几何,比如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或free。从头开始实现光线投射算法对于文件类型转换来说似乎过于复杂。
答案 0 :(得分:1)
我确实相信您想要做的是体素的体素化。您可以使用位于https://trimsh.org/的 <style name="ButtonStyle" parent="Widget.MaterialComponents.Button.UnelevatedButton">
<item name="cornerRadius">@dimen/margin_20dp</item>
<item name="android:padding">@dimen/margin_8dp</item>
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">match_parent</item>
<item name="android:layout_weight">1</item>
<item name="android:textSize">@dimen/text_size_14sp</item>
<item name="android:textAllCaps">false</item>
<item name="android:textColor">@drawable/drawable_button_toggle_group_text_selector</item>
<item name="android:backgroundTint">@drawable/drawable_button_toggle_group_selector</item>
</style>
<style name="ButtonsToggleGroupStyle">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_gravity">center</item>
<item name="android:orientation">horizontal</item>
<item name="android:layout_marginStart">@dimen/margin_32dp</item>
<item name="android:layout_marginTop">@dimen/margin_12dp</item>
<item name="android:layout_marginEnd">@dimen/margin_32dp</item>
</style>
软件包来做到这一点
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
答案 1 :(得分:0)
[4]中的小错字,trimesh没有矩阵属性,可以从VoxelGrid获得。
mat = mesh.matrix
固定
mat = volume.matrix