如何用Python沿曲面切割3D网格并保留面片信息、提升裁剪精度
问题场景与需求
- 现有3D闭合曲面网格
mesh1(STL格式):由两个合并块组成,网格的每个面片作为独立实体存储 - 现有2D曲面网格
mesh2(STL格式):可完全与mesh1相交,将其分割为上下两部分 - 核心需求:沿
mesh2切割mesh1,必须保留面片归属信息
已尝试的方案及遇到的问题
方案1:Trimesh布尔差运算
- 操作步骤:
- 使用Trimesh加载
mesh1和mesh2 - 将
mesh2放大1%,确保能完全与mesh1相交后保存 - 以
mesh2为工具网格,对mesh1执行布尔差运算
- 使用Trimesh加载
- 问题:运算报错,提示
mesh1和mesh2均非实体,无法完成运算
方案2:Blender实体化+Trimesh顶点合并
- 操作步骤:
- 通过Blender的实体化修改器给
mesh2加厚,使其成为实体 - 调用
trimesh.grouping.merge_vertices(mesh1)合并mesh1的顶点 - 再次尝试布尔差运算
- 通过Blender的实体化修改器给
- 问题:
- 由于
mesh1的不同面片之间未连接,Trimesh判定其非水密网格 - 顶点合并操作直接丢失了面片归属信息,最终布尔运算仍失败
- 由于
方案3:PyVista的clip_surface()方法
- 效果:针对简单裁剪曲面时,能正常完成切割
- 问题:处理复杂裁剪曲面时,即便提前将
mesh1拆分为上块、并把mesh2放大1%,裁剪后的网格仍存在间隙,需要解决间隙填充或提升裁剪精度的问题
内容的提问来源于stack exchange,提问作者KaeptnBlaubaer
相关产品推荐
相关产品推荐

