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. 首层支撑材料可能使用不同计算方式
相关推荐
爱上好庆祝11 小时前
学习js的第五天
前端·css·学习·html·css3·js
qiaozhangchi12 小时前
求解器学习笔记
笔记·python·学习
C澒12 小时前
IntelliPro 产研协作平台:基于 AI Agent 的低代码智能化配置方案设计与实现
前端·低代码·ai编程
一袋米扛几楼9812 小时前
【Git】规范化协作:详解 GitHub 工作流中的 Issue、Branch 与 Pull Request 最佳实践
前端·git·github·issue
不会编程的懒洋洋12 小时前
C# P/Invoke 基础
开发语言·c++·笔记·安全·机器学习·c#·p/invoke
网络点点滴12 小时前
前端与后端的区别与联系
前端
bendandawugui12 小时前
PCIe协议学习-PCIe的No Snoop Attr使用
学习
xian_wwq12 小时前
【学习笔记】网络与数据安全领域强制性标准
笔记·学习
24白菜头12 小时前
【无标题】
c++·笔记·学习·harmonyos
qq_5895681012 小时前
java基础学习,案例练习,即时通讯
java·开发语言·学习