mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-31 04:31:15 -06:00 
			
		
		
		
	Overhang tweaks:
1. Revert back to classic overhang 2. Support percent for overhang speed
This commit is contained in:
		
							parent
							
								
									be54f6bc99
								
							
						
					
					
						commit
						0657ad9e58
					
				
					 3 changed files with 31 additions and 23 deletions
				
			
		|  | @ -2959,11 +2959,13 @@ GCode::LayerResult GCode::process_layer( | ||||||
|         Skirt::make_skirt_loops_per_extruder_1st_layer(print, layer_tools, m_skirt_done) : |         Skirt::make_skirt_loops_per_extruder_1st_layer(print, layer_tools, m_skirt_done) : | ||||||
|         Skirt::make_skirt_loops_per_extruder_other_layers(print, layer_tools, m_skirt_done); |         Skirt::make_skirt_loops_per_extruder_other_layers(print, layer_tools, m_skirt_done); | ||||||
| 
 | 
 | ||||||
|     for (const auto& layer_to_print : layers) { |     if (m_config.enable_overhang_speed && !m_config.overhang_speed_classic) { | ||||||
|       m_extrusion_quality_estimator.prepare_for_new_layer(layer_to_print.original_object, layer_to_print.object_layer); |         for (const auto &layer_to_print : layers) { | ||||||
|  |             m_extrusion_quality_estimator.prepare_for_new_layer(layer_to_print.original_object, | ||||||
|  |                                                                 layer_to_print.object_layer); | ||||||
|  |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
|     // Group extrusions by an extruder, then by an object, an island and a region.
 |     // Group extrusions by an extruder, then by an object, an island and a region.
 | ||||||
|     std::map<unsigned int, std::vector<ObjectByExtruder>> by_extruder; |     std::map<unsigned int, std::vector<ObjectByExtruder>> by_extruder; | ||||||
|     bool is_anything_overridden = const_cast<LayerTools&>(layer_tools).wiping_extrusions().is_anything_overridden(); |     bool is_anything_overridden = const_cast<LayerTools&>(layer_tools).wiping_extrusions().is_anything_overridden(); | ||||||
|  | @ -3275,7 +3277,9 @@ GCode::LayerResult GCode::process_layer( | ||||||
|                 // ref to: https://github.com/SoftFever/OrcaSlicer/pull/205/commits/7f1fe0bd544077626080aa1a9a0576aa735da1a4#r1083470162
 |                 // ref to: https://github.com/SoftFever/OrcaSlicer/pull/205/commits/7f1fe0bd544077626080aa1a9a0576aa735da1a4#r1083470162
 | ||||||
|                 if (reset_e && !m_config.use_relative_e_distances) |                 if (reset_e && !m_config.use_relative_e_distances) | ||||||
|                     gcode += m_writer.reset_e(true); |                     gcode += m_writer.reset_e(true); | ||||||
|                 m_extrusion_quality_estimator.set_current_object(&instance_to_print.print_object); |                  | ||||||
|  |                 if (m_config.enable_overhang_speed && !m_config.overhang_speed_classic) | ||||||
|  |                     m_extrusion_quality_estimator.set_current_object(&instance_to_print.print_object); | ||||||
| 
 | 
 | ||||||
|                 // When starting a new object, use the external motion planner for the first travel move.
 |                 // When starting a new object, use the external motion planner for the first travel move.
 | ||||||
|                 const Point &offset = inst.shift; |                 const Point &offset = inst.shift; | ||||||
|  |  | ||||||
|  | @ -759,8 +759,8 @@ void PrintConfigDef::init_fff_params() | ||||||
|     def->label = L("Classic mode"); |     def->label = L("Classic mode"); | ||||||
|     def->category = L("Speed"); |     def->category = L("Speed"); | ||||||
|     def->tooltip = L("Enable this option to use classic mode"); |     def->tooltip = L("Enable this option to use classic mode"); | ||||||
|     def->mode = comAdvanced; |     def->mode = comDevelop; | ||||||
|     def->set_default_value(new ConfigOptionBool{ false }); |     def->set_default_value(new ConfigOptionBool{ true }); | ||||||
| 
 | 
 | ||||||
|     def = this->add("enable_overhang_speed", coBool); |     def = this->add("enable_overhang_speed", coBool); | ||||||
|     def->label = L("Slow down for overhang"); |     def->label = L("Slow down for overhang"); | ||||||
|  | @ -769,47 +769,51 @@ void PrintConfigDef::init_fff_params() | ||||||
|     def->mode = comAdvanced; |     def->mode = comAdvanced; | ||||||
|     def->set_default_value(new ConfigOptionBool{ true }); |     def->set_default_value(new ConfigOptionBool{ true }); | ||||||
| 
 | 
 | ||||||
|     def = this->add("overhang_1_4_speed", coFloat); |     def = this->add("overhang_1_4_speed", coFloatOrPercent); | ||||||
|     def->label = "(10%, 25%)"; |     def->label = "(10%, 25%)"; | ||||||
|     def->category = L("Speed"); |     def->category = L("Speed"); | ||||||
|     def->full_label = "(10%, 25%)"; |     def->full_label = "(10%, 25%)"; | ||||||
|     //def->tooltip = L("Speed for line of wall which has degree of overhang between 10% and 25% line width. "
 |     //def->tooltip = L("Speed for line of wall which has degree of overhang between 10% and 25% line width. "
 | ||||||
|     //                 "0 means using original wall speed");
 |     //                 "0 means using original wall speed");
 | ||||||
|     def->sidetext = L("mm/s"); |     def->sidetext = L("mm/s or %"); | ||||||
|  |     def->ratio_over = "outer_wall_speed"; | ||||||
|     def->min = 0; |     def->min = 0; | ||||||
|     def->mode = comAdvanced; |     def->mode = comAdvanced; | ||||||
|     def->set_default_value(new ConfigOptionFloat(0)); |     def->set_default_value(new ConfigOptionFloatOrPercent(0, false)); | ||||||
| 
 | 
 | ||||||
|     def = this->add("overhang_2_4_speed", coFloat); |     def = this->add("overhang_2_4_speed", coFloatOrPercent); | ||||||
|     def->label = "[25%, 50%)"; |     def->label = "[25%, 50%)"; | ||||||
|     def->category = L("Speed"); |     def->category = L("Speed"); | ||||||
|     def->full_label = "[25%, 50%)"; |     def->full_label = "[25%, 50%)"; | ||||||
|     //def->tooltip = L("Speed for line of wall which has degree of overhang between 25% and 50% line width. "
 |     //def->tooltip = L("Speed for line of wall which has degree of overhang between 25% and 50% line width. "
 | ||||||
|     //                 "0 means using original wall speed");
 |     //                 "0 means using original wall speed");
 | ||||||
|     def->sidetext = L("mm/s"); |     def->sidetext = L("mm/s or %"); | ||||||
|  |     def->ratio_over = "outer_wall_speed"; | ||||||
|     def->min = 0; |     def->min = 0; | ||||||
|     def->mode = comAdvanced; |     def->mode = comAdvanced; | ||||||
|     def->set_default_value(new ConfigOptionFloat(0)); |     def->set_default_value(new ConfigOptionFloatOrPercent(0, false)); | ||||||
| 
 | 
 | ||||||
|     def = this->add("overhang_3_4_speed", coFloat); |     def = this->add("overhang_3_4_speed", coFloatOrPercent); | ||||||
|     def->label = "[50%, 75%)"; |     def->label = "[50%, 75%)"; | ||||||
|     def->category = L("Speed"); |     def->category = L("Speed"); | ||||||
|     def->full_label = "[50%, 75%)"; |     def->full_label = "[50%, 75%)"; | ||||||
|     //def->tooltip = L("Speed for line of wall which has degree of overhang between 50% and 75% line width. 0 means using original wall speed");
 |     //def->tooltip = L("Speed for line of wall which has degree of overhang between 50% and 75% line width. 0 means using original wall speed");
 | ||||||
|     def->sidetext = L("mm/s"); |     def->sidetext = L("mm/s or %"); | ||||||
|  |     def->ratio_over = "outer_wall_speed"; | ||||||
|     def->min = 0; |     def->min = 0; | ||||||
|     def->mode = comAdvanced; |     def->mode = comAdvanced; | ||||||
|     def->set_default_value(new ConfigOptionFloat(0)); |     def->set_default_value(new ConfigOptionFloatOrPercent(0, false)); | ||||||
| 
 | 
 | ||||||
|     def = this->add("overhang_4_4_speed", coFloat); |     def = this->add("overhang_4_4_speed", coFloatOrPercent); | ||||||
|     def->label = "[75%, 100%)"; |     def->label = "[75%, 100%)"; | ||||||
|     def->category = L("Speed"); |     def->category = L("Speed"); | ||||||
|     def->full_label = "[75%, 100%)"; |     def->full_label = "[75%, 100%)"; | ||||||
|     //def->tooltip = L("Speed for line of wall which has degree of overhang between 75% and 100% line width. 0 means using original wall speed");
 |     //def->tooltip = L("Speed for line of wall which has degree of overhang between 75% and 100% line width. 0 means using original wall speed");
 | ||||||
|     def->sidetext = L("mm/s"); |     def->sidetext = L("mm/s or %"); | ||||||
|  |     def->ratio_over = "outer_wall_speed"; | ||||||
|     def->min = 0; |     def->min = 0; | ||||||
|     def->mode = comAdvanced; |     def->mode = comAdvanced; | ||||||
|     def->set_default_value(new ConfigOptionFloat(0)); |     def->set_default_value(new ConfigOptionFloatOrPercent(0, false)); | ||||||
| 
 | 
 | ||||||
|     def = this->add("bridge_speed", coFloat); |     def = this->add("bridge_speed", coFloat); | ||||||
|     def->label = L("Bridge"); |     def->label = L("Bridge"); | ||||||
|  | @ -4476,7 +4480,7 @@ void PrintConfigDef::handle_legacy(t_config_option_key &opt_key, std::string &va | ||||||
|         "remove_freq_sweep", "remove_bed_leveling", "remove_extrusion_calibration", |         "remove_freq_sweep", "remove_bed_leveling", "remove_extrusion_calibration", | ||||||
|         "support_transition_line_width", "support_transition_speed", "bed_temperature", "bed_temperature_initial_layer", |         "support_transition_line_width", "support_transition_speed", "bed_temperature", "bed_temperature_initial_layer", | ||||||
|         "can_switch_nozzle_type", "can_add_auxiliary_fan", "extra_flush_volume", "spaghetti_detector", "adaptive_layer_height", |         "can_switch_nozzle_type", "can_add_auxiliary_fan", "extra_flush_volume", "spaghetti_detector", "adaptive_layer_height", | ||||||
|         "z_hop_type", "z_lift_type" |         "z_hop_type", "z_lift_type", "overhang_speed_classic" | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     if (ignore.find(opt_key) != ignore.end()) { |     if (ignore.find(opt_key) != ignore.end()) { | ||||||
|  |  | ||||||
|  | @ -766,10 +766,10 @@ PRINT_CONFIG_CLASS_DEFINE( | ||||||
|     ((ConfigOptionFloat, top_surface_speed)) |     ((ConfigOptionFloat, top_surface_speed)) | ||||||
|     //BBS
 |     //BBS
 | ||||||
|     ((ConfigOptionBool,                 enable_overhang_speed)) |     ((ConfigOptionBool,                 enable_overhang_speed)) | ||||||
|     ((ConfigOptionFloat,                overhang_1_4_speed)) |     ((ConfigOptionFloatOrPercent,       overhang_1_4_speed)) | ||||||
|     ((ConfigOptionFloat,                overhang_2_4_speed)) |     ((ConfigOptionFloatOrPercent,       overhang_2_4_speed)) | ||||||
|     ((ConfigOptionFloat,                overhang_3_4_speed)) |     ((ConfigOptionFloatOrPercent,       overhang_3_4_speed)) | ||||||
|     ((ConfigOptionFloat,                overhang_4_4_speed)) |     ((ConfigOptionFloatOrPercent,       overhang_4_4_speed)) | ||||||
|     ((ConfigOptionBool,                 only_one_wall_top)) |     ((ConfigOptionBool,                 only_one_wall_top)) | ||||||
| 
 | 
 | ||||||
|     //SoftFever
 |     //SoftFever
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 SoftFever
						SoftFever