mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-30 20:21:12 -06:00 
			
		
		
		
	Fix of an update of support extruders when changing number
of printer extruders.
This commit is contained in:
		
							parent
							
								
									40d313961e
								
							
						
					
					
						commit
						668a8cd2ea
					
				
					 1 changed files with 7 additions and 2 deletions
				
			
		|  | @ -590,6 +590,8 @@ Print::ApplyStatus Print::apply(const Model &model, DynamicPrintConfig new_full_ | |||
| 
 | ||||
|     // Apply variables to placeholder parser. The placeholder parser is used by G-code export,
 | ||||
|     // which should be stopped if print_diff is not empty.
 | ||||
|     size_t num_extruders = m_config.nozzle_diameter.size(); | ||||
|     bool   num_extruders_changed = false; | ||||
|     if (! full_config_diff.empty() || ! placeholder_parser_overrides.empty()) { | ||||
|         update_apply_status(this->invalidate_step(psGCodeExport)); | ||||
| 		m_placeholder_parser.apply_config(std::move(placeholder_parser_overrides)); | ||||
|  | @ -605,6 +607,10 @@ Print::ApplyStatus Print::apply(const Model &model, DynamicPrintConfig new_full_ | |||
| 	    // Handle changes to regions config defaults
 | ||||
| 	    m_default_region_config.apply_only(new_full_config, region_diff, true); | ||||
|         m_full_print_config = std::move(new_full_config); | ||||
|         if (num_extruders != m_config.nozzle_diameter.size()) { | ||||
|         	num_extruders = m_config.nozzle_diameter.size(); | ||||
|         	num_extruders_changed = true; | ||||
|         } | ||||
|     } | ||||
|      | ||||
|     class LayerRanges | ||||
|  | @ -781,7 +787,6 @@ Print::ApplyStatus Print::apply(const Model &model, DynamicPrintConfig new_full_ | |||
|         print_object_status.emplace(PrintObjectStatus(print_object)); | ||||
| 
 | ||||
|     // 3) Synchronize ModelObjects & PrintObjects.
 | ||||
|     size_t num_extruders = m_config.nozzle_diameter.size(); | ||||
|     for (size_t idx_model_object = 0; idx_model_object < model.objects.size(); ++ idx_model_object) { | ||||
|         ModelObject &model_object = *m_model.objects[idx_model_object]; | ||||
|         auto it_status = model_object_status.find(ModelObjectStatus(model_object.id())); | ||||
|  | @ -828,7 +833,7 @@ Print::ApplyStatus Print::apply(const Model &model, DynamicPrintConfig new_full_ | |||
|             bool object_config_changed = model_object.config != model_object_new.config; | ||||
| 			if (object_config_changed) | ||||
| 				static_cast<DynamicPrintConfig&>(model_object.config) = static_cast<const DynamicPrintConfig&>(model_object_new.config); | ||||
|             if (! object_diff.empty() || object_config_changed) { | ||||
|             if (! object_diff.empty() || object_config_changed || num_extruders_changed) { | ||||
|                 PrintObjectConfig new_config = PrintObject::object_config_from_model_object(m_default_object_config, model_object, num_extruders); | ||||
|                 auto range = print_object_status.equal_range(PrintObjectStatus(model_object.id())); | ||||
|                 for (auto it = range.first; it != range.second; ++ it) { | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 bubnikv
						bubnikv