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 小时前
电脑打开多个浏览器Web窗口占用较大的运行内存的原因
前端·浏览器
蒸蒸yyyyzwd7 小时前
AI应用相关可能的面试问题
笔记
馒头不想说话8 小时前
实体店老板的24小时AI运营员工,写、剪、发全自动,省下一整个团队工资
前端
叼烟扛炮8 小时前
[Git 实战] 学习笔记:从生成 SSH 密钥到解决 TortoiseGit 推送报错全指南
linux·运维·笔记·git·学习
蒸蒸yyyyzwd9 小时前
学习笔记 八股手撕
笔记·学习
椒哥10 小时前
一天被问几十次"允许",我统计了 517 次,然后写了个插件
前端·javascript·github
风骏时光牛马10 小时前
生成一个AI稳定性治理及疑难问题分析标题,只需要一个标题,不需要其他的任何文本。
前端
揣一尾游鱼yu10 小时前
Spring上(IOC)笔记
java·笔记·spring·ioc
莫西干式秃头10 小时前
用 AI + threejs 写了个浏览器里的 3D 动作游戏《武来》:砍怪、放技能、开 SU7
前端·人工智能·three.js
kyriewen10 小时前
我测了 6 种防请求竞态的写法:只有 1 种真能打
前端·javascript·程序员