mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-31 12:41:20 -06:00 
			
		
		
		
	Merge remote-tracking branch 'origin/et_save_command'
This commit is contained in:
		
						commit
						a72f50efa5
					
				
					 6 changed files with 43 additions and 2 deletions
				
			
		|  | @ -2666,9 +2666,16 @@ namespace Slic3r { | |||
| 
 | ||||
|     bool _3MF_Exporter::_add_build_to_model_stream(std::stringstream& stream, const BuildItemsList& build_items) | ||||
|     { | ||||
| #if ENABLE_SAVE_COMMANDS_ALWAYS_ENABLED | ||||
|         // This happens for empty projects
 | ||||
| #endif // ENABLE_SAVE_COMMANDS_ALWAYS_ENABLED
 | ||||
|         if (build_items.size() == 0) { | ||||
|             add_error("No build item found"); | ||||
| #if ENABLE_SAVE_COMMANDS_ALWAYS_ENABLED | ||||
|             return true; | ||||
| #else | ||||
|             return false; | ||||
| #endif // ENABLE_SAVE_COMMANDS_ALWAYS_ENABLED
 | ||||
|         } | ||||
| 
 | ||||
|         stream << " <" << BUILD_TAG << ">\n"; | ||||
|  |  | |||
|  | @ -161,8 +161,10 @@ Model Model::read_from_archive(const std::string& input_file, DynamicPrintConfig | |||
|     if (!result) | ||||
|         throw Slic3r::RuntimeError("Loading of a model file failed."); | ||||
| 
 | ||||
| #if !ENABLE_SAVE_COMMANDS_ALWAYS_ENABLED | ||||
|     if (model.objects.empty()) | ||||
|         throw Slic3r::RuntimeError("The supplied file couldn't be read because it's empty"); | ||||
| #endif // !ENABLE_SAVE_COMMANDS_ALWAYS_ENABLED
 | ||||
| 
 | ||||
|     for (ModelObject *o : model.objects) | ||||
|     { | ||||
|  |  | |||
|  | @ -53,6 +53,8 @@ | |||
| #define ENABLE_FIX_MIRRORED_VOLUMES_3MF_IMPORT_EXPORT (1 && ENABLE_2_4_0_ALPHA0) | ||||
| // Enable rendering seams (and other options) in preview using models
 | ||||
| #define ENABLE_SEAMS_USING_MODELS (1 && ENABLE_2_4_0_ALPHA0) | ||||
| // Enable save and save as commands to be enabled also when the plater is empty and allow to load empty projects
 | ||||
| #define ENABLE_SAVE_COMMANDS_ALWAYS_ENABLED (1 && ENABLE_2_4_0_ALPHA0) | ||||
| 
 | ||||
| 
 | ||||
| #endif // _prusaslicer_technologies_h_
 | ||||
|  |  | |||
|  | @ -4108,13 +4108,24 @@ void GLCanvas3D::_render_thumbnail_internal(ThumbnailData& thumbnail_data, const | |||
|         } | ||||
|     } | ||||
| 
 | ||||
| #if !ENABLE_SAVE_COMMANDS_ALWAYS_ENABLED | ||||
|     if (visible_volumes.empty()) | ||||
|         return; | ||||
| #endif // !ENABLE_SAVE_COMMANDS_ALWAYS_ENABLED
 | ||||
| 
 | ||||
|     BoundingBoxf3 volumes_box; | ||||
| #if ENABLE_SAVE_COMMANDS_ALWAYS_ENABLED | ||||
|     if (!visible_volumes.empty()) { | ||||
| #endif // ENABLE_SAVE_COMMANDS_ALWAYS_ENABLED
 | ||||
|         for (const GLVolume* vol : visible_volumes) { | ||||
|             volumes_box.merge(vol->transformed_bounding_box()); | ||||
|         } | ||||
| #if ENABLE_SAVE_COMMANDS_ALWAYS_ENABLED | ||||
|     } | ||||
|     else | ||||
|         // This happens for empty projects
 | ||||
|         volumes_box = wxGetApp().plater()->get_bed().get_bounding_box(true); | ||||
| #endif // ENABLE_SAVE_COMMANDS_ALWAYS_ENABLED
 | ||||
| 
 | ||||
|     Camera camera; | ||||
|     camera.set_type(camera_type); | ||||
|  |  | |||
|  | @ -824,15 +824,26 @@ bool MainFrame::can_start_new_project() const | |||
| 
 | ||||
| bool MainFrame::can_save() const | ||||
| { | ||||
| #if ENABLE_SAVE_COMMANDS_ALWAYS_ENABLED | ||||
|     return (m_plater != nullptr) && | ||||
|         !m_plater->canvas3D()->get_gizmos_manager().is_in_editing_mode(false) && | ||||
|         !m_plater->get_project_filename().empty() && m_plater->is_project_dirty(); | ||||
| #else | ||||
|     return (m_plater != nullptr) && !m_plater->model().objects.empty() && | ||||
|         !m_plater->canvas3D()->get_gizmos_manager().is_in_editing_mode(false) && | ||||
|         !m_plater->get_project_filename().empty() && m_plater->is_project_dirty(); | ||||
| #endif // ENABLE_SAVE_COMMANDS_ALWAYS_ENABLED
 | ||||
| } | ||||
| 
 | ||||
| bool MainFrame::can_save_as() const | ||||
| { | ||||
| #if ENABLE_SAVE_COMMANDS_ALWAYS_ENABLED | ||||
|     return (m_plater != nullptr) && | ||||
|         !m_plater->canvas3D()->get_gizmos_manager().is_in_editing_mode(false); | ||||
| #else | ||||
|     return (m_plater != nullptr) && !m_plater->model().objects.empty() && | ||||
|         !m_plater->canvas3D()->get_gizmos_manager().is_in_editing_mode(false); | ||||
| #endif // ENABLE_SAVE_COMMANDS_ALWAYS_ENABLED
 | ||||
| } | ||||
| 
 | ||||
| void MainFrame::save_project() | ||||
|  |  | |||
|  | @ -5585,8 +5585,16 @@ void Plater::export_amf() | |||
| 
 | ||||
| bool Plater::export_3mf(const boost::filesystem::path& output_path) | ||||
| { | ||||
| #if ENABLE_SAVE_COMMANDS_ALWAYS_ENABLED | ||||
|     if (p->model.objects.empty()) { | ||||
|         MessageDialog dialog(nullptr, _L("The plater is empty.\nConfirm you want to save the project ?"), _L("Save project"), wxYES_NO); | ||||
|         if (dialog.ShowModal() != wxID_YES) | ||||
|             return false; | ||||
|     } | ||||
| #else | ||||
|     if (p->model.objects.empty()) | ||||
|         return false; | ||||
| #endif // ENABLE_SAVE_COMMANDS_ALWAYS_ENABLED
 | ||||
| 
 | ||||
|     wxString path; | ||||
|     bool export_config = true; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 enricoturri1966
						enricoturri1966