Flow 类文档
概述
Flow
类用于管理3D打印过程中的挤出流程参数计算,包括挤出宽度、间距、流量等核心参数。支持桥梁模式、不同流程角色配置,提供多种流量计算方式。
头文件
cpp
#ifndef slic3r_Flow_hpp_
#define slic3r_Flow_hpp_
// ...
#endif
枚举类型
FlowRole
cpp
enum FlowRole {
frExternalPerimeter, // 外轮廓
frPerimeter, // 普通轮廓
frInfill, // 填充
frSolidInfill, // 实心填充
frTopSolidInfill, // 顶部实心填充
frSupportMaterial, // 支撑材料
frSupportMaterialInterface,// 支撑材料界面
frSupportTransition // BBS支撑过渡
};
异常类
类名 | 继承关系 | 说明 |
---|---|---|
FlowError |
Slic3r::InvalidArgument |
流量相关异常基类 |
FlowErrorNegativeSpacing |
FlowError |
间距为负异常 |
FlowErrorNegativeFlow |
FlowError |
流量为负异常 |
FlowErrorMissingVariable |
FlowError |
缺少必要变量异常 |
Flow 类成员
核心属性
属性 | 类型 | 说明 |
---|---|---|
width() |
float | 挤出宽度(非桥梁模式为最大宽度,桥梁模式为线径) |
height() |
float | 挤出高度(桥梁模式等于线径) |
spacing() |
float | 挤出中心线间距 |
nozzle_diameter() |
float | 喷嘴直径 |
bridge() |
bool | 是否为桥梁模式 |
mm3_per_mm() |
double | 每毫米体积流量 |
构造方法
cpp
Flow(float width, float height, float nozzle_diameter)
- 参数说明 :
- width: 挤出宽度 (mm)
- height: 层高/线径 (mm)
- nozzle_diameter: 喷嘴直径 (mm)
核心方法
参数转换
cpp
Flow with_width(float width)
Flow with_height(float height)
Flow with_spacing(float spacing)
Flow with_cross_section(float area)
- 功能:生成新Flow对象并修改指定参数
- 示例 :
flow.with_width(0.5f)
特殊模式
cpp
static Flow bridging_flow(float dmr, float nozzle_diameter)
- 功能:创建桥梁模式Flow
- 参数:dmr为桥梁线径
配置解析
cpp
static Flow new_from_config_width(FlowRole role, ...)
static double extrusion_width(...)
- 用途:从配置文件解析挤出宽度
静态计算工具
方法 | 功能 | 公式示例 |
---|---|---|
rounded_rectangle_extrusion_spacing |
计算矩形挤出间距 | spacing = width - height*(1-PI/4) |
bridge_extrusion_spacing |
计算桥梁模式间距 | spacing = dmr + BRIDGE_EXTRA_SPACING |
auto_extrusion_width |
自动计算推荐宽度 | 外轮廓:1.125倍喷嘴直径 |
外部关联函数
cpp
Flow support_material_flow(...)
Flow support_transition_flow(...)
Flow support_material_1st_layer_flow(...)
Flow support_material_interface_flow(...)
- 功能:计算不同支撑类型的流量参数
- 参数 :
PrintObject
对象和层高参数
使用示例
cpp
// 创建普通流量配置
Flow normal_flow(0.5f, 0.2f, 0.4f);
// 转换为桥梁模式
Flow bridge_flow = Flow::bridging_flow(0.3f, 0.4f);
// 从配置文件读取
Flow ext_flow = Flow::new_from_config_width(
frExternalPerimeter,
config.perimeter_extrusion_width,
0.4f,
0.2f
);
// 计算支撑材料流量
Flow support_flow = support_material_flow(print_object, 0.2f);
设计要点
- 多模式支持 :通过
bridge
标志区分普通/桥梁模式 - 参数联动:修改宽度/高度时自动重新计算间距
- 单位统一:所有参数单位均为毫米
- 配置集成:支持从Slic3r配置系统直接解析参数
计算公式
矩形挤出间距
math
spacing = width - height \times (1 - \frac{\pi}{4})
桥梁间距
math
spacing = dmr + 0.05mm
自动宽度推荐值
流程角色 | 推荐宽度 |
---|---|
外轮廓 | 1.125×喷嘴直径 |
支撑材料 | 1.0×喷嘴直径 |
其他 | 1.125×喷嘴直径 |
注意事项
- 修改宽度/高度时要求必须为非桥梁模式
- 层高不应超过喷嘴直径的80%
- 桥梁模式使用圆形截面模型计算
- 首层支撑材料可能使用不同计算方式