STL 文件曲面选择器 - 技术文档
项目概述
STL 文件曲面选择器是一个基于 PySide6 和 VTK 库开发的桌面应用程序,旨在帮助用户加载 STL 文件并智能选择平面或曲面区域。该工具不仅支持基本的 3D 模型浏览功能,还具备高级的面组识别和导出功能。
功能特性
1. STL 文件加载与显示
- 支持加载 STL 格式的 3D 模型文件
- 以高质量 3D 渲染显示模型
- 实时显示模型的面数量统计
2. 智能面选择功能
- 平面识别:自动识别模型中的平面区域
- 曲面识别:识别轻微曲面和复杂曲面
- 面组选择:智能选择相连的相似表面
- 高亮显示:选中的面以不同颜色高亮显示
3. 参数调节
- 透明度控制:调节模型透明度(0%-100%)
- 平面检测阈值:调节平面检测敏感度(1°-50°)
- 曲率检测阈值:调节曲面检测敏感度(1°-100°)
4. 右键导出功能
- 面组导出:将选中的面组导出为新的 STL 文件
- ASCII 格式:导出为 ASCII 格式的 STL 文件
- 文件头定制:自动将文件第一行设为'solid + 文件名'
核心技术架构
1. UI 框架
- PySide6:用于构建现代化的 GUI 界面
- VTK:用于高性能 3D 图形渲染
- QVTKRenderWindowInteractor:集成 VTK 渲染窗口到 Qt 界面
2. 3D 渲染引擎
- vtkRenderer:负责场景渲染
- vtkActor/vtkMapper:管理 3D 对象的显示
- vtkCellPicker:实现精确的面拾取功能
3. 面分析算法
- 法向量计算:使用 vtkPolyDataNormals 计算面法向量
- 邻接面检测:通过共享顶点检测面之间的连接关系
- 相似性判断:基于法向量夹角判断面的相似性
4. 用户交互
- 鼠标事件处理:左键选择,右键导出菜单
- 实时参数调节:滑块控件实时调节各项参数
- 状态反馈:实时显示操作结果和状态信息
操作流程
1. 基本操作
- 点击'📁 加载 STL 文件'按钮加载模型
- 使用鼠标在 3D 视图中旋转、缩放模型
- 点击模型表面选择平面或曲面区域
- 观察高亮显示的选中面组


