mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-30 20:21:12 -06:00 
			
		
		
		
	Merge branch 'master' of https://github.com/prusa3d/Slic3r into gcode_preview
This commit is contained in:
		
						commit
						2cbde291e4
					
				
					 2 changed files with 25 additions and 5 deletions
				
			
		|  | @ -56,7 +56,9 @@ namespace Slic3r { | |||
| 
 | ||||
|     float GCodeTimeEstimator::Block::Trapezoid::speed_from_distance(float initial_feedrate, float distance, float acceleration) | ||||
|     { | ||||
|         return ::sqrt(sqr(initial_feedrate) + 2.0f * acceleration * distance); | ||||
|         // to avoid invalid negative numbers due to numerical imprecision 
 | ||||
|         float value = std::max(0.0f, sqr(initial_feedrate) + 2.0f * acceleration * distance); | ||||
|         return ::sqrt(value); | ||||
|     } | ||||
| 
 | ||||
|     float GCodeTimeEstimator::Block::move_length() const | ||||
|  | @ -122,7 +124,9 @@ namespace Slic3r { | |||
| 
 | ||||
|     float GCodeTimeEstimator::Block::max_allowable_speed(float acceleration, float target_velocity, float distance) | ||||
|     { | ||||
|         return ::sqrt(sqr(target_velocity) - 2.0f * acceleration * distance); | ||||
|         // to avoid invalid negative numbers due to numerical imprecision 
 | ||||
|         float value = std::max(0.0f, sqr(target_velocity) - 2.0f * acceleration * distance); | ||||
|         return ::sqrt(value); | ||||
|     } | ||||
| 
 | ||||
|     float GCodeTimeEstimator::Block::estimate_acceleration_distance(float initial_rate, float target_rate, float acceleration) | ||||
|  | @ -149,6 +153,9 @@ namespace Slic3r { | |||
|             [this](GCodeReader &reader, const GCodeReader::GCodeLine &line) | ||||
|         { this->_process_gcode_line(reader, line); }); | ||||
| 
 | ||||
|         _calculate_time(); | ||||
| 
 | ||||
|         _reset_blocks(); | ||||
|         _reset(); | ||||
|     } | ||||
| 
 | ||||
|  | @ -159,6 +166,7 @@ namespace Slic3r { | |||
|         _parser.parse_file(file, boost::bind(&GCodeTimeEstimator::_process_gcode_line, this, _1, _2)); | ||||
|         _calculate_time(); | ||||
| 
 | ||||
|         _reset_blocks(); | ||||
|         _reset(); | ||||
|     } | ||||
| 
 | ||||
|  | @ -172,6 +180,7 @@ namespace Slic3r { | |||
|             _parser.parse_line(line, action); | ||||
|         _calculate_time(); | ||||
| 
 | ||||
|         _reset_blocks(); | ||||
|         _reset(); | ||||
|     } | ||||
| 
 | ||||
|  | @ -199,6 +208,7 @@ namespace Slic3r { | |||
|     { | ||||
|         PROFILE_FUNC(); | ||||
|         _calculate_time(); | ||||
|         _reset_blocks(); | ||||
|         _reset(); | ||||
|     } | ||||
| 
 | ||||
|  | @ -383,6 +393,7 @@ namespace Slic3r { | |||
|     void GCodeTimeEstimator::reset() | ||||
|     { | ||||
|         _time = 0.0f; | ||||
|         _reset_blocks(); | ||||
|         _reset(); | ||||
|     } | ||||
| 
 | ||||
|  | @ -412,8 +423,6 @@ namespace Slic3r { | |||
| 
 | ||||
|     void GCodeTimeEstimator::_reset() | ||||
|     { | ||||
|         _blocks.clear(); | ||||
| 
 | ||||
|         _curr.reset(); | ||||
|         _prev.reset(); | ||||
| 
 | ||||
|  | @ -424,6 +433,11 @@ namespace Slic3r { | |||
|         set_additional_time(0.0f); | ||||
|     } | ||||
| 
 | ||||
|     void GCodeTimeEstimator::_reset_blocks() | ||||
|     { | ||||
|         _blocks.clear(); | ||||
|     } | ||||
| 
 | ||||
|     void GCodeTimeEstimator::_calculate_time() | ||||
|     { | ||||
|         _forward_pass(); | ||||
|  | @ -950,7 +964,7 @@ namespace Slic3r { | |||
|     void GCodeTimeEstimator::_simulate_st_synchronize() | ||||
|     { | ||||
|         _calculate_time(); | ||||
|         _reset(); | ||||
|         _reset_blocks(); | ||||
|     } | ||||
| 
 | ||||
|     void GCodeTimeEstimator::_forward_pass() | ||||
|  |  | |||
|  | @ -7,6 +7,11 @@ | |||
| 
 | ||||
| namespace Slic3r { | ||||
| 
 | ||||
|     //
 | ||||
|     // Some of the algorithms used by class GCodeTimeEstimator were inpired by
 | ||||
|     // Cura Engine's class TimeEstimateCalculator
 | ||||
|     // https://github.com/Ultimaker/CuraEngine/blob/master/src/timeEstimate.h
 | ||||
|     //
 | ||||
|     class GCodeTimeEstimator | ||||
|     { | ||||
|     public: | ||||
|  | @ -241,6 +246,7 @@ namespace Slic3r { | |||
| 
 | ||||
|     private: | ||||
|         void _reset(); | ||||
|         void _reset_blocks(); | ||||
| 
 | ||||
|         // Calculates the time estimate
 | ||||
|         void _calculate_time(); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Enrico Turri
						Enrico Turri