mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-30 20:21:12 -06:00 
			
		
		
		
	GCodeProcessor/GCodeViewer -> Extract bed shape from gcode files generated by PrusaSlicer
This commit is contained in:
		
							parent
							
								
									16e282110d
								
							
						
					
					
						commit
						9d4344a78c
					
				
					 3 changed files with 36 additions and 10 deletions
				
			
		|  | @ -356,6 +356,10 @@ void GCodeProcessor::apply_config(const DynamicPrintConfig& config) | |||
|             m_filament_diameters.push_back(static_cast<float>(diam)); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     const ConfigOptionPoints* bed_shape = config.option<ConfigOptionPoints>("bed_shape"); | ||||
|     if (bed_shape != nullptr)  | ||||
|         m_result.bed_shape = bed_shape->values; | ||||
| } | ||||
| 
 | ||||
| void GCodeProcessor::enable_stealth_time_estimator(bool enabled) | ||||
|  |  | |||
|  | @ -210,11 +210,27 @@ namespace Slic3r { | |||
|         { | ||||
|             unsigned int id; | ||||
|             std::vector<MoveVertex> moves; | ||||
| #if ENABLE_GCODE_VIEWER_AS_STATE | ||||
|             Pointfs bed_shape; | ||||
| #endif // ENABLE_GCODE_VIEWER_AS_STATE
 | ||||
| #if ENABLE_GCODE_VIEWER_STATISTICS | ||||
|             long long time{ 0 }; | ||||
|             void reset() { time = 0; moves = std::vector<MoveVertex>(); } | ||||
|             void reset() | ||||
|             { | ||||
|                 time = 0; | ||||
|                 moves = std::vector<MoveVertex>(); | ||||
| #if ENABLE_GCODE_VIEWER_AS_STATE | ||||
|                 bed_shape = Pointfs(); | ||||
| #endif // ENABLE_GCODE_VIEWER_AS_STATE
 | ||||
|             } | ||||
| #else | ||||
|             void reset() { moves = std::vector<MoveVertex>(); } | ||||
|             void reset() | ||||
|             { | ||||
|                 moves = std::vector<MoveVertex>(); | ||||
| #if ENABLE_GCODE_VIEWER_AS_STATE | ||||
|                 bed_shape = Pointfs(); | ||||
| #endif // ENABLE_GCODE_VIEWER_AS_STATE
 | ||||
|             } | ||||
| #endif // ENABLE_GCODE_VIEWER_STATISTICS
 | ||||
|         }; | ||||
| 
 | ||||
|  |  | |||
|  | @ -323,14 +323,20 @@ void GCodeViewer::load(const GCodeProcessor::Result& gcode_result, const Print& | |||
| 
 | ||||
| #if ENABLE_GCODE_VIEWER_AS_STATE | ||||
|     if (wxGetApp().mainframe->get_mode() == MainFrame::EMode::GCodeViewer) { | ||||
|         // adjust printbed size in dependence of toolpaths bbox
 | ||||
|         const double margin = 10.0; | ||||
|         Vec2d min(m_paths_bounding_box.min(0) - margin, m_paths_bounding_box.min(1) - margin); | ||||
|         Vec2d max(m_paths_bounding_box.max(0) + margin, m_paths_bounding_box.max(1) + margin); | ||||
|         Pointfs bed_shape = { { min(0), min(1) }, | ||||
|                               { max(0), min(1) }, | ||||
|                               { max(0), max(1) }, | ||||
|                               { min(0), max(1) } }; | ||||
|         Pointfs bed_shape; | ||||
|         if (!gcode_result.bed_shape.empty()) | ||||
|             // bed shape detected in the gcode
 | ||||
|             bed_shape = gcode_result.bed_shape; | ||||
|         else { | ||||
|             // adjust printbed size in dependence of toolpaths bbox
 | ||||
|             const double margin = 10.0; | ||||
|             Vec2d min(m_paths_bounding_box.min(0) - margin, m_paths_bounding_box.min(1) - margin); | ||||
|             Vec2d max(m_paths_bounding_box.max(0) + margin, m_paths_bounding_box.max(1) + margin); | ||||
|             bed_shape = { { min(0), min(1) }, | ||||
|                           { max(0), min(1) }, | ||||
|                           { max(0), max(1) }, | ||||
|                           { min(0), max(1) } }; | ||||
|         } | ||||
|         wxGetApp().plater()->set_bed_shape(bed_shape, "", ""); | ||||
|     } | ||||
| #endif // ENABLE_GCODE_VIEWER_AS_STATE
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 enricoturri1966
						enricoturri1966