BambuStudio学习笔记:Extruder 类

news/2025/3/6 22:22:24/

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_extruderbool共享挤出机模式标志
m_share_Estatic double共享模式下的E值
m_e_per_mm3double每立方毫米耗材对应的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获取最新配置
  • 重置操作会清除所有累积的挤出量统计

http://www.ppmy.cn/news/1577189.html

相关文章

docker本地部署ollama

启动ollama容器 1.使用该命令启动CPU版运行本地AI模型 docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama 2.此命令用于启动GPU版本运行AI模型 前提是笔记本已配置NVIDIA的GPU驱动&#xff0c;可在shell中输入nvidia-smi查看详细情况…

安全渗透测试的全面解析与实践

引言 随着网络安全威胁的日益增加&#xff0c;企业和组织对自身系统的安全性提出了更高的要求。安全渗透测试&#xff08;Penetration Testing&#xff0c;简称渗透测试&#xff09;作为主动发现和修复系统安全漏洞的重要手段&#xff0c;已成为安全防护体系中的关键环节。本文…

JS基础之对象

对象使用 目标:掌握对象语法&#xff0c;用它保存多个数据 1.对象声明语法 let 对象名 {} let 对象名 new 0bject() 对象本质是无序的数据集合&#xff0c;操作数据无非就是 增 删 改 查 语法: 属性-查 声明对象&#xff0c;并添加了若干属性后&#xff0c;可以使用.获得…

市场趋势解析与交易策略优化

市场趋势解析与交易策略优化 在市场环境不断变化的情况下&#xff0c;理解市场趋势并优化交易策略是交易者稳健发展的关键。通过科学的方法识别市场动向&#xff0c;结合数据分析优化交易方案&#xff0c;可以提高交易效率并降低风险。本文将探讨趋势分析的要点&#xff0c;并介…

Tomcat 是什么?有什么功能和作用?为什么启动 Spring 或 Spring Boot 项目需要 Tomcat?

本文的内容是博主学习并记录关于 Tomcat 的基本知识&#xff0c;介绍了 Tomcat 为什么是一个 Web 应用服务器&#xff0c;为什么是 Servlet 容器&#xff0c;同时总结了 Tomcat 的一些功能原理&#xff0c;并详细介绍了 Tomcat 在 Spring 和SpringBoot 项目中的使用原理。本文不…

BambuStudio学习笔记:MeshBoolean类

# MeshBoolean.hpp 代码分析## 功能概述 本头文件提供三维网格布尔运算功能&#xff0c;支持差集、并集、交集操作。实现基于CGAL和Mcut两种底层库&#xff0c;包含数据结构转换、运算接口及辅助功能。## 核心结构### 数据结构 cpp using EigenMesh std::pair<Eigen::Matri…

windows 利用nvm 管理node.js 2025最新版

1.首先在下载nvm 下载链接 2. 下载最新版本的nvm 3. 同意协议 注意&#xff1a;选择安装路径 之后一直下一步即可 可以取消勾选 open with Powershell 勾选后它会自动打开Powershell 这里选用cmd 输入以下命令查看是否安装成功 nvm version 查看已经安装的版本 我之前自…

如何用FFmpeg高效拉流(避坑指南)

FFmpeg作为音视频处理领域的“瑞士军刀”,其拉流功能在直播、监控、流媒体分析等场景中应用广泛。本文从实战角度出发,系统梳理FFmpeg拉流的核心工具链、协议适配技巧及高频踩坑点,助你快速掌握流媒体处理核心技能! 一、FFmpeg拉流工具链全解析 核心工具 ffplay:快速验证…