mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-05-30 16:42:43 +00:00
Finish porting the Extruder class to libslic3r
This commit is contained in:
@@ -7,6 +7,11 @@ Extruder::Extruder(int id, PrintConfig *config)
|
||||
config(config)
|
||||
{
|
||||
reset();
|
||||
|
||||
// cache values that are going to be called often
|
||||
this->e_per_mm3 = this->extrusion_multiplier()
|
||||
* (4 / ((this->filament_diameter() * this->filament_diameter()) * PI));
|
||||
this->retract_speed_mm_min = this->retract_speed() * 60;
|
||||
}
|
||||
|
||||
void
|
||||
@@ -66,6 +71,26 @@ Extruder::unretract()
|
||||
return dE;
|
||||
}
|
||||
|
||||
double
|
||||
Extruder::e_per_mm(double mm3_per_mm) const
|
||||
{
|
||||
return mm3_per_mm * this->e_per_mm3;
|
||||
}
|
||||
|
||||
double
|
||||
Extruder::extruded_volume() const
|
||||
{
|
||||
return this->used_filament() * (this->filament_diameter() * this->filament_diameter()) * PI/4;
|
||||
}
|
||||
|
||||
double
|
||||
Extruder::used_filament() const
|
||||
{
|
||||
// Any current amount of retraction should not affect used filament, since
|
||||
// it represents empty volume in the nozzle. We add it back to E.
|
||||
return this->absolute_E + this->retracted;
|
||||
}
|
||||
|
||||
Pointf
|
||||
Extruder::extruder_offset() const
|
||||
{
|
||||
|
||||
@@ -16,6 +16,9 @@ class Extruder
|
||||
double extrude(double dE);
|
||||
double retract(double length, double restart_extra);
|
||||
double unretract();
|
||||
double e_per_mm(double mm3_per_mm) const;
|
||||
double extruded_volume() const;
|
||||
double used_filament() const;
|
||||
|
||||
Pointf extruder_offset() const;
|
||||
double nozzle_diameter() const;
|
||||
@@ -38,7 +41,10 @@ class Extruder
|
||||
double absolute_E;
|
||||
double retracted;
|
||||
double restart_extra;
|
||||
double e_per_mm3;
|
||||
double retract_speed_mm_min;
|
||||
|
||||
private:
|
||||
PrintConfig *config;
|
||||
};
|
||||
|
||||
|
||||
@@ -14,6 +14,9 @@
|
||||
double extrude(double dE);
|
||||
double retract(double length, double restart_extra);
|
||||
double unretract();
|
||||
double e_per_mm(double mm3_per_mm);
|
||||
double extruded_volume();
|
||||
double used_filament();
|
||||
|
||||
int id() const
|
||||
%code%{ RETVAL = THIS->id; %};
|
||||
@@ -34,6 +37,10 @@
|
||||
%code%{ RETVAL = THIS->restart_extra; %};
|
||||
double set_restart_extra(double val) const
|
||||
%code%{ RETVAL = THIS->restart_extra = val; %};
|
||||
double e_per_mm3()
|
||||
%code%{ RETVAL = THIS->e_per_mm3; %};
|
||||
double retract_speed_mm_min()
|
||||
%code%{ RETVAL = THIS->retract_speed_mm_min; %};
|
||||
|
||||
Clone<Pointf> extruder_offset() const;
|
||||
double nozzle_diameter() const;
|
||||
|
||||
Reference in New Issue
Block a user