mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-30 20:21:12 -06:00 
			
		
		
		
	Fixed a crash when complete_objects was turned on
This commit is contained in:
		
							parent
							
								
									54bd0af905
								
							
						
					
					
						commit
						bb288f2a1b
					
				
					 1 changed files with 17 additions and 10 deletions
				
			
		|  | @ -138,15 +138,19 @@ void ToolOrdering::collect_extruders(const PrintObject &object) | |||
|             const PrintRegion ®ion = *object.print()->regions[region_id]; | ||||
| 
 | ||||
|             if (! layerm->perimeters.entities.empty()) { | ||||
|                 bool something_nonoverriddable = false; | ||||
|                 for (const auto& eec : layerm->perimeters.entities) // let's check if there are nonoverriddable entities
 | ||||
|                     if (!layer_tools.wiping_extrusions.is_overriddable(dynamic_cast<const ExtrusionEntityCollection&>(*eec), *m_print_config_ptr, object, region)) { | ||||
|                         something_nonoverriddable = true; | ||||
|                         break; | ||||
|                     } | ||||
|                 bool something_nonoverriddable = true; | ||||
| 
 | ||||
|                 if (m_print_config_ptr) { // in this case complete_objects is false (see ToolOrdering constructors)
 | ||||
|                     something_nonoverriddable = false; | ||||
|                     for (const auto& eec : layerm->perimeters.entities) // let's check if there are nonoverriddable entities
 | ||||
|                         if (!layer_tools.wiping_extrusions.is_overriddable(dynamic_cast<const ExtrusionEntityCollection&>(*eec), *m_print_config_ptr, object, region)) { | ||||
|                             something_nonoverriddable = true; | ||||
|                             break; | ||||
|                         } | ||||
|                 } | ||||
| 
 | ||||
|                 if (something_nonoverriddable) | ||||
|                     layer_tools.extruders.push_back(region.config.perimeter_extruder.value); | ||||
|                         layer_tools.extruders.push_back(region.config.perimeter_extruder.value); | ||||
| 
 | ||||
|                 layer_tools.has_object = true; | ||||
|             } | ||||
|  | @ -164,10 +168,13 @@ void ToolOrdering::collect_extruders(const PrintObject &object) | |||
|                 else if (role != erNone) | ||||
|                     has_infill = true; | ||||
| 
 | ||||
|                 if (!something_nonoverriddable && !layer_tools.wiping_extrusions.is_overriddable(*fill, *m_print_config_ptr, object, region)) | ||||
|                     something_nonoverriddable = true; | ||||
|                 if (m_print_config_ptr) { | ||||
|                     if (!something_nonoverriddable && !layer_tools.wiping_extrusions.is_overriddable(*fill, *m_print_config_ptr, object, region)) | ||||
|                         something_nonoverriddable = true; | ||||
|                 } | ||||
|             } | ||||
|             if (something_nonoverriddable) | ||||
| 
 | ||||
|             if (something_nonoverriddable || !m_print_config_ptr) | ||||
|             { | ||||
|                 if (has_solid_infill) | ||||
|                     layer_tools.extruders.push_back(region.config.solid_infill_extruder); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Lukas Matena
						Lukas Matena