mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-30 20:21:12 -06:00 
			
		
		
		
	More refactoring to GCode.pm: make writer() public and fix usage of Slic3r::GCode without a Slic3r::Layer object
This commit is contained in:
		
							parent
							
								
									a38ec14cb1
								
							
						
					
					
						commit
						268de5c8e5
					
				
					 6 changed files with 97 additions and 84 deletions
				
			
		|  | @ -772,16 +772,16 @@ sub write_gcode { | |||
|     my $gcodegen = Slic3r::GCode->new( | ||||
|         placeholder_parser  => $self->placeholder_parser, | ||||
|         layer_count         => $layer_count, | ||||
|         enable_cooling_markers => 1, | ||||
|     ); | ||||
|     $gcodegen->apply_print_config($self->config); | ||||
|     $gcodegen->set_extruders($self->extruders); | ||||
|      | ||||
|     print $fh "G21 ; set units to millimeters\n" if $self->config->gcode_flavor ne 'makerware'; | ||||
|     print $fh $gcodegen->set_fan(0, 1) if $self->config->cooling && $self->config->disable_fan_first_layers; | ||||
|     print $fh $gcodegen->writer->set_fan(0, 1) if $self->config->cooling && $self->config->disable_fan_first_layers; | ||||
|      | ||||
|     # set bed temperature | ||||
|     if ((my $temp = $self->config->first_layer_bed_temperature) && $self->config->start_gcode !~ /M(?:190|140)/i) { | ||||
|         printf $fh $gcodegen->set_bed_temperature($temp, 1); | ||||
|         printf $fh $gcodegen->writer->set_bed_temperature($temp, 1); | ||||
|     } | ||||
|      | ||||
|     # set extruder(s) temperature before and after start G-code | ||||
|  | @ -792,7 +792,7 @@ sub write_gcode { | |||
|         for my $t (@{$self->extruders}) { | ||||
|             my $temp = $self->config->get_at('first_layer_temperature', $t); | ||||
|             $temp += $self->config->standby_temperature_delta if $self->config->ooze_prevention; | ||||
|             printf $fh $gcodegen->set_temperature($temp, $wait, $t) if $temp > 0; | ||||
|             printf $fh $gcodegen->writer->set_temperature($temp, $wait, $t) if $temp > 0; | ||||
|         } | ||||
|     }; | ||||
|     $print_first_layer_temperature->(0); | ||||
|  | @ -800,15 +800,7 @@ sub write_gcode { | |||
|     $print_first_layer_temperature->(1); | ||||
|      | ||||
|     # set other general things | ||||
|     print  $fh "G90 ; use absolute coordinates\n" if $self->config->gcode_flavor ne 'makerware'; | ||||
|     if ($self->config->gcode_flavor =~ /^(?:reprap|teacup)$/) { | ||||
|         printf $fh $gcodegen->reset_e; | ||||
|         if ($self->config->use_relative_e_distances) { | ||||
|             print $fh "M83 ; use relative distances for extrusion\n"; | ||||
|         } else { | ||||
|             print $fh "M82 ; use absolute distances for extrusion\n"; | ||||
|         } | ||||
|     } | ||||
|     print $fh $gcodegen->writer->preamble; | ||||
|      | ||||
|     # initialize a motion planner for object-to-object travel moves | ||||
|     if ($self->config->avoid_crossing_perimeters) { | ||||
|  | @ -893,7 +885,7 @@ sub write_gcode { | |||
|                     # another one, set first layer temperatures. this happens before the Z move | ||||
|                     # is triggered, so machine has more time to reach such temperatures | ||||
|                     if ($layer->id == 0 && $finished_objects > 0) { | ||||
|                         printf $fh $gcodegen->set_bed_temperature($self->config->first_layer_bed_temperature), | ||||
|                         printf $fh $gcodegen->writer->set_bed_temperature($self->config->first_layer_bed_temperature), | ||||
|                             if $self->config->first_layer_bed_temperature; | ||||
|                         $print_first_layer_temperature->(); | ||||
|                     } | ||||
|  | @ -944,12 +936,12 @@ sub write_gcode { | |||
|      | ||||
|     # write end commands to file | ||||
|     print $fh $gcodegen->retract; | ||||
|     print $fh $gcodegen->set_fan(0); | ||||
|     print $fh $gcodegen->writer->set_fan(0); | ||||
|     printf $fh "%s\n", $gcodegen->placeholder_parser->process($self->config->end_gcode); | ||||
|      | ||||
|     $self->total_used_filament(0); | ||||
|     $self->total_extruded_volume(0); | ||||
|     foreach my $extruder (@{$gcodegen->extruders}) { | ||||
|     foreach my $extruder (@{$gcodegen->writer->extruders}) { | ||||
|         my $used_filament = $extruder->used_filament; | ||||
|         my $extruded_volume = $extruder->extruded_volume; | ||||
|          | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Alessandro Ranellucci
						Alessandro Ranellucci