BambuStudio学习笔记:Extruder 类

发布于:2025-03-08 ⋅ 阅读:(145) ⋅ 点赞:(0)

Extruder 类文档

概述

Extruder 类用于管理3D打印过程中的挤出机状态,包括挤出量计算、回抽操作、耗材统计等功能。支持多挤出机配置及共享挤出机模式。

头文件

#ifndef slic3r_Extruder_hpp_
#define slic3r_Extruder_hpp_
// ...
#endif

成员函数

构造函数

Extruder(unsigned int id, GCodeConfig *config, bool share_extruder)
  • 功能:初始化挤出机对象
  • 参数
    • id: 挤出机唯一标识
    • config: G代码配置指针
    • share_extruder: 是否共享挤出机模式

核心方法

reset()
void reset()
  • 功能:重置挤出机状态
  • 重置内容
    • 共享模式:重置共享E值和回抽量
    • 独立模式:重置E值、回抽量、额外重启量
    • 始终重置绝对E值
extrude()
double extrude(double dE)
  • 功能:执行挤出操作
  • 参数dE - 相对挤出量
  • 返回值:实际挤出量
  • 说明:更新E值和绝对E值
回抽控制
double retract(double length, double restart_extra)
double unretract()
  • retract():执行回抽
    • 参数:length 回抽长度,restart_extra 额外重启量
    • 返回值:实际回抽量
  • unretract():取消回抽
    • 返回值:取消回抽后的重启量

状态获取

方法 说明
double E() const 获取当前E值(共享/独立模式自动处理)
double extruded_volume() const 计算已挤出耗材体积(mm³)
double used_filament() const 计算已使用耗材长度(mm)

耗材属性

方法 说明 单位
filament_diameter() 耗材直径 mm
filament_density() 耗材密度 g/cm³
filament_cost() 耗材成本 单位长度成本
retract_before_wipe() 擦拭前回抽长度 mm
retraction_length() 回抽长度 mm

操作符重载

操作符 说明
== ID相等比较
!= ID不等比较
< > ID大小比较

重要成员变量

变量 类型 说明
m_share_extruder bool 共享挤出机模式标志
m_share_E static double 共享模式下的E值
m_e_per_mm3 double 每立方毫米耗材对应的E步长

使用示例

// 创建挤出机(ID=0,使用配置,非共享模式)
Extruder extruder(0, &config, false);

// 执行挤出
extruder.extrude(10.5);

// 执行回抽
extruder.retract(2.0, 0.5);

// 获取耗材使用量
double used = extruder.used_filament();

设计说明

  1. 共享模式支持:通过静态变量实现多实例共享挤出状态
  2. 单位统一:所有长度单位为毫米,体积为立方毫米
  3. 状态管理:独立维护绝对E值用于耗材统计
  4. 配置解耦:通过GCodeConfig指针获取机器参数

注意事项

  • 在共享模式下修改E值会影响所有共享该挤出机的实例
  • 回抽相关参数应从GCodeConfig获取最新配置
  • 重置操作会清除所有累积的挤出量统计