BambuStudio学习笔记:Flow 类

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);

设计要点

  1. 多模式支持 :通过bridge标志区分普通/桥梁模式
  2. 参数联动:修改宽度/高度时自动重新计算间距
  3. 单位统一:所有参数单位均为毫米
  4. 配置集成:支持从Slic3r配置系统直接解析参数

计算公式

矩形挤出间距

math 复制代码
spacing = width - height \times (1 - \frac{\pi}{4})

桥梁间距

math 复制代码
spacing = dmr + 0.05mm

自动宽度推荐值

流程角色 推荐宽度
外轮廓 1.125×喷嘴直径
支撑材料 1.0×喷嘴直径
其他 1.125×喷嘴直径

注意事项

  1. 修改宽度/高度时要求必须为非桥梁模式
  2. 层高不应超过喷嘴直径的80%
  3. 桥梁模式使用圆形截面模型计算
  4. 首层支撑材料可能使用不同计算方式
相关推荐
一只小灿灿7 分钟前
前端计算机视觉:使用 OpenCV.js 在浏览器中实现图像处理
前端·opencv·计算机视觉
巴伦是只猫12 分钟前
【机器学习笔记 Ⅲ】4 特征选择
人工智能·笔记·机器学习
前端小趴菜0519 分钟前
react状态管理库 - zustand
前端·react.js·前端框架
不爱说话的采儿33 分钟前
UE5详细保姆教程(第四章)
笔记·ue5·游戏引擎·课程设计
weixin_4188138741 分钟前
Python-可视化学习笔记
笔记·python·学习
Haoea!44 分钟前
Flink-05学习 接上节,将FlinkJedisPoolConfig 从Kafka写入Redis
学习·flink·kafka
Jerry Lau1 小时前
go go go 出发咯 - go web开发入门系列(二) Gin 框架实战指南
前端·golang·gin
Vic101011 小时前
Java 开发笔记:多线程查询逻辑的抽象与优化
java·服务器·笔记
我命由我123451 小时前
前端开发问题:SyntaxError: “undefined“ is not valid JSON
开发语言·前端·javascript·vue.js·json·ecmascript·js
0wioiw01 小时前
Flutter基础(前端教程③-跳转)
前端·flutter