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. 首层支撑材料可能使用不同计算方式
相关推荐
行者..................14 分钟前
手动编译 OpenCV 4.1.0 源码,生成 ARM64 动态库 (.so),然后在 Petalinux 中打包使用。
前端·webpack·node.js
聪明的笨猪猪43 分钟前
Java SE “JDK1.8新特性”面试清单(含超通俗生活案例与深度理解)
java·经验分享·笔记·面试
小爱同学_1 小时前
一次面试让我重新认识了 Cursor
前端·面试·程序员
golang学习记1 小时前
AI 乱写代码?不是模型不行,而是你的 VS Code 缺了 Context!MCP 才是破局关键
前端
星光不问赶路人1 小时前
Vite 中的 import.meta.glob vs 动态导入:该用哪个?
前端·vite
z_y_j2299704382 小时前
服务器中使用Docker部署前端项目
服务器·前端·docker·容器
迪丽热爱2 小时前
解决【npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本。】问题
前端·npm·node.js
wyiyiyi2 小时前
【数据结构+算法】迭代深度搜索(IDS)及其时间复杂度和空间复杂度
数据结构·人工智能·笔记·算法·深度优先·迭代加深
数字冰雹2 小时前
图观 流渲染场景服务器
服务器·前端·数据库·数据可视化
李明卫杭州2 小时前
详细讲解js中的ResizeObserver
前端·javascript