mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-30 12:11:15 -06:00 
			
		
		
		
	Refactoring: keep height in Flow object and calculate spacing on demand
This commit is contained in:
		
							parent
							
								
									9bff6ccde7
								
							
						
					
					
						commit
						8ee11b3239
					
				
					 7 changed files with 86 additions and 73 deletions
				
			
		|  | @ -222,7 +222,7 @@ sub make_fill { | |||
|         ); | ||||
|         next unless @polylines; | ||||
|          | ||||
|         my $mm3_per_mm = $flow->mm3_per_mm($h); | ||||
|         my $mm3_per_mm = $flow->mm3_per_mm; | ||||
|          | ||||
|         # save into layer | ||||
|         push @fills, my $collection = Slic3r::ExtrusionPath::Collection->new; | ||||
|  |  | |||
|  | @ -43,19 +43,19 @@ sub make_perimeters { | |||
|      | ||||
|     # external perimeters | ||||
|     my $ext_perimeter_flow  = $self->flow(FLOW_ROLE_EXTERNAL_PERIMETER); | ||||
|     my $ext_mm3_per_mm      = $ext_perimeter_flow->mm3_per_mm($self->height); | ||||
|     my $ext_mm3_per_mm      = $ext_perimeter_flow->mm3_per_mm; | ||||
|     my $ext_pwidth          = $ext_perimeter_flow->scaled_width; | ||||
|     my $ext_pspacing        = $ext_perimeter_flow->scaled_spacing; | ||||
|      | ||||
|     # other perimeters | ||||
|     my $perimeter_flow      = $self->flow(FLOW_ROLE_PERIMETER); | ||||
|     my $mm3_per_mm          = $perimeter_flow->mm3_per_mm($self->height); | ||||
|     my $mm3_per_mm          = $perimeter_flow->mm3_per_mm; | ||||
|     my $pwidth              = $perimeter_flow->scaled_width; | ||||
|     my $pspacing            = $perimeter_flow->scaled_spacing; | ||||
|      | ||||
|     # overhang perimeters | ||||
|     my $overhang_flow       = $self->region->flow(FLOW_ROLE_PERIMETER, -1, 1, 0, undef, $self->layer->object); | ||||
|     my $mm3_per_mm_overhang = $overhang_flow->mm3_per_mm(-1); | ||||
|     my $mm3_per_mm_overhang = $overhang_flow->mm3_per_mm; | ||||
|      | ||||
|     # solid infill | ||||
|     my $solid_infill_flow   = $self->flow(FLOW_ROLE_SOLID_INFILL); | ||||
|  | @ -418,7 +418,7 @@ sub _fill_gaps { | |||
|     my $flow = $self->flow(FLOW_ROLE_SOLID_INFILL, 0, $w); | ||||
|     my %path_args = ( | ||||
|         role        => EXTR_ROLE_GAPFILL, | ||||
|         mm3_per_mm  => $flow->mm3_per_mm($self->height), | ||||
|         mm3_per_mm  => $flow->mm3_per_mm, | ||||
|         width       => $flow->width, | ||||
|         height      => $self->height, | ||||
|     ); | ||||
|  |  | |||
|  | @ -704,7 +704,7 @@ sub make_skirt { | |||
|         bridge_flow_ratio   => 0, | ||||
|     ); | ||||
|     my $spacing = $flow->spacing; | ||||
|     my $mm3_per_mm = $flow->mm3_per_mm($first_layer_height); | ||||
|     my $mm3_per_mm = $flow->mm3_per_mm; | ||||
|      | ||||
|     my @extruders_e_per_mm = (); | ||||
|     my $extruder_idx = 0; | ||||
|  | @ -763,7 +763,7 @@ sub make_brim { | |||
|         layer_height        => $first_layer_height, | ||||
|         bridge_flow_ratio   => 0, | ||||
|     ); | ||||
|     my $mm3_per_mm = $flow->mm3_per_mm($first_layer_height); | ||||
|     my $mm3_per_mm = $flow->mm3_per_mm; | ||||
|      | ||||
|     my $grow_distance = $flow->scaled_width / 2; | ||||
|     my @islands = (); # array of polygons | ||||
|  |  | |||
|  | @ -602,7 +602,7 @@ sub generate_toolpaths { | |||
|             ); | ||||
|              | ||||
|             # transform loops into ExtrusionPath objects | ||||
|             my $mm3_per_mm = $interface_flow->mm3_per_mm($layer->height); | ||||
|             my $mm3_per_mm = $interface_flow->mm3_per_mm; | ||||
|             @loops = map Slic3r::ExtrusionPath->new( | ||||
|                 polyline    => $_, | ||||
|                 role        => EXTR_ROLE_SUPPORTMATERIAL_INTERFACE, | ||||
|  | @ -649,7 +649,7 @@ sub generate_toolpaths { | |||
|                     layer_height => $layer->height, | ||||
|                     complete    => 1, | ||||
|                 ); | ||||
|                 my $mm3_per_mm = $params->{flow}->mm3_per_mm($layer->height); | ||||
|                 my $mm3_per_mm = $params->{flow}->mm3_per_mm; | ||||
|                  | ||||
|                 push @paths, map Slic3r::ExtrusionPath->new( | ||||
|                     polyline    => Slic3r::Polyline->new(@$_), | ||||
|  | @ -684,7 +684,7 @@ sub generate_toolpaths { | |||
|             } else { | ||||
|                 # draw a perimeter all around support infill | ||||
|                 # TODO: use brim ordering algorithm | ||||
|                 my $mm3_per_mm = $flow->mm3_per_mm($layer->height); | ||||
|                 my $mm3_per_mm = $flow->mm3_per_mm; | ||||
|                 push @paths, map Slic3r::ExtrusionPath->new( | ||||
|                     polyline    => $_->split_at_first_point, | ||||
|                     role        => EXTR_ROLE_SUPPORTMATERIAL, | ||||
|  | @ -705,7 +705,7 @@ sub generate_toolpaths { | |||
|                     layer_height => $layer->height, | ||||
|                     complete    => 1, | ||||
|                 ); | ||||
|                 my $mm3_per_mm = $params->{flow}->mm3_per_mm($layer->height); | ||||
|                 my $mm3_per_mm = $params->{flow}->mm3_per_mm; | ||||
|                  | ||||
|                 push @paths, map Slic3r::ExtrusionPath->new( | ||||
|                     polyline    => Slic3r::Polyline->new(@$_), | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Alessandro Ranellucci
						Alessandro Ranellucci