#include "FileProcessor.h" #include "../Logger.h" FileProcessor::FileProcessor() :m_StartIndex(0) , m_IsFinished(false) , m_IsOpen(true) , m_FirstStartTime(0L) , m_BeginPrintTime(0L) , m_AutoPauseTime(0L) , m_IsAutoCtrl(false) ,m_SetParamType(SingleParam) , m_AutoHeatingScanner(false) { } FileProcessor::~FileProcessor() { } void FileProcessor::SetJobbean(JobBean bean) { m_Jobbean = bean; } JobBean* FileProcessor::GetJobbean() { return &m_Jobbean; } void FileProcessor::UpdateJobBeanWhenStart() { if (m_Jobbean.m_IsContinue) { time(&m_Jobbean.m_StartTime); } else { time(&m_Jobbean.m_InsertTime); m_Jobbean.m_StartTime = m_Jobbean.m_InsertTime; m_Jobbean.m_Uid = GetJobUid(); m_Jobbean.m_Name = GetJobTitle(); m_Jobbean.m_PrintedLayerIndex = m_StartIndex; } } bool FileProcessor::JudgePowder(double powderPos,unsigned int layer,unsigned int& level ) { vector layers= GetMetaData()->GetLayersVec(); bool rel = true; double need = 0.0; for (size_t layerindex = layer; layerindex < layers.size(); ++layerindex) { MetaData::Layer* layer = layers[layerindex]; need = need + layer->powder; if (need>powderPos) { level = layerindex; rel = false; break; } } return rel; } float FileProcessor::GetJobPrintHigh() { uint32_t high = 0; vector layers = GetMetaData()->GetLayersVec(); for (size_t layerindex = m_StartIndex; layerindex < layers.size(); ++layerindex) { MetaData::Layer* layer = layers[layerindex]; high += layer->layer_thickness; } float fh = (float)high / 1000.0f; return fh; } void FileProcessor::UpdateJobBeanWhenStop() { m_Jobbean.m_IsContinue = false; m_Jobbean.m_PrintedLayerIndex = 0; m_Jobbean.m_LastPauseTime = 0; m_FirstStartTime = 0; m_Jobbean.m_PrintSecond = 0; } void FileProcessor::UpdateParameterSet(const ReadData& rd,const list& lst) { std::string type = rd.strValue; if (type == "speed") { //速度 string set_type; float laser_speed = 0.f; int partId = 0, parameterSetId = 0; for (auto it = lst.begin(); it != lst.end(); ++it) { if (it->nameKey == "set_type") set_type = it->strValue; if (it->nameKey == "laser_speed") laser_speed = ConverType::TryToF(it->strValue); if (it->nameKey == "partId") partId = ConverType::TryToI(it->strValue); if (it->nameKey == "parameterSetId") parameterSetId = ConverType::TryToI(it->strValue); } if (GetMetaData()->GetPart(partId)) { for (auto start = GetMetaData()->GetPart(partId)->paramSet.begin(); start != GetMetaData()->GetPart(partId)->paramSet.end(); ++start) { if ((*start)->id == parameterSetId) { (*start)->laser_speed = laser_speed; } } } if (m_SetParamType == SameParam) { for (auto it = GetMetaData()->GetParameterMap()->begin(); it != GetMetaData()->GetParameterMap()->end(); it++) { auto tempset = it->second; if (tempset->set_type == set_type) { tempset->laser_speed = laser_speed; } } g_log->TraceInfo(g_LngManager->Log_UpdateAllPartParamLaserSpeed->ShowText(), set_type, laser_speed); } else if (m_SetParamType == AllParam) { for (auto it = GetMetaData()->GetParameterMap()->begin(); it != GetMetaData()->GetParameterMap()->end(); it++) { auto tempset = it->second; tempset->laser_speed = laser_speed; } g_log->TraceInfo(g_LngManager->Log_UpdateAllParamLaserSpeed->ShowText(), set_type, laser_speed); } else { g_log->TraceInfo(g_LngManager->Log_UpdatePartParamLaserSpeed->ShowText(), partId, set_type, laser_speed); } } else if(type == "power") { //功率 string set_type; float laser_power = 0.f; int partId = 0, parameterSetId = 0; for (auto it = lst.begin(); it != lst.end(); ++it) { if (it->nameKey == "set_type") set_type = it->strValue; if (it->nameKey == "laser_power") laser_power = ConverType::TryToF(it->strValue); if (it->nameKey == "partId") partId = ConverType::TryToI(it->strValue); if (it->nameKey == "parameterSetId") parameterSetId = ConverType::TryToI(it->strValue); } if (GetMetaData()->GetPart(partId)) { for (auto start = GetMetaData()->GetPart(partId)->paramSet.begin(); start != GetMetaData()->GetPart(partId)->paramSet.end(); ++start) { if ((*start)->id == parameterSetId) { (*start)->laser_set->laser_real_power = laser_power; (*start)->laser_set->laser_power = laser_power; } } } if (m_SetParamType == SameParam) { for (auto it = GetMetaData()->GetParameterMap()->begin(); it != GetMetaData()->GetParameterMap()->end(); ++it) { auto tempset = it->second; if (tempset->set_type == set_type) { tempset->laser_set->laser_power = laser_power; tempset->laser_set->laser_real_power = laser_power; } } g_log->TraceInfo(g_LngManager->Log_UpdateAllPartParamLaserPower->ShowText(), set_type, laser_power); } else if (m_SetParamType == AllParam) { for (auto it = GetMetaData()->GetParameterMap()->begin(); it != GetMetaData()->GetParameterMap()->end(); ++it) { auto tempset = it->second; tempset->laser_set->laser_power = laser_power; tempset->laser_set->laser_real_power = laser_power; } g_log->TraceInfo(g_LngManager->Log_UpdateAllParamLaserPower->ShowText(), set_type, laser_power); } else { g_log->TraceInfo(g_LngManager->Log_UpdatePartParamLaserPower->ShowText(), partId, set_type, laser_power); } } else if (type == "diameter") { string set_type; float laser_diameter = 0.f; int partId = 0, parameterSetId = 0; for (auto it = lst.begin(); it != lst.end(); ++it) { if (it->nameKey == "set_type") set_type = it->strValue; if (it->nameKey == "laser_diameter") laser_diameter = ConverType::TryToF(it->strValue); if (it->nameKey == "partId") partId = ConverType::TryToI(it->strValue); } if (GetMetaData()->GetPart(partId)) { for (auto start = GetMetaData()->GetPart(partId)->paramSet.begin(); start != GetMetaData()->GetPart(partId)->paramSet.end(); ++start) { if ((*start)->id == parameterSetId) { (*start)->laser_set->laser_diameter = laser_diameter; } } } if (m_SetParamType == SameParam) { for (auto it = GetMetaData()->GetParameterMap()->begin(); it != GetMetaData()->GetParameterMap()->end(); ++it) { auto* tempset = it->second; if (tempset->set_type == set_type) { tempset->laser_set->laser_diameter = laser_diameter; } } g_log->TraceInfo(g_LngManager->Log_UpdateAllPartParamLaserDiameter->ShowText(), set_type, laser_diameter); } else if (m_SetParamType == AllParam) { for (auto it = GetMetaData()->GetParameterMap()->begin(); it != GetMetaData()->GetParameterMap()->end(); ++it) { auto tempset = it->second; tempset->laser_set->laser_diameter = laser_diameter; } g_log->TraceInfo(g_LngManager->Log_UpdateAllParamLaserDiameter->ShowText(), set_type, laser_diameter); } else { g_log->TraceInfo(g_LngManager->Log_UpdatePartParamLaserDiameter->ShowText(), partId, set_type, laser_diameter); } } }