mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-31 12:41:20 -06:00 
			
		
		
		
	 de5f9dfb12
			
		
	
	
		de5f9dfb12
		
	
	
	
	
		
			
			Change-Id: Ic225c34762be7293155befd87b61f9b5056cb937 Signed-off-by: Stone Li <stone.li@bambulab.com>
		
			
				
	
	
		
			262 lines
		
	
	
	
		
			8.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			262 lines
		
	
	
	
		
			8.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #ifndef slic3r_ProjectTask_hpp_
 | |
| #define slic3r_ProjectTask_hpp_
 | |
| 
 | |
| #include <map>
 | |
| #include <vector>
 | |
| #include <string>
 | |
| #include <memory>
 | |
| #include <boost/thread.hpp>
 | |
| #include <boost/filesystem/fstream.hpp>
 | |
| #include <boost/filesystem/path.hpp>
 | |
| #include <boost/filesystem.hpp>
 | |
| 
 | |
| namespace fs = boost::filesystem;
 | |
| 
 | |
| namespace Slic3r {
 | |
| 
 | |
| class BBLProject;
 | |
| class BBLProfile;
 | |
| class BBLTask;
 | |
| 
 | |
| 
 | |
| enum MachineBedType {
 | |
|     //BED_TYPE_AUTO = 0,
 | |
|     BED_TYPE_PC = 0,
 | |
|     BED_TYPE_PEI,
 | |
|     BED_TYPE_PE,
 | |
|     BED_TYPE_COUNT,
 | |
| };
 | |
| 
 | |
| enum MappingResult {
 | |
|     MAPPING_RESULT_DEFAULT = 0,
 | |
|     MAPPING_RESULT_TYPE_MISMATCH = 1,
 | |
|     MAPPING_RESULT_EXCEED = 2
 | |
| };
 | |
| 
 | |
| struct FilamentInfo
 | |
| {
 | |
|     int         id;         // filament id = extruder id, start with 0.
 | |
|     std::string type;
 | |
|     std::string color;
 | |
|     std::string filament_id;
 | |
|     float       used_m;
 | |
|     float       used_g;
 | |
|     int         tray_id;    // start with 0
 | |
|     float       distance;
 | |
|     int         mapping_result = 0;
 | |
| };
 | |
| 
 | |
| class BBLSliceInfo {
 | |
| public:
 | |
|     BBLSliceInfo(BBLProfile* profile = nullptr)
 | |
|     {
 | |
|         profile_ = profile;
 | |
|         prediction = 0;
 | |
|         weight = 0.0f;
 | |
|     }
 | |
| 
 | |
|     BBLSliceInfo(const BBLSliceInfo& obj) {
 | |
|         this->index = obj.index;
 | |
|         this->title = obj.title;
 | |
|         this->thumbnail_dir = obj.thumbnail_dir;
 | |
|         this->thumbnail_name = obj.thumbnail_name;
 | |
|         this->thumbnail_url = obj.thumbnail_url;
 | |
|         this->gcode_name = obj.gcode_name;
 | |
|         this->gcode_dir = obj.gcode_dir;
 | |
|         this->gcode_url = obj.gcode_url;
 | |
|         this->weight = obj.weight;
 | |
|         this->prediction = obj.prediction;
 | |
|         this->profile_ = obj.profile_;
 | |
|         this->filaments_info = obj.filaments_info;
 | |
|     }
 | |
| 
 | |
|     std::vector<FilamentInfo> filaments_info;
 | |
| 
 | |
|     std::string     index;              // plate index, start 1, 2, 3, etc.
 | |
|     std::string     title;
 | |
|     std::string     thumbnail_dir;
 | |
|     std::string     thumbnail_name;
 | |
|     std::string     thumbnail_url;
 | |
|     std::string     gcode_name;
 | |
|     std::string     gcode_url;
 | |
|     std::string     gcode_dir;
 | |
|     std::string     config_url;
 | |
|     float           weight;
 | |
|     int             prediction;
 | |
|     BBLProfile*     profile_;
 | |
| };
 | |
| 
 | |
| enum TaskUserOptions {
 | |
|     OPTIONS_BED_LEVELING   = 0,
 | |
|     OPTIONS_VIBRATION_CALI = 1,
 | |
|     OPTIONS_FLOW_CALI      = 2,
 | |
|     OPTIONS_LAYER_INSPECT  = 3,
 | |
|     OPTIONS_RECORD_TIMELAPSE = 4
 | |
| };
 | |
| 
 | |
| class BBLSubTask {
 | |
| public:
 | |
|     enum SubTaskStatus {
 | |
|         TASK_CREATED = 0,
 | |
|         TASK_READY = 1,
 | |
|         TASK_RUNNING = 2,
 | |
|         TASK_PAUSE = 3,
 | |
|         TASK_FAILED = 4,
 | |
|         TASK_FINISHED = 5,
 | |
|         TASK_UNKNOWN = 6
 | |
|     };
 | |
| 
 | |
|     BBLSubTask(BBLTask* task = nullptr);
 | |
| 
 | |
|     BBLSubTask(const BBLSubTask& obj) {
 | |
|         task_id             = obj.task_id;
 | |
|         parent_id           = obj.parent_id;
 | |
|         task_project_id     = obj.task_project_id;
 | |
|         task_profile_id     = obj.task_profile_id;
 | |
|         task_name           = obj.task_name;
 | |
|         task_partplate_idx  = obj.task_partplate_idx;
 | |
|         task_printer_dev_id = obj.task_printer_dev_id;
 | |
|         task_create_time    = obj.task_create_time;
 | |
|         task_url            = obj.task_url;
 | |
|         task_url_md5        = obj.task_url_md5;
 | |
|         task_gcode_in_3mf   = obj.task_gcode_in_3mf;
 | |
|         task_record_timelapse = obj.task_record_timelapse;
 | |
|         task_bed_type       = obj.task_bed_type;
 | |
|         task_bed_leveling   = obj.task_bed_leveling;
 | |
|         task_flow_cali      = obj.task_flow_cali;
 | |
|         task_vibration_cali = obj.task_vibration_cali;
 | |
|         task_layer_inspect  = obj.task_layer_inspect;
 | |
|     }
 | |
| 
 | |
|     std::string     task_id;            /* plate id */
 | |
|     std::string     task_project_id;    /* project id */
 | |
|     std::string     task_profile_id;    /* profile id*/
 | |
|     std::string     task_name;          /* task name, generally filename as task name */
 | |
|     std::string     task_file;          /* local full file path of 3mf or gcode */
 | |
|     fs::path        task_path;          /* local path of 3mf or gcode */
 | |
|     std::string     task_gcode_in_3mf;  /* gcode in 3mf */
 | |
|     std::string     task_create_time;   /* time created by cloud */
 | |
|     std::string     task_thumbnail_url; /* url of task thumbnail */
 | |
|     /* user options */
 | |
|     std::string     task_bed_type;      /* bed_type of task, enum "auto" "pe", "pc", "pei" */
 | |
|     bool            task_bed_leveling;  /* bed leveling of task */
 | |
|     bool            task_flow_cali;     /* flow calibration of task */
 | |
|     bool            task_vibration_cali; /* vibration calibration of task */
 | |
|     bool            task_layer_inspect {true}; /* first layer inspection of task */
 | |
|     bool            task_record_timelapse; /* record timelapse of task */
 | |
| 
 | |
|     // task of plate info
 | |
|     std::string     task_weight;        /* weight create by slicer */
 | |
|     float           task_weightF;       /* weight in task */
 | |
|     BBLSliceInfo    slice_info;         /* slice info of subtask */
 | |
|     std::string     task_partplate_idx; /* partplate_idx, start at 1, 2, etc. */
 | |
| 
 | |
|     SubTaskStatus   task_status;
 | |
|     std::string     task_printer_dev_id;/* dev_id of machine */
 | |
|     int             task_progress;      /* task running progress, update by machine */
 | |
|     std::string     printing_status;    /* task status, update by machine */
 | |
|     std::string     task_url;           /* post task to this url */
 | |
|     std::string     task_url_md5;       /* md5 of task file */
 | |
|     BBLTask*        parent_task_;
 | |
|     std::string     parent_id;
 | |
| 
 | |
|     int parse_content_json(std::string json_str);
 | |
|     static BBLSubTask::SubTaskStatus parse_status(std::string status);
 | |
|     static BBLSubTask::SubTaskStatus parse_user_service_task_status(int status);
 | |
| };
 | |
| 
 | |
| class BBLTask {
 | |
| public:
 | |
|     enum TaskStatus {
 | |
|         TASK_ACTIVE = 0,
 | |
|         TASK_INACTIVE = 1,
 | |
|     };
 | |
| 
 | |
|     BBLTask(BBLProfile* profile = nullptr);
 | |
| 
 | |
|     /* properties */
 | |
|     std::string                 task_id;
 | |
|     std::string                 task_name;
 | |
|     std::string                 task_create_time;
 | |
|     TaskStatus                  task_status;
 | |
|     std::wstring                task_file;          /* local task file */
 | |
|     std::string                 task_url;           /* cloud task url */
 | |
|     std::string                 task_url_md5;       /* md5 of cloud task url file */
 | |
|     std::wstring                task_dst_url;       /* put task to dest url in machine */
 | |
|     BBLProfile*                 profile_;
 | |
|     std::string                 task_project_id;
 | |
|     std::string                 task_profile_id;
 | |
|     std::vector<BBLSubTask*>    subtasks;
 | |
|     std::map<std::string, BBLSliceInfo*> slice_info; /* slice info of subtasks, key: plate idx, 1, 2, 3, etc... */
 | |
| 
 | |
|     std::string task_status_str() {
 | |
|         if (task_status == TaskStatus::TASK_ACTIVE) {
 | |
|             return "active";
 | |
|         }
 | |
|         else if (task_status == TaskStatus::TASK_INACTIVE) {
 | |
|             return "inactive";
 | |
|         }
 | |
|         else {
 | |
|             return "inactive";
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     int parse_content_json(std::string json);
 | |
| };
 | |
| 
 | |
| class BBLProfile {
 | |
| public:
 | |
|     BBLProfile(BBLProject* project = nullptr);
 | |
|     ~BBLProfile() {}
 | |
| 
 | |
|     std::vector<BBLTask*>   tasks;
 | |
|     std::string             profile_id;
 | |
|     std::string             profile_name;
 | |
|     std::string             profile_content;
 | |
|     std::string             project_id;         /* parent project_id */
 | |
|     std::string             model_id;           /* parent model_id */
 | |
|     std::string             upload_url;         /* url for upload 3mf */
 | |
|     std::string             upload_ticket;      /* ticket for notification */
 | |
|     std::string             url;                /* 3mf url */
 | |
|     std::string             md5;                /* 3mf md5 */
 | |
|     std::string             filename;           /* 3mf filename */
 | |
|     BBLProject*             project_;
 | |
|     std::map<std::string, BBLSliceInfo*>    slice_info; /* key: plate_idx, start at 1, 2, 3, etc. */
 | |
|     BBLSliceInfo* get_slice_info(std::string plate_idx);
 | |
| };
 | |
| 
 | |
| class BBLProject {
 | |
| public:
 | |
|     BBLProject() {
 | |
|         /* give a default project name */
 | |
|         project_name = "Untitled";
 | |
|     }
 | |
|     BBLProject(std::string name) {
 | |
|         project_name = name;
 | |
|     }
 | |
| 
 | |
|     std::string     project_id;
 | |
|     std::string     project_model_id;       /* model id */
 | |
|     std::string     project_design_id;      /* design_id */
 | |
|     std::string     project_status;
 | |
|     std::string     project_create_time;    /* created by cloud */
 | |
|     std::string     project_url;            /* url storage on cloud */
 | |
|     std::string     project_url_md5;        /* md5 of project url file */
 | |
|     std::string     project_name;
 | |
|     std::string     project_3mf_file;
 | |
|     fs::path        project_path;
 | |
|     std::string     project_content;
 | |
|     std::string     project_country_code;
 | |
| 
 | |
| 
 | |
|     std::vector<BBLProfile*>   profiles;
 | |
| 
 | |
|     /* deprecated apis */
 | |
|     void set_name(std::string name) { project_name = name; }
 | |
| 
 | |
|     void reset();
 | |
| };
 | |
| 
 | |
| } // namespace Slic3r
 | |
| 
 | |
| #endif //  slic3r_ProjectTask_hpp_
 |