mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-31 04:31:15 -06:00 
			
		
		
		
	Refactor E code and keep track of per-extruder consumend filament
This commit is contained in:
		
							parent
							
								
									70d824c9a7
								
							
						
					
					
						commit
						c9f68ed28a
					
				
					 4 changed files with 29 additions and 29 deletions
				
			
		|  | @ -29,7 +29,6 @@ has 'new_object'         => (is => 'rw', default => sub {0}); | |||
| has 'straight_once'      => (is => 'rw', default => sub {1}); | ||||
| has 'extruder'           => (is => 'rw'); | ||||
| has 'elapsed_time'       => (is => 'rw', default => sub {0} );  # seconds | ||||
| has 'total_extrusion_length' => (is => 'rw', default => sub {0} ); | ||||
| has 'lifted'             => (is => 'rw', default => sub {0} ); | ||||
| has 'last_pos'           => (is => 'rw', default => sub { Slic3r::Point->new(0,0) } ); | ||||
| has 'last_speed'         => (is => 'rw', default => sub {""}); | ||||
|  | @ -328,12 +327,7 @@ sub extrude_path { | |||
|              | ||||
|             # calculate extrusion length for this line | ||||
|             my $E = 0; | ||||
|             if ($e) { | ||||
|                 $E = $e * $line_length; | ||||
|                 $self->extruder->e(0) if $self->config->use_relative_e_distances; | ||||
|                 $self->total_extrusion_length($self->total_extrusion_length + $E); | ||||
|                 $E = $self->extruder->e($self->extruder->e + $E); | ||||
|             } | ||||
|             $E = $self->extruder->extrude($e * $line_length) if $e; | ||||
|              | ||||
|             # compose G-code line | ||||
|             $gcode .= sprintf "G1 X%.3f Y%.3f", | ||||
|  | @ -554,11 +548,9 @@ sub unretract { | |||
|     if ($to_unretract) { | ||||
|         $self->speed('retract'); | ||||
|         if ($self->config->extrusion_axis) { | ||||
|             $self->extruder->e(0) if $self->config->use_relative_e_distances; | ||||
|             $self->total_extrusion_length($self->total_extrusion_length + $to_unretract); | ||||
|             # use G1 instead of G0 because G0 will blend the restart with the previous travel move | ||||
|             $gcode .= sprintf "G1 E%.5f F%.3f", | ||||
|                 $self->extruder->e($self->extruder->e + $to_unretract), | ||||
|                 $self->extruder->extrude($to_unretract), | ||||
|                 $self->extruder->retract_speed_mm_min; | ||||
|             $gcode .= " ; compensate retraction" if $self->config->gcode_comments; | ||||
|             $gcode .= "\n"; | ||||
|  | @ -574,7 +566,7 @@ sub reset_e { | |||
|     my ($self) = @_; | ||||
|     return "" if $self->config->gcode_flavor =~ /^(?:mach3|makerware|sailfish)$/; | ||||
|      | ||||
|     $self->extruder->e(0) if $self->extruder; | ||||
|     $self->extruder->E(0) if $self->extruder; | ||||
|     return sprintf "G92 %s0%s\n", $self->config->extrusion_axis, ($self->config->gcode_comments ? ' ; reset extrusion distance' : '') | ||||
|         if $self->config->extrusion_axis && !$self->config->use_relative_e_distances; | ||||
| } | ||||
|  | @ -627,10 +619,7 @@ sub _Gx { | |||
|      | ||||
|     # output extrusion distance | ||||
|     if ($e && $self->config->extrusion_axis) { | ||||
|         $self->extruder->e(0) if $self->config->use_relative_e_distances; | ||||
|         $self->extruder->e($self->extruder->e + $e); | ||||
|         $self->total_extrusion_length($self->total_extrusion_length + $e); | ||||
|         $gcode .= sprintf " %s%.5f", $self->config->extrusion_axis, $self->extruder->e; | ||||
|         $gcode .= sprintf " %s%.5f", $self->config->extrusion_axis, $self->extruder->extrude($e); | ||||
|     } | ||||
|      | ||||
|     $gcode .= " ; $comment" if $comment && $self->config->gcode_comments; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Alessandro Ranellucci
						Alessandro Ranellucci