diff --git a/AlgorithmModule/include/AICommonDefine.h b/AlgorithmModule/include/AICommonDefine.h index 58e3caa..364510c 100644 --- a/AlgorithmModule/include/AICommonDefine.h +++ b/AlgorithmModule/include/AICommonDefine.h @@ -9,35 +9,21 @@ #ifndef AICommonDefine_H_ #define AICommonDefine_H_ -// AI缺陷分类缺陷的种类 +// AI缺陷分类缺陷的种类(只含主检测+分类的缺陷;支架偏移/支架缺失/把手缺失为传统算法检出,铜箔标签(TBBQ)由标签检测上报,均不走AI分类) enum AI_CLass_QX_NAME_ { - AI_CLass_QX_NAME_aotudian, // 凹凸点 - AI_CLass_QX_NAME_other, // 其他 - AI_CLass_QX_NAME_line, // 线状 - AI_CLass_QX_NAME_zangwu, // 脏污 - AI_CLass_QX_NAME_dianzhuang, // 点状 - AI_CLass_QX_NAME_posun, // 破损 - AI_CLass_QX_NAME_xianwei, // 纤维 - AI_CLass_QX_NAME_shuizi, // 水渍 - AI_CLass_QX_NAME_danban, // 淡斑 - AI_CLass_QX_NAME_fuchen, // 浮尘 + AI_CLass_QX_NAME_CGMark, // 把手标记 + AI_CLass_QX_NAME_BQBMark, // 补强板标记 + AI_CLass_QX_NAME_TBMark, // 铜箔标记 AI_CLass_QX_NAME_count, }; -// 缺陷项对应在参数中的名称 +// 缺陷项对应在参数中的名称(顺序需与分类模型输出的label顺序一致) static const std::string AI_CLass_QX_NAME_Names[] = { - "aotudian", - "qx", - "line", - "zangwu", - "dianzhuang", - "posun", - "xianwei", - "shuizi", - "danban", - "fuchen", + "CGMark", + "BQBMark", + "TBMark", }; #endif \ No newline at end of file diff --git a/AlgorithmModule/include/ImgCheckConfig.h b/AlgorithmModule/include/ImgCheckConfig.h index d0ffaf6..0fe77c6 100644 --- a/AlgorithmModule/include/ImgCheckConfig.h +++ b/AlgorithmModule/include/ImgCheckConfig.h @@ -44,23 +44,17 @@ struct VERSION_INFO int ResultVersion = RESULT_VERSION; int InterfaceVersion = 0; }; -// 检测错误代码 +// 检测错误代码(与缺陷列表一致;支架偏移/支架缺失/把手缺失为传统算法检出,无AI分类) enum ERROR_TYPE_ { - ERROR_TYPE_OK, // 1 疑是 - ERROR_TYPE_aotudian, // 2 凹凸点 - ERROR_TYPE_other, // 3 其他 - ERROR_TYPE_line, // 4 线状 - ERROR_TYPE_zangwu, // 5 脏污 - ERROR_TYPE_edge, // 6 边缘 - ERROR_TYPE_ymhs, // 7 研磨划伤 - ERROR_TYPE_dianzhuang, // 8 点状 - ERROR_TYPE_posun, // 9 破损 - ERROR_TYPE_xianwei, // 10 纤维 - ERROR_TYPE_shuizi, // 11 水渍 - ERROR_TYPE_danban, // 12 淡斑 - ERROR_TYPE_fuchen, // 13 浮尘 - ERROR_TYPE_tag, // 14 标签 + ERROR_TYPE_OK, // 0 好品 + ERROR_TYPE_ZJ_PianYi, // 1 支架偏移 + ERROR_TYPE_ZJ_QueShi, // 2 支架缺失 + ERROR_TYPE_CGMo_QueShi, // 3 把手缺失 + ERROR_TYPE_CGMark, // 4 把手标记 + ERROR_TYPE_BQBMark, // 5 补强板标记 + ERROR_TYPE_TBBQ, // 6 铜箔标签 + ERROR_TYPE_TBMark, // 7 铜箔标记 ERROR_TYPE_COUNT, }; extern std::vector QX_Result_Names; diff --git a/AlgorithmModule/src/ImageResultJudge.cpp b/AlgorithmModule/src/ImageResultJudge.cpp index 85e701f..6c01787 100644 --- a/AlgorithmModule/src/ImageResultJudge.cpp +++ b/AlgorithmModule/src/ImageResultJudge.cpp @@ -445,8 +445,8 @@ int ImageResultJudge::ResultJudge(std::shared_ptr pImageResult) } } - // 标签缺陷:检测到标签直接判 NG - if (config_qx_type == CONFIG_QX_NAME_cell_tag) + // 标签缺陷(TBBQ):检测到标签直接判 NG + if (config_qx_type == CONFIG_QX_NAME_cell_TBBQ) { bNG_Status = true; Judge_Status = true; @@ -1132,75 +1132,13 @@ int ImageResultJudge::addInDrawBlob(int errortype, int blobidx, QX_ERROR_INFO_ * int ImageResultJudge::ConfigTypeToResultType(int nconfigType) { - bool bdesc = false; - int resultError_type = ERROR_TYPE_OK; - if(nconfigType < CONFIG_QX_NAME_Names.size()) + // 缺陷类型(CONFIG_QX_NAME_)与结果列表(QX_Result_Names/QX_Result_Code)按配置顺序一一对应,直接按下标映射 + if (nconfigType >= 0 && nconfigType < CONFIG_QX_NAME_count && + nconfigType < (int)QX_Result_Names.size()) { - string cqn = CONFIG_QX_NAME_Names[nconfigType]; - for(int i = 0; i < m_FlawCodeList.size(); i++) - { - for(int j = 0; j < m_FlawCodeList.at(i).config_flaw_name.size(); j++) - { - if(cqn == m_FlawCodeList.at(i).config_flaw_name[j]) - { - resultError_type = i; - bdesc = true; - break; - } - } - } - } - // 如果描述没有配置,用默认值 - if(!bdesc) - { - switch (nconfigType) - { - case CONFIG_QX_NAME_cell_aotudian: - resultError_type = ERROR_TYPE_aotudian; - break; - case CONFIG_QX_NAME_cell_other: - resultError_type = ERROR_TYPE_other; - break; - case CONFIG_QX_NAME_cell_line: - resultError_type = ERROR_TYPE_line; - break; - case CONFIG_QX_NAME_cell_zangwu: - resultError_type = ERROR_TYPE_zangwu; - break; - case CONFIG_QX_NAME_cell_edge: - resultError_type = ERROR_TYPE_edge; - break; - case CONFIG_QX_NAME_cell_ymhs: - resultError_type = ERROR_TYPE_ymhs; - break; - case CONFIG_QX_NAME_cell_dianzhuang: - resultError_type = ERROR_TYPE_dianzhuang; - break; - case CONFIG_QX_NAME_cell_posun: - resultError_type = ERROR_TYPE_posun; - break; - case CONFIG_QX_NAME_cell_xianwei: - resultError_type = ERROR_TYPE_xianwei; - break; - case CONFIG_QX_NAME_cell_shuizi: - resultError_type = ERROR_TYPE_shuizi; - break; - case CONFIG_QX_NAME_cell_danban: - resultError_type = ERROR_TYPE_danban; - break; - case CONFIG_QX_NAME_cell_fuchen: - resultError_type = ERROR_TYPE_fuchen; - break; - case CONFIG_QX_NAME_cell_tag: - resultError_type = ERROR_TYPE_tag; - break; - - default: - break; - } + return nconfigType; } - - return resultError_type; + return ERROR_TYPE_OK; } int ImageResultJudge::sendTask(std::shared_ptr task) diff --git a/AlgorithmModule/src/ImgCheckAnalysisy.cpp b/AlgorithmModule/src/ImgCheckAnalysisy.cpp index e2195b1..336fc7f 100644 --- a/AlgorithmModule/src/ImgCheckAnalysisy.cpp +++ b/AlgorithmModule/src/ImgCheckAnalysisy.cpp @@ -1042,7 +1042,7 @@ int ImgCheckAnalysisy::CheckRun() temerror.flen = (w > h ? w : h) * m_fImgage_Scale_X; temerror.fbreadth = (w > h ? h : w) * m_fImgage_Scale_Y; - temerror.nconfig_qx_type = CONFIG_QX_NAME_support_offset; + temerror.nconfig_qx_type = CONFIG_QX_NAME_cell_ZJ_PianYi; temerror.qx_name = CONFIG_QX_NAME_Names[temerror.nconfig_qx_type]; temerror.result = QX_RESULT_TYPE_NG; temerror.result_name = QX_RESULT_TYPE_Names[QX_RESULT_TYPE_NG]; @@ -1101,8 +1101,8 @@ int ImgCheckAnalysisy::CheckRun() float h = roi.height; temerror.flen = (w > h ? w : h) * m_fImgage_Scale_X; temerror.fbreadth = (w > h ? h : w) * m_fImgage_Scale_Y; - temerror.nconfig_qx_type = CONFIG_QX_NAME_handle_loss; - temerror.qx_name = CONFIG_QX_NAME_Names[CONFIG_QX_NAME_handle_loss]; + temerror.nconfig_qx_type = CONFIG_QX_NAME_cell_CGMo_QueShi; + temerror.qx_name = CONFIG_QX_NAME_Names[CONFIG_QX_NAME_cell_CGMo_QueShi]; temerror.result = QX_RESULT_TYPE_NG; temerror.result_name = QX_RESULT_TYPE_Names[QX_RESULT_TYPE_NG]; @@ -1158,8 +1158,8 @@ int ImgCheckAnalysisy::CheckRun() float th = tagRoi.size.height; temerror.flen = (tw > th ? tw : th) * m_fImgage_Scale_X; temerror.fbreadth = (tw > th ? th : tw) * m_fImgage_Scale_Y; - temerror.nconfig_qx_type = CONFIG_QX_NAME_cell_tag; - temerror.qx_name = CONFIG_QX_NAME_Names[CONFIG_QX_NAME_cell_tag]; + temerror.nconfig_qx_type = CONFIG_QX_NAME_cell_TBBQ; + temerror.qx_name = CONFIG_QX_NAME_Names[CONFIG_QX_NAME_cell_TBBQ]; temerror.result = QX_RESULT_TYPE_NG; temerror.result_name = QX_RESULT_TYPE_Names[QX_RESULT_TYPE_NG]; @@ -2091,7 +2091,8 @@ int ImgCheckAnalysisy::AI_QX_Class_Thread() ERROR_DOTS_BLOB_DATA *pblob = &blobs.blobTab[submitted]; if (pblob->ErrType == ERR_TYPE_2) { - pblob->AIclasstype = CONFIG_QX_NAME_cell_ymhs; + // ERR_TYPE_2不参与分类,按默认AI类别(把手标记)处理 + pblob->AIclasstype = CONFIG_QX_NAME_cell_CGMark; submitted++; completed++; continue; @@ -2135,50 +2136,23 @@ int ImgCheckAnalysisy::AI_QX_Class_Thread() int temClass = result->cls_label; int cls_num = 0; + // 分类模型label顺序:0-把手标记(CGMark) 1-补强板标记(BQBMark) 2-铜箔标记(TBMark) switch (temClass) { case 0: - cls_num = AI_CLass_QX_NAME_aotudian; + cls_num = AI_CLass_QX_NAME_CGMark; break; case 1: - cls_num = AI_CLass_QX_NAME_other; + cls_num = AI_CLass_QX_NAME_BQBMark; break; case 2: - cls_num = AI_CLass_QX_NAME_line; - break; - - case 3: - cls_num = AI_CLass_QX_NAME_zangwu; - break; - - case 4: - cls_num = AI_CLass_QX_NAME_dianzhuang; - break; - - case 5: - cls_num = AI_CLass_QX_NAME_posun; - break; - - case 6: - cls_num = AI_CLass_QX_NAME_xianwei; - break; - - case 7: - cls_num = AI_CLass_QX_NAME_shuizi; - break; - - case 8: - cls_num = AI_CLass_QX_NAME_danban; - break; - - case 9: - cls_num = AI_CLass_QX_NAME_fuchen; + cls_num = AI_CLass_QX_NAME_TBMark; break; default: - cls_num = AI_CLass_QX_NAME_zangwu; + cls_num = AI_CLass_QX_NAME_CGMark; break; } @@ -2419,38 +2393,18 @@ int ImgCheckAnalysisy::DrawResult_Step_1() int ImgCheckAnalysisy::AIClassTypeToConfigType(int nAIQXType) { - int resultError_type = CONFIG_QX_NAME_cell_aotudian; + // 只有主检测+分类的缺陷在映射表中;支架偏移/支架缺失/把手缺失(传统检出)、铜箔标签(标签检测)不走AI分类 + int resultError_type = CONFIG_QX_NAME_cell_CGMark; switch (nAIQXType) { - case AI_CLass_QX_NAME_aotudian: - resultError_type = CONFIG_QX_NAME_cell_aotudian; - break; - case AI_CLass_QX_NAME_other: - resultError_type = CONFIG_QX_NAME_cell_other; - break; - case AI_CLass_QX_NAME_line: - resultError_type = CONFIG_QX_NAME_cell_line; - break; - case AI_CLass_QX_NAME_zangwu: - resultError_type = CONFIG_QX_NAME_cell_zangwu; - break; - case AI_CLass_QX_NAME_dianzhuang: - resultError_type = CONFIG_QX_NAME_cell_dianzhuang; - break; - case AI_CLass_QX_NAME_posun: - resultError_type = CONFIG_QX_NAME_cell_posun; - break; - case AI_CLass_QX_NAME_xianwei: - resultError_type = CONFIG_QX_NAME_cell_xianwei; - break; - case AI_CLass_QX_NAME_shuizi: - resultError_type = CONFIG_QX_NAME_cell_shuizi; + case AI_CLass_QX_NAME_CGMark: + resultError_type = CONFIG_QX_NAME_cell_CGMark; break; - case AI_CLass_QX_NAME_danban: - resultError_type = CONFIG_QX_NAME_cell_danban; + case AI_CLass_QX_NAME_BQBMark: + resultError_type = CONFIG_QX_NAME_cell_BQBMark; break; - case AI_CLass_QX_NAME_fuchen: - resultError_type = CONFIG_QX_NAME_cell_fuchen; + case AI_CLass_QX_NAME_TBMark: + resultError_type = CONFIG_QX_NAME_cell_TBMark; break; default: break; diff --git a/ConfigModule/include/CheckConfigDefine.h b/ConfigModule/include/CheckConfigDefine.h index 5ad2620..812be71 100644 --- a/ConfigModule/include/CheckConfigDefine.h +++ b/ConfigModule/include/CheckConfigDefine.h @@ -39,43 +39,25 @@ static const std::string WHITE_BLCAK_Names[] = // 检测缺陷的种类 enum CONFIG_QX_NAME_ { - CONFIG_QX_NAME_cell_aotudian, // 分类 凹凸点 - CONFIG_QX_NAME_cell_other, // 分类 其他 - CONFIG_QX_NAME_cell_line, // 分类 线状 - CONFIG_QX_NAME_cell_zangwu, // 分类 脏污 - CONFIG_QX_NAME_cell_edge, // 分类 边缘 - CONFIG_QX_NAME_cell_ymhs, // 分类 异物 - CONFIG_QX_NAME_cell_dianzhuang, // 分类 点状 - CONFIG_QX_NAME_cell_posun, // 分类 破损 - CONFIG_QX_NAME_cell_xianwei, // 分类 纤维 - CONFIG_QX_NAME_cell_shuizi, // 分类 水渍 - CONFIG_QX_NAME_cell_danban, // 分类 淡斑 - CONFIG_QX_NAME_cell_fuchen, // 分类 浮尘 - CONFIG_QX_NAME_cell_tag, // 分类 标签 - CONFIG_QX_NAME_support_offset, // 支架偏移 - CONFIG_QX_NAME_support_loss, // 支架缺失 - CONFIG_QX_NAME_handle_loss, // 把手缺失 + CONFIG_QX_NAME_cell_ZJ_PianYi, // 分类 支架偏移 + CONFIG_QX_NAME_cell_ZJ_QueShi, // 分类 支架缺失 + CONFIG_QX_NAME_cell_CGMo_QueShi, // 分类 把手缺失 + CONFIG_QX_NAME_cell_CGMark, // 分类 把手标记 + CONFIG_QX_NAME_cell_BQBMark, // 分类 补强板标记 + CONFIG_QX_NAME_cell_TBBQ, // 分类 铜箔标签 + CONFIG_QX_NAME_cell_TBMark, // 分类 铜箔标记 CONFIG_QX_NAME_count, }; // 缺陷项对应在参数中的名称 static std::vector CONFIG_QX_NAME_Names = { - "aotudian", - "other", - "line", - "zangwu", - "edge", - "ymhs", - "dianzhuang", - "posun", - "xianwei", - "shuizi", - "danban", - "fuchen", - "tag", - "support_offset", - "support_loss", - "handle_loss", + "ZJ_PianYi", + "ZJ_QueShi", + "CGMo_QueShi", + "CGMark", + "BQBMark", + "TBBQ", + "TBMark", }; // 分析类型 diff --git a/ConfigModule/src/ConfigManager.cpp b/ConfigModule/src/ConfigManager.cpp index 083efbe..6393170 100644 --- a/ConfigModule/src/ConfigManager.cpp +++ b/ConfigModule/src/ConfigManager.cpp @@ -24,37 +24,23 @@ std::vector m_FlawCodeList; std::vector QX_Result_Names = { - "OK", - "aotudian", - "other", - "line", - "zangwu", - "edge", - "ymhs", - "dianzhuang", - "posun", - "xianwei", - "shuizi", - "danban", - "fuchen", - "tag", + "ZJ_PianYi", + "ZJ_QueShi", + "CGMo_QueShi", + "CGMark", + "BQBMark", + "TBBQ", + "TBMark", }; std::vector QX_Result_Code = { - "P0000", - "MA507", - "MA508", - "MA506", - "MA504", - "MA503", - "MA502", - "MA505", - "MA501", - "P0001", - "P0002", - "P0003", - "P0004", - "P0005", + "M701201", + "M200214", + "M200215", + "M200216", + "M200217", + "M200218", + "M200219", }; int ReadFlawCodeConfig(std::string json_path) diff --git a/ConfigModule/src/JsonConfig.cpp b/ConfigModule/src/JsonConfig.cpp index fec6102..d068d90 100644 --- a/ConfigModule/src/JsonConfig.cpp +++ b/ConfigModule/src/JsonConfig.cpp @@ -1010,125 +1010,20 @@ int BaseFuntonConfigJson::GetFunction(Json::Value value) _config.bigNG.bOpen = value_f["isOpen"].asBool(); if (_config.bigNG.bOpen) { - if (value_f["form"]["aotudian"]["open"]) + // 大缺陷参数按缺陷列表循环解析(表单键名与CONFIG_QX_NAME_Names一致) + for (int i = 0; i < CONFIG_QX_NAME_count; i++) { - _config.bigNG.qx[CONFIG_QX_NAME_cell_aotudian].bOpen = value_f["form"]["aotudian"]["open"].asBool(); - } - if (value_f["form"]["aotudian"]["Area"]) - { - _config.bigNG.qx[CONFIG_QX_NAME_cell_aotudian].fArea = value_f["form"]["aotudian"]["Area"].asFloat(); - } - _config.bigNG.qx[CONFIG_QX_NAME_cell_aotudian].strname = "aotudian"; - - if (value_f["form"]["other"]["open"]) - { - _config.bigNG.qx[CONFIG_QX_NAME_cell_other].bOpen = value_f["form"]["other"]["open"].asBool(); - } - if (value_f["form"]["other"]["Area"]) - { - _config.bigNG.qx[CONFIG_QX_NAME_cell_other].fArea = value_f["form"]["other"]["Area"].asFloat(); - } - _config.bigNG.qx[CONFIG_QX_NAME_cell_other].strname = "other"; - - if (value_f["form"]["line"]["open"]) - { - _config.bigNG.qx[CONFIG_QX_NAME_cell_line].bOpen = value_f["form"]["line"]["open"].asBool(); - } - if (value_f["form"]["line"]["Area"]) - { - _config.bigNG.qx[CONFIG_QX_NAME_cell_line].fArea = value_f["form"]["line"]["Area"].asFloat(); - } - _config.bigNG.qx[CONFIG_QX_NAME_cell_line].strname = "line"; - - if (value_f["form"]["zangwu"]["open"]) - { - _config.bigNG.qx[CONFIG_QX_NAME_cell_zangwu].bOpen = value_f["form"]["zangwu"]["open"].asBool(); - } - if (value_f["form"]["zangwu"]["Area"]) - { - _config.bigNG.qx[CONFIG_QX_NAME_cell_zangwu].fArea = value_f["form"]["zangwu"]["Area"].asFloat(); - } - _config.bigNG.qx[CONFIG_QX_NAME_cell_zangwu].strname = "zangwu"; - - if (value_f["form"]["edge"]["open"]) - { - _config.bigNG.qx[CONFIG_QX_NAME_cell_edge].bOpen = value_f["form"]["edge"]["open"].asBool(); - } - if (value_f["form"]["edge"]["Area"]) - { - _config.bigNG.qx[CONFIG_QX_NAME_cell_edge].fArea = value_f["form"]["edge"]["Area"].asFloat(); - } - _config.bigNG.qx[CONFIG_QX_NAME_cell_edge].strname = "edge"; - - if (value_f["form"]["ymhs"]["open"]) - { - _config.bigNG.qx[CONFIG_QX_NAME_cell_ymhs].bOpen = value_f["form"]["ymhs"]["open"].asBool(); - } - if (value_f["form"]["ymhs"]["Area"]) - { - _config.bigNG.qx[CONFIG_QX_NAME_cell_ymhs].fArea = value_f["form"]["ymhs"]["Area"].asFloat(); - } - _config.bigNG.qx[CONFIG_QX_NAME_cell_ymhs].strname = "ymhs"; - - if (value_f["form"]["dianzhuang"]["open"]) - { - _config.bigNG.qx[CONFIG_QX_NAME_cell_dianzhuang].bOpen = value_f["form"]["dianzhuang"]["open"].asBool(); - } - if (value_f["form"]["dianzhuang"]["Area"]) - { - _config.bigNG.qx[CONFIG_QX_NAME_cell_dianzhuang].fArea = value_f["form"]["dianzhuang"]["Area"].asFloat(); - } - _config.bigNG.qx[CONFIG_QX_NAME_cell_dianzhuang].strname = "dianzhuang"; - - if (value_f["form"]["posun"]["open"]) - { - _config.bigNG.qx[CONFIG_QX_NAME_cell_posun].bOpen = value_f["form"]["posun"]["open"].asBool(); - } - if (value_f["form"]["posun"]["Area"]) - { - _config.bigNG.qx[CONFIG_QX_NAME_cell_posun].fArea = value_f["form"]["posun"]["Area"].asFloat(); - } - _config.bigNG.qx[CONFIG_QX_NAME_cell_posun].strname = "posun"; - - if (value_f["form"]["xianwei"]["open"]) - { - _config.bigNG.qx[CONFIG_QX_NAME_cell_xianwei].bOpen = value_f["form"]["xianwei"]["open"].asBool(); - } - if (value_f["form"]["xianwei"]["Area"]) - { - _config.bigNG.qx[CONFIG_QX_NAME_cell_xianwei].fArea = value_f["form"]["xianwei"]["Area"].asFloat(); - } - _config.bigNG.qx[CONFIG_QX_NAME_cell_xianwei].strname = "xianwei"; - - if (value_f["form"]["shuizi"]["open"]) - { - _config.bigNG.qx[CONFIG_QX_NAME_cell_shuizi].bOpen = value_f["form"]["shuizi"]["open"].asBool(); - } - if (value_f["form"]["shuizi"]["Area"]) - { - _config.bigNG.qx[CONFIG_QX_NAME_cell_shuizi].fArea = value_f["form"]["shuizi"]["Area"].asFloat(); - } - _config.bigNG.qx[CONFIG_QX_NAME_cell_shuizi].strname = "shuizi"; - - if (value_f["form"]["danban"]["open"]) - { - _config.bigNG.qx[CONFIG_QX_NAME_cell_danban].bOpen = value_f["form"]["danban"]["open"].asBool(); - } - if (value_f["form"]["danban"]["Area"]) - { - _config.bigNG.qx[CONFIG_QX_NAME_cell_danban].fArea = value_f["form"]["danban"]["Area"].asFloat(); - } - _config.bigNG.qx[CONFIG_QX_NAME_cell_danban].strname = "danban"; - - if (value_f["form"]["fuchen"]["open"]) - { - _config.bigNG.qx[CONFIG_QX_NAME_cell_fuchen].bOpen = value_f["form"]["fuchen"]["open"].asBool(); - } - if (value_f["form"]["fuchen"]["Area"]) - { - _config.bigNG.qx[CONFIG_QX_NAME_cell_fuchen].fArea = value_f["form"]["fuchen"]["Area"].asFloat(); + std::string strqx_name = CONFIG_QX_NAME_Names[i]; + if (value_f["form"][strqx_name]["open"]) + { + _config.bigNG.qx[i].bOpen = value_f["form"][strqx_name]["open"].asBool(); + } + if (value_f["form"][strqx_name]["Area"]) + { + _config.bigNG.qx[i].fArea = value_f["form"][strqx_name]["Area"].asFloat(); + } + _config.bigNG.qx[i].strname = strqx_name; } - _config.bigNG.qx[CONFIG_QX_NAME_cell_fuchen].strname = "fuchen"; } else {