#include "head.h" #include //extern vector ResContainer; //extern vector Notfound; //extern QString cn; //extern int bus_no; //extern int balance_node; //extern int k; #include "qt_readxml.h" void Qt_readxml::XmlReaderTopologyAnalyse() { k=0; bus_no=busbar_section.size(); int terminal_no=terminal.size(); ResContainer.clear(); Notfound.clear(); for (int i=0;i::iterator it = find_if(list1.begin(), list1.end(), vector_finder(ResContainer[0].remove(0,1))); //得到与ID号相对应的元素 if(it!=list1.end()) { QString a; type=it->name; if (type=="busbar_section") { busbar_section[it->no].Terminal_res.push_back(terminal[i].ID); } else if (type=="substation") { substation[it->no].Terminal_res.push_back(terminal[i].ID); } else if (type=="connectivity_node") { connectivity_node[it->no].Terminal_res.push_back(terminal[i].ID); } else if (type=="acline_segment") { acline_segment[it->no].Terminal_res.push_back(terminal[i].ID); } else if (type=="disconnector") { disconnector[it->no].Terminal_res.push_back(terminal[i].ID); } else if (type=="power_transformer") { power_transformer[it->no].Terminal_res.push_back(terminal[i].ID); } else if (type=="transformer_winding") { transformer_winding[it->no].Terminal_res.push_back(terminal[i].ID); } else if (type=="ground_disconnector") { ground_disconnector[it->no].Terminal_res.push_back(terminal[i].ID); } else if (type=="composite_switch") { composite_switch[it->no].Terminal_res.push_back(terminal[i].ID); } else if (type=="circuit") { circuit[it->no].Terminal_res.push_back(terminal[i].ID); } else if (type=="bay") { bay[it->no].Terminal_res.push_back(terminal[i].ID); } else if (type=="connector") { connector[it->no].Terminal_res.push_back(terminal[i].ID); } else if (type=="fuse") { fuse[it->no].Terminal_res.push_back(terminal[i].ID); } else if (type=="pole") { pole[it->no].Terminal_res.push_back(terminal[i].ID); } else if (type=="load_break_switch") { load_break_switch[it->no].Terminal_res.push_back(terminal[i].ID); } else if (type=="breaker") { breaker[it->no].Terminal_res.push_back(terminal[i].ID); } } //else if(ResContainer[0].left(2)=="CN") else { ConnectivityNode CN; CN.ID = ResContainer[0]; CN.Terminal_res.push_back(terminal[i].ID); CN.flag = 0; connectivity_node.push_back(CN); QString name="connectivity_node"; XmlReaderFormList(i5,name,CN.ID); i5++; Notfound.push_back(ResContainer[0]); } ResContainer.erase(ResContainer.begin()); } } int i=0; if (!bus_no) { BusbarSection T1; T1.flag=0; T1.BaseVoltage_res.push_back(acline_segment[i].BaseVoltage_res[0]); T1.Terminal_res.push_back(acline_segment[i].Terminal_res[0]); T1.busSequence=0; busbar_section.push_back(T1); bus_no++; } int ac_no=acline_segment.size(); for (int i=0;i::iterator it = find_if(ac_kind.begin(), ac_kind.end(), ac_finder(acline_segment[i].GIS_ID)); //得到与ID号相对应的元素 if(it==ac_kind.end()) { AC_kind A; A.GIS_ID=acline_segment[i].GIS_ID; A.quantity=1; A.calculateTimes=0; ac_kind.push_back(A); } else { (it->quantity)++; } } int j=0; for (i=0;i::iterator it = find_if(list1.begin(), list1.end(), vector_finder(ResContainer[0])); //得到与ID号相对应的元素 ResContainer.erase(ResContainer.begin()); if(it!=list1.end()) { type=it->name; if (type=="terminal" && !terminal[it->no].flag) { terminal[it->no].flag=n; terminal[it->no].island=j; ResContainer.push_back(terminal[it->no].ConductingEquipment_res[0].remove(0,1)); ResContainer.push_back(terminal[it->no].ConnectivityNode_res[0].remove(0,1)); } else if (type=="connectivity_node" && !connectivity_node[it->no].flag) { connectivity_node[it->no].flag=n; connectivity_node[it->no].island = j; int no1=connectivity_node[it->no].Terminal_res.size(); if (no1) { for (int m=0;mno].Terminal_res[m]); } } } else if (type=="acline_segment") { isAcnode = 0; acline_segment[it->no].island=j; if (!acline_segment[it->no].link_from) { acline_segment[it->no].link_from=n; nextBus.push_back(acline_segment[it->no].ID); sign=0; } else if (!acline_segment[it->no].link_to) { int no1=acline_segment[it->no].Terminal_res.size(); if (no1) { for (int m=0;mno].Terminal_res[m]); } } acline_segment[it->no].link_to=n; sign=0; std::vector::iterator ac = find_if(ac_kind.begin(), ac_kind.end(), ac_finder(acline_segment[it->no].GIS_ID)); (ac->calculateTimes)++; } } else if (type=="load_break_switch" && !load_break_switch[it->no].flag) { load_break_switch[it->no].flag=n; load_break_switch[it->no].island=j; int no1=load_break_switch[it->no].Terminal_res.size(); if (no1) { for (int m=0;mno].Terminal_res[m]); } } } else if (type=="disconnector" && !disconnector[it->no].flag) { disconnector[it->no].flag=n; disconnector[it->no].island=j; int no1=disconnector[it->no].Terminal_res.size(); if (no1) { for (int m=0;mno].Terminal_res[m]); } } } else if (type=="transformer_winding"&& !transformer_winding[it->no].flag) { isAcnode = 0; int a=transformer_winding[it->no].MemberOf_PowerTransformer_res[0].length(); QString b=transformer_winding[it->no].MemberOf_PowerTransformer_res[0]; std::vector::iterator trans = find_if(list1.begin(), list1.end(), vector_finder(b.right(a-1))); transformer_winding[it->no].island = j; transformer_winding[it->no].flag = n; if (!power_transformer[trans->no].link_1) { power_transformer[trans->no].link_1=n; power_transformer[trans->no].island=j; sign=0; //isAcnode = 0; if (transformer_winding[it->no].description=="低压侧绕组") { power_transformer[trans->no].low=n; } int winding_no=transformer_winding.size(); for (int m=0;mno)) { nextBus.push_back(transformer_winding[m].ID); } } } else if (!power_transformer[trans->no].link_2&&power_transformer[trans->no].link_1!=n) { power_transformer[trans->no].link_2=n; sign=0; //isAcnode = 0; if (transformer_winding[it->no].description=="低压侧绕组") { power_transformer[trans->no].low=n; } if (transformer_winding[it->no].Terminal_res.size()) { ResContainer.push_back(transformer_winding[it->no].Terminal_res[0]); } } else if (!power_transformer[trans->no].link_3&&power_transformer[trans->no].link_2!=n &&power_transformer[trans->no].link_1!=n) { power_transformer[trans->no].link_3=n; sign=0; //isAcnode = 0; if (transformer_winding[it->no].description=="低压侧绕组") { power_transformer[trans->no].low=n; } if (transformer_winding[it->no].Terminal_res.size()) { ResContainer.push_back(transformer_winding[it->no].Terminal_res[0]); } } } else if (type=="connector" && !connector[it->no].flag) { connector[it->no].link_from=n; connector[it->no].island=j; int no1=connector[it->no].Terminal_res.size(); if (no1) { for (int m=0;mno].Terminal_res[m]); } } } else if (type=="fuse" && !fuse[it->no].flag) { fuse[it->no].flag=n; fuse[it->no].island=j; int no1=fuse[it->no].Terminal_res.size(); if (no1) for (int m=0;mno].Terminal_res[m]); } } else if (type=="ground_disconnector" && !ground_disconnector[it->no].flag) { ground_disconnector[it->no].flag=n; ground_disconnector[it->no].island=j; int no1=ground_disconnector[it->no].Terminal_res.size(); for (int m=0;mno].Terminal_res[m]); } } else if (type=="breaker" && !breaker[it->no].flag) { breaker[it->no].flag=n; breaker[it->no].island=j; int no1=breaker[it->no].Terminal_res.size(); if (no1) { for (int m=0;mno].Terminal_res[m]); } } } else if (type=="busbar_section" && !busbar_section[it->no].flag) { int no1=busbar_section[it->no].Terminal_res.size(); if (no1) { for (int m=0;mno].Terminal_res[m]); } } busbar_section[it->no].flag=n; busbar_section[it->no].island=j; //balance_node=n; } } } while (ResContainer.size()) { XmlReaderFindResource(j,n,sign); } return sign; }