Trimesh学习:STL模型切片后外形和空洞数目
导入库import numpy as np from shapely import line_interpolate_point from shapely.geometry import LineString import trimesh import ezdxf import tkinter as tk from tkinter import filedialog文件选择对话框root tk.Tk() root.withdraw() f_path filedialog.askopenfilename() print(\n获取的文件地址, f_path)加载STL模型mesh trimesh.load_mesh(f_path)显示实体模型mesh.show()创建切片# plane_origin : (3, ) float 横截面平面上的点。# plane_normal : (3,) float 截面平面的法向量slice mesh.section(plane_originmesh.centroid, plane_normal[0, 0, 1]) slice_2D, to_3D slice.to_planar() slice_2D.show()#打印切片信息print(切片后多边形数量,len(slice_2D.polygons_full), \n) print(外边界坐标数量,len(slice_2D.polygons_full[0].exterior.coords), \n) print(孔洞数量,len(slice_2D.polygons_full[0].interiors), \n) print(孔洞坐标数量,len(slice_2D.polygons_full[0].interiors[0].coords), \n)将切片的图形绘制成CAD图形# 1. 创建一个新的 DXF 文档 doc ezdxf.new(R2010) msp doc.modelspace() # 2. 假设这是你从 shapely/trimesh 获取的坐标数据 polygon_coords list(slice_2D.polygons_full[0].interiors[0].coords) # 3. 方法 A绘制多段线 (推荐适合封闭轮廓) # LWPolyline 是轻量多段线性能好 msp.add_lwpolyline(polygon_coords) # 4. 方法 B绘制独立的直线段 (如果你必须用直线命令) # 遍历坐标列表两点连成一线 for i in range(len(polygon_coords) - 1): start_point polygon_coords[i] end_point polygon_coords[i1] msp.add_line(start_point, end_point) # 5. 保存文件 doc.saveas(output_drawing2.dxf) print(CAD 文件已生成)