mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-31 04:31:15 -06:00 
			
		
		
		
	ExtruderSequenceDialog :
Fixed layouts after the second opening of the dialog. (Removing any extruder from the sequence does not cause an incorrect layout) Validation of entered values added (0 is not a valid value)
This commit is contained in:
		
						commit
						bc68b8eaf2
					
				
					 85 changed files with 5505 additions and 554 deletions
				
			
		|  | @ -3,6 +3,9 @@ | |||
| #include "../Utils.hpp" | ||||
| #include "../GCode.hpp" | ||||
| #include "../Geometry.hpp" | ||||
| #if ENABLE_THUMBNAIL_GENERATOR | ||||
| #include "../GCode/ThumbnailData.hpp" | ||||
| #endif // ENABLE_THUMBNAIL_GENERATOR
 | ||||
| 
 | ||||
| #include "../I18N.hpp" | ||||
| 
 | ||||
|  | @ -40,6 +43,9 @@ const std::string MODEL_EXTENSION = ".model"; | |||
| const std::string MODEL_FILE = "3D/3dmodel.model"; // << this is the only format of the string which works with CURA
 | ||||
| const std::string CONTENT_TYPES_FILE = "[Content_Types].xml"; | ||||
| const std::string RELATIONSHIPS_FILE = "_rels/.rels"; | ||||
| #if ENABLE_THUMBNAIL_GENERATOR | ||||
| const std::string THUMBNAIL_FILE = "Metadata/thumbnail.png"; | ||||
| #endif // ENABLE_THUMBNAIL_GENERATOR
 | ||||
| const std::string PRINT_CONFIG_FILE = "Metadata/Slic3r_PE.config"; | ||||
| const std::string MODEL_CONFIG_FILE = "Metadata/Slic3r_PE_model.config"; | ||||
| const std::string LAYER_HEIGHTS_PROFILE_FILE = "Metadata/Slic3r_PE_layer_heights_profile.txt"; | ||||
|  | @ -1851,11 +1857,22 @@ namespace Slic3r { | |||
|         typedef std::map<int, ObjectData> IdToObjectDataMap; | ||||
| 
 | ||||
|     public: | ||||
| #if ENABLE_THUMBNAIL_GENERATOR | ||||
|         bool save_model_to_file(const std::string& filename, Model& model, const DynamicPrintConfig* config, const ThumbnailData* thumbnail_data = nullptr); | ||||
| #else | ||||
|         bool save_model_to_file(const std::string& filename, Model& model, const DynamicPrintConfig* config); | ||||
| #endif // ENABLE_THUMBNAIL_GENERATOR
 | ||||
| 
 | ||||
|     private: | ||||
| #if ENABLE_THUMBNAIL_GENERATOR | ||||
|         bool _save_model_to_file(const std::string& filename, Model& model, const DynamicPrintConfig* config, const ThumbnailData* thumbnail_data); | ||||
| #else | ||||
|         bool _save_model_to_file(const std::string& filename, Model& model, const DynamicPrintConfig* config); | ||||
| #endif // ENABLE_THUMBNAIL_GENERATOR
 | ||||
|         bool _add_content_types_file_to_archive(mz_zip_archive& archive); | ||||
| #if ENABLE_THUMBNAIL_GENERATOR | ||||
|         bool _add_thumbnail_file_to_archive(mz_zip_archive& archive, const ThumbnailData& thumbnail_data); | ||||
| #endif // ENABLE_THUMBNAIL_GENERATOR
 | ||||
|         bool _add_relationships_file_to_archive(mz_zip_archive& archive); | ||||
|         bool _add_model_file_to_archive(mz_zip_archive& archive, const Model& model, IdToObjectDataMap &objects_data); | ||||
|         bool _add_object_to_model_stream(std::stringstream& stream, unsigned int& object_id, ModelObject& object, BuildItemsList& build_items, VolumeToOffsetsMap& volumes_offsets); | ||||
|  | @ -1869,13 +1886,25 @@ namespace Slic3r { | |||
|         bool _add_custom_gcode_per_height_file_to_archive(mz_zip_archive& archive, Model& model); | ||||
|     }; | ||||
| 
 | ||||
| #if ENABLE_THUMBNAIL_GENERATOR | ||||
|     bool _3MF_Exporter::save_model_to_file(const std::string& filename, Model& model, const DynamicPrintConfig* config, const ThumbnailData* thumbnail_data) | ||||
|     { | ||||
|         clear_errors(); | ||||
|         return _save_model_to_file(filename, model, config, thumbnail_data); | ||||
|     } | ||||
| #else | ||||
|     bool _3MF_Exporter::save_model_to_file(const std::string& filename, Model& model, const DynamicPrintConfig* config) | ||||
|     { | ||||
|         clear_errors(); | ||||
|         return _save_model_to_file(filename, model, config); | ||||
|     } | ||||
| #endif // ENABLE_THUMBNAIL_GENERATOR
 | ||||
| 
 | ||||
| #if ENABLE_THUMBNAIL_GENERATOR | ||||
|     bool _3MF_Exporter::_save_model_to_file(const std::string& filename, Model& model, const DynamicPrintConfig* config, const ThumbnailData* thumbnail_data) | ||||
| #else | ||||
|     bool _3MF_Exporter::_save_model_to_file(const std::string& filename, Model& model, const DynamicPrintConfig* config) | ||||
| #endif // ENABLE_THUMBNAIL_GENERATOR
 | ||||
|     { | ||||
|         mz_zip_archive archive; | ||||
|         mz_zip_zero_struct(&archive); | ||||
|  | @ -1894,6 +1923,19 @@ namespace Slic3r { | |||
|             return false; | ||||
|         } | ||||
| 
 | ||||
| #if ENABLE_THUMBNAIL_GENERATOR | ||||
|         if ((thumbnail_data != nullptr) && thumbnail_data->is_valid()) | ||||
|         { | ||||
|             // Adds the file Metadata/thumbnail.png.
 | ||||
|             if (!_add_thumbnail_file_to_archive(archive, *thumbnail_data)) | ||||
|             { | ||||
|                 close_zip_writer(&archive); | ||||
|                 boost::filesystem::remove(filename); | ||||
|                 return false; | ||||
|             } | ||||
|         } | ||||
| #endif // ENABLE_THUMBNAIL_GENERATOR
 | ||||
| 
 | ||||
|         // Adds relationships file ("_rels/.rels"). 
 | ||||
|         // The content of this file is the same for each PrusaSlicer 3mf.
 | ||||
|         // The relationshis file contains a reference to the geometry file "3D/3dmodel.model", the name was chosen to be compatible with CURA.
 | ||||
|  | @ -1996,6 +2038,9 @@ namespace Slic3r { | |||
|         stream << "<Types xmlns=\"http://schemas.openxmlformats.org/package/2006/content-types\">\n"; | ||||
|         stream << " <Default Extension=\"rels\" ContentType=\"application/vnd.openxmlformats-package.relationships+xml\" />\n"; | ||||
|         stream << " <Default Extension=\"model\" ContentType=\"application/vnd.ms-package.3dmanufacturing-3dmodel+xml\" />\n"; | ||||
| #if ENABLE_THUMBNAIL_GENERATOR | ||||
|         stream << " <Default Extension=\"png\" ContentType=\"image/png\" />\n"; | ||||
| #endif // ENABLE_THUMBNAIL_GENERATOR
 | ||||
|         stream << "</Types>"; | ||||
| 
 | ||||
|         std::string out = stream.str(); | ||||
|  | @ -2009,12 +2054,35 @@ namespace Slic3r { | |||
|         return true; | ||||
|     } | ||||
| 
 | ||||
| #if ENABLE_THUMBNAIL_GENERATOR | ||||
|     bool _3MF_Exporter::_add_thumbnail_file_to_archive(mz_zip_archive& archive, const ThumbnailData& thumbnail_data) | ||||
|     { | ||||
|         bool res = false; | ||||
| 
 | ||||
|         size_t png_size = 0; | ||||
|         void* png_data = tdefl_write_image_to_png_file_in_memory_ex((const void*)thumbnail_data.pixels.data(), thumbnail_data.width, thumbnail_data.height, 4, &png_size, MZ_DEFAULT_LEVEL, 1); | ||||
|         if (png_data != nullptr) | ||||
|         { | ||||
|             res = mz_zip_writer_add_mem(&archive, THUMBNAIL_FILE.c_str(), (const void*)png_data, png_size, MZ_DEFAULT_COMPRESSION); | ||||
|             mz_free(png_data); | ||||
|         } | ||||
| 
 | ||||
|         if (!res) | ||||
|             add_error("Unable to add thumbnail file to archive"); | ||||
| 
 | ||||
|         return res; | ||||
|     } | ||||
| #endif // ENABLE_THUMBNAIL_GENERATOR
 | ||||
| 
 | ||||
|     bool _3MF_Exporter::_add_relationships_file_to_archive(mz_zip_archive& archive) | ||||
|     { | ||||
|         std::stringstream stream; | ||||
|         stream << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"; | ||||
|         stream << "<Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">\n"; | ||||
|         stream << " <Relationship Target=\"/" << MODEL_FILE << "\" Id=\"rel-1\" Type=\"http://schemas.microsoft.com/3dmanufacturing/2013/01/3dmodel\" />\n"; | ||||
| #if ENABLE_THUMBNAIL_GENERATOR | ||||
|         stream << " <Relationship Target=\"/" << THUMBNAIL_FILE << "\" Id=\"rel-2\" Type=\"http://schemas.openxmlformats.org/package/2006/relationships/metadata/thumbnail\" />\n"; | ||||
| #endif // ENABLE_THUMBNAIL_GENERATOR
 | ||||
|         stream << "</Relationships>"; | ||||
| 
 | ||||
|         std::string out = stream.str(); | ||||
|  | @ -2550,13 +2618,21 @@ bool load_3mf(const char* path, DynamicPrintConfig* config, Model* model, bool c | |||
|         return res; | ||||
|     } | ||||
| 
 | ||||
| #if ENABLE_THUMBNAIL_GENERATOR | ||||
|     bool store_3mf(const char* path, Model* model, const DynamicPrintConfig* config, const ThumbnailData* thumbnail_data) | ||||
| #else | ||||
|     bool store_3mf(const char* path, Model* model, const DynamicPrintConfig* config) | ||||
| #endif // ENABLE_THUMBNAIL_GENERATOR
 | ||||
|     { | ||||
|         if ((path == nullptr) || (model == nullptr)) | ||||
|             return false; | ||||
| 
 | ||||
|         _3MF_Exporter exporter; | ||||
| #if ENABLE_THUMBNAIL_GENERATOR | ||||
|         bool res = exporter.save_model_to_file(path, *model, config, thumbnail_data); | ||||
| #else | ||||
|         bool res = exporter.save_model_to_file(path, *model, config); | ||||
| #endif // ENABLE_THUMBNAIL_GENERATOR
 | ||||
| 
 | ||||
|         if (!res) | ||||
|             exporter.log_errors(); | ||||
|  |  | |||
|  | @ -22,13 +22,20 @@ namespace Slic3r { | |||
| 
 | ||||
|     class Model; | ||||
|     class DynamicPrintConfig; | ||||
| #if ENABLE_THUMBNAIL_GENERATOR | ||||
|     struct ThumbnailData; | ||||
| #endif // ENABLE_THUMBNAIL_GENERATOR
 | ||||
| 
 | ||||
|     // Load the content of a 3mf file into the given model and preset bundle.
 | ||||
|     extern bool load_3mf(const char* path, DynamicPrintConfig* config, Model* model, bool check_version); | ||||
| 
 | ||||
|     // Save the given model and the config data contained in the given Print into a 3mf file.
 | ||||
|     // The model could be modified during the export process if meshes are not repaired or have no shared vertices
 | ||||
| #if ENABLE_THUMBNAIL_GENERATOR | ||||
|     extern bool store_3mf(const char* path, Model* model, const DynamicPrintConfig* config, const ThumbnailData* thumbnail_data = nullptr); | ||||
| #else | ||||
|     extern bool store_3mf(const char* path, Model* model, const DynamicPrintConfig* config); | ||||
| #endif // ENABLE_THUMBNAIL_GENERATOR
 | ||||
| 
 | ||||
| }; // namespace Slic3r
 | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 YuSanka
						YuSanka