如何获取Meshlab中Compute Planar Section生成多段线的边连接数据
Pymeshlab获取切面多段线边连接关系实现方案
你调用compute_planar_section生成的切面多段线的边连接关系,可直接通过Pymeshlab的Mesh类内置方法获取,无需额外导出DXF解析。
核心实现逻辑
compute_planar_section生成的结果是线框网格,所有边的连接关系存储在Mesh对象的边矩阵中,调用edge_matrix()方法即可直接读取,返回值为Numpy数组,每一行对应一条边的两个顶点ID(已和顶点矩阵的索引一一对应)。
完整代码示例
import pymeshlab import numpy as np ms = pymeshlab.MeshSet() ms.load_new_mesh("你的模型文件路径.obj") # 替换为你的实际模型路径 for z_value in np.arange(0, 5, 1): ms.set_current_mesh(0) planeoffset = float(z_value) ms.compute_planar_section(planeaxis = 'Z Axis', planeoffset = planeoffset) m = ms.current_mesh() m.compact() print(m.vertex_number(), "vertices in Planar Section Z =", planeoffset) # 获取边连接关系:每行是[起点顶点ID, 终点顶点ID] edge_list = m.edge_matrix() print(f"当前切面共{len(edge_list)}条边:") for edge in edge_list: v1_id, v2_id = edge # 可选:获取对应顶点坐标 v1_coord = m.vertex_matrix()[v1_id] v2_coord = m.vertex_matrix()[v2_id] print(f"边:顶点{v1_id}{v1_coord} -> 顶点{v2_id}{v2_coord}") # 处理完当前切面后可删除临时生成的切面网格,避免影响后续循环 ms.delete_current_mesh()
补充说明
- 调用
m.compact()后顶点ID是连续无重复的,和vertex_matrix()的索引完全对应,无需额外处理索引映射 - 如果需要导出边列表保存,直接把
edge_list写入本地文件即可,格式可自行调整为CSV、TXT等
内容的提问来源于stack exchange,提问作者niallmitchell
相关产品推荐
相关产品推荐

