STL文件网格生成与轮廓算法要点
网格生成规则
STL文件网格生成规则第一条:一个三角形面片顶点不能落在相邻三角面片边上,以此确定同一分层区域交点插入方式与首个交点一致。
轮廓构造算法
- 交点分类处理
- 一类交点:根据切平面和“前边”计算坐标,遍历层内轮廓片段CLL,匹配邻边后插入。
- 二类交点:用增量算法算坐标,依上一个交点插入信息构造轮廓。需知插入轮廓片段内存地址,插入前要获取InsertInfo中3个变量值。
- 数据结构要求:交点所在轮廓数据结构中IS_pre元素指向形成轮廓的交点链表最后一个交点所在三角形中上一个交点的地址。
- 轮廓删除与地址保留:当type为Case4或Case5时,轮廓链表须为双向链表,通过指针*pre访问被删除轮廓上一个节点完成删除。这是Rule 2规定每条轮廓结构保存交点地址的原因。
- 特殊插入方式:插入方式为none的二类交点,直接作为对应层轮廓链表首节点。

内存管理与算法效率
- 内存释放:分层后,edge数据无需可删除其占用内存,轮廓构造中也可删除交点链表首末节点间edge。
- 内存消耗:交点结构对内存消耗影响显著,模型三角形数量越大、分层厚度越小,程序所需内存空间越大。
- 效率对比:与ECC切片算法比较,本文算法在处理低精度花瓶切片时,层厚从0.4mm - 0.03mm变化,总层数增13倍,ECC算法时间增近19倍,本文算法仅增10倍。ECC算法分层细密时,存在未与切平面相交三角形参与切片,导致处理数据量增大、匹配耗时。

改进的高效切片算法
- 算法改进:分析相邻切片层三角形面片异同,利用相似性,建立分层区域概念,将轮廓交点分两类,仅对一类交点匹配“公共边”。
- 二类交点处理:给出“公共边”匹配中轮廓交点所有可能插入情况并保存为枚举类型,供二类交点插入选择。通过设计数据结构与建立核心规则,使二类交点利用相邻交点插入信息直接构造轮廓。
- 算法优势:无需建立三角形面片拓扑关系,不按Z轴排序三角形,遍历一次STL模型数据完成分层,处理高精度、切片细密模型仍高效。

软件可视化与交互设计
- 需求分析:除3D显示模块,要有数据显示部分。
- 界面设计:MFC提供主框架与视类窗口,视类窗口拆分成2列,左边显示数据信息,右边三维显示结果。
- 界面元素:标题栏显示文件名,菜单栏由MFC提供,工具栏含自定义快捷按钮,状态栏显示鼠标位置。重载CButton类绘制自定义按钮,点击实现模块收缩展开。
- 模型观察与操作:提供正视图、左视图、俯视图等视角,有网格视图和实物视图两种模式,通过工具栏按键和鼠标左键、滚轮实现模型旋转、平移和缩放。
上一篇:3D打印前处理成形方向优化与分层切片算法
下一篇:3D打印技术突破与前处理算法的深化研究