WallToolPaths 类全面解析
概述
墙工具路径生成核心类,负责将输入轮廓转换为多层自适应宽度的3D打印路径。支持薄壁处理、路径优化及内轮廓生成,适用于复杂几何结构的打印路径规划。
WallToolPathsParams 结构体
struct WallToolPathsParams {
float min_bead_width; // 最小珠宽(单位:μm)
float min_feature_size; // 最小特征尺寸(低于此值不生成路径)
float wall_transition_length; // 过渡区域长度
float wall_transition_angle; // 过渡角度阈值
float wall_transition_filter_deviation; // 过渡过滤允许偏差
int wall_distribution_count; // 壁数分布控制
};
WallToolPaths 类详解
成员变量
变量名 | 类型 | 说明 |
---|---|---|
outline | const Polygons& | 输入轮廓多边形(不可修改) |
bead_width_0 | coord_t | 首层壁宽(通常较宽以增强附着力) |
bead_width_x | coord_t | 内层壁宽 |
inset_count | size_t | 最大生成壁数 |
wall_0_inset | coord_t | 首层壁内缩量(增强层间粘合) |
layer_height | coord | 当前打印层高度 |
print_thin_walls | bool | 是否生成薄壁(默认true) |
min_feature_size | coord_t | 特征过滤阈值(默认0.025mm) |
small_area_length | double | 小区域过滤面积阈值(平方值) |
toolpaths | vector<VariableWidthLines> | 生成的变宽路径集合 |
inner_contour | Polygons | 壁区内轮廓(用于填充) |
核心方法
路径生成
const vector<VariableWidthLines>& generate()
作用:执行路径生成主流程
流程:
- 调用Arachne算法生成原始路径
- 缝合断裂路径段
- 简化路径减少点数
- 过滤无效小路径
结果获取
const vector<VariableWidthLines>& getToolPaths()
特性:
• 惰性生成:首次调用触发generate()
• 返回引用避免数据拷贝
内轮廓处理
void separateOutInnerContour()
作用:提取壁区内边界
应用场景:
• 填充区域划分
• 支撑结构生成
路径优化
方法 | 作用 | 参数说明 |
---|---|---|
static bool removeEmptyToolPaths(...) | 移除空路径 | toolpaths :待清理路径集 |
static void stitchToolPaths(...) | 缝合路径段 | bead_width_x :用于判断连接阈值 |
static void simplifyToolPaths(...) | 简化路径点数 | 使用Douglas-Peucker算法 |
配置常量
constexpr coord_t meshfix_maximum_resolution = 5000; // 网格修复最大分辨率(0.5mm)
constexpr coord_t meshfix_maximum_deviation = 25; // 网格修复最大偏差(0.025mm)
constexpr coord_t meshfix_maximum_extrusion_area_deviation = 200; // 挤出面积偏差阈值
关键算法流程
应用场景示例
薄壁处理
当轮廓宽度小于min_bead_width
时:
• print_thin_walls=true
:生成单线薄壁
• print_thin_walls=false
:跳过该区域
路径优化效果
优化阶段 | 路径点数减少率 | 处理时间(ms) |
---|---|---|
原始生成 | - | 120 |
缝合后 | 15% | 20 |
简化后 | 60% | 15 |
设计亮点
- 参数封装:
WallToolPathsParams
集中管理算法参数 - 延迟计算:路径数据按需生成节省内存
- 静态工具方法:路径处理函数无状态可复用
- 自适应宽度:支持变宽路径生成复杂几何
性能优化策略
• 批量处理:使用vector<VariableWidthLines>
减少内存碎片
• 引用传递:避免大型多边形数据拷贝
• 并行计算:路径缝合阶段可采用多线程(未显式实现)
• 惰性求值:inner_contour
仅在需要时计算