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. 首层支撑材料可能使用不同计算方式
相关推荐
bin91531 小时前
DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)示例3: 行选择
前端·javascript·vue.js·ecmascript·deepseek
中草药z8 小时前
【RabbitMQ】RabbitMQ的核心概念与七大工作模式
分布式·学习·中间件·消息队列·rabbitmq·queue·工作模式
修昔底德8 小时前
费曼学习法13 - 数据表格的魔法:Python Pandas DataFrame 详解 (Pandas 基础篇)
python·学习·pandas
@HNUSTer8 小时前
基于 HTML、CSS 和 JavaScript 的五子棋游戏
前端·javascript·css·游戏·html
百锦再9 小时前
Vue核心知识:动态路由实现完整方案
前端·javascript·vue.js·前端框架·vue·路由·动态
aloha_9 小时前
江口村青年爱心基金会管理制度 - 暂定
前端
拉不动的猪9 小时前
刷刷题24
前端·javascript·面试
贝塔实验室9 小时前
FPGA 配置原理
经验分享·笔记·其他·fpga开发·硬件架构·硬件工程·fpga
云上艺旅9 小时前
K8S学习之基础十一:容器钩子
学习·云原生·容器·kubernetes
aloha_10 小时前
关于成立江口村青年爱心基金会的倡议
前端