diff --git a/testHasttable/elementhashtable.cpp b/testHasttable/elementhashtable.cpp index e4d2704..b92b134 100644 --- a/testHasttable/elementhashtable.cpp +++ b/testHasttable/elementhashtable.cpp @@ -82,7 +82,7 @@ bool ElementHashtable::GoPath() ite++) { BasicElementInfo *p=zwht[*ite]; - if(p->getName()=="ACLineSegment" && p->getID()=="AC-591821") + if(p->getName()=="ACLineSegment" && p->getID()==this->lineID) { ACLineSegment *ac=static_cast(p);//BusbarSection也就是线路头节点 QString acTerminal=ac->getTerminalB(); @@ -96,7 +96,7 @@ bool ElementHashtable::GoPath() continue;//有些Terminal是没有Node的 } std::cout<eleHT); + TopologyRecorder tpRecorder(this->eleHT,this->FDSet); tpRecorder.startWithNode(node); tpRecorder.exportTo(""); break; @@ -126,9 +126,9 @@ bool ElementHashtable::parse(const QString& xmlPath) this->child(reader);//处理根元素下的第一级子元素,也就是Substation这一类。 } loop++; - if(loop>600000){ +// if(loop>600000){ // break; - } +// } } if(reader.hasError()) @@ -154,3 +154,12 @@ bool ElementHashtable::Parse(const QString& xmlPWPath,const QString& xmlZWPath){ // this->parse(xmlZWPath); return true; } + +void ElementHashtable::SetACLineID(const QString &id)//寻找的线路ID +{ + this->lineID=id; +} +void ElementHashtable::SetFDSet(const QVector &FDSet)//FeeDer集合 +{ + this->FDSet=FDSet; +} diff --git a/testHasttable/elementhashtable.h b/testHasttable/elementhashtable.h index b06b2e8..a27d217 100644 --- a/testHasttable/elementhashtable.h +++ b/testHasttable/elementhashtable.h @@ -26,6 +26,8 @@ public: explicit ElementHashtable(QObject *parent = 0); bool Parse(const QString& xmlPWPath,const QString& xmlZWPath); bool GoPath(); + void SetACLineID(const QString &id);//寻找的线路ID + void SetFDSet(const QVector &FDSet);//FeeDer集合 private: bool child(QXmlStreamReader &reader); bool setCurrentHashTable(QHash *t); @@ -34,6 +36,8 @@ private: QHash mainStationHT;//记录主站的元素 NodeToTerminal nodeToTerminal; QHash *currentHT; + QString lineID; + QVector FDSet; signals: public slots: diff --git a/testHasttable/main.cpp b/testHasttable/main.cpp index ad42b0c..aafbbb1 100644 --- a/testHasttable/main.cpp +++ b/testHasttable/main.cpp @@ -1,17 +1,16 @@ #include #include #include "regexextract.h" +#include "task.h" #include int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); ElementHashtable eleReader; eleReader.Parse("D:/Project/佛山项目/佛山收资/exportmodel_pw/df8003/df8600/exportfiles/exportmodel_pw.xml","D:/Project/佛山项目/佛山收资/exportmodel_zwyth20141204/exportmodel_zwyth.xml"); -// eleReader.parse("D:/Project/佛山项目/佛山收资/按元素分/BusbarSectionb.xml"); - eleReader.GoPath(); -// RegexExtract regexExt; -// regexExt.extract("D:/Project/佛山项目/佛山收资/exportmodel_pw/df8003/df8600/exportfiles/exportmodel_pw.xml"); -// regexExt.exportBlocks("ThermalGeneratingUnit.xml"); +// eleReader.GoPath(); + Task task; + task.doAgainstTaskFile(eleReader); std::cout<<"Finished."< +Task::Task() +{ + this->taskFile="./../task.txt"; +} + +void Task::doAgainstTaskFile(ElementHashtable &eleHT) +{ + QFile file(this->taskFile); + QString line; + QStringList sep; + if(file.open(QFile::ReadOnly)) + { + QTextStream reader(&file); + while(!reader.atEnd()) + { + line=reader.readLine(); + line=line.trimmed(); + if(line.startsWith("#")) + { + continue; + } + if(line.length()==0)//空行 + { + continue; + } + //先吧括号里面的取出来 + QRegularExpression regExp("\\((.*)\\)"); + QRegularExpressionMatch match=regExp.match(line); + QString _set; + if(match.hasMatch()) + { + _set=match.captured(0); +// std::cout<<_set.toStdString()<taskFile.toStdString()<<"not open"< +#include +#include +#include +#include +#include +#include "elementhashtable.h" +class Task +{ +public: + Task(); + void doAgainstTaskFile(ElementHashtable &eleHT); +private: + QString taskFile; +}; + +#endif // TASK_H diff --git a/testHasttable/task.txt b/testHasttable/task.txt index 773afda..b030340 100644 --- a/testHasttable/task.txt +++ b/testHasttable/task.txt @@ -1,6 +1,6 @@ 709美的甲线,AC-671399,(FD-2003,) 720美的乙线,AC-671401,(FD-2003,) -715北都联络线,AC-975725|AC-456393,(FD-2050,) +#715北都联络线,AC-975725|AC-456393,(FD-2050,) 705林港I线,AC-591832,(FD-2049,) 719林港IV线,AC-591838,(FD-2055,) 721南源线,AC-591821,(FD-2014,FD-2019,FD-2000,) @@ -13,7 +13,7 @@ 719广水Ⅱ线,AC-831217,(FD-2048,) 714东兴线,AC-591825,(FD-2019,) 712金茂线,AC-671400,(FD-2004,) -707林港Ⅲ线,AC-591861,()没有svg +#707林港Ⅲ线,AC-591861,()没有svg 723开发区Ⅰ线,AC-591839,(FD-2056,) 711新城Ⅱ线,AC-831181,(FD-2045,) 706林港Ⅱ线,AC-591827,(FD-2023,) @@ -45,7 +45,7 @@ 718发展线,AC-671672,(FD-1997) 705广水Ⅰ线,AC-831215,(FD-2048) 719广水Ⅱ线,AC-831217,(FD-2048) -704广水Ⅲ线,AC-591831,()无svg +#704广水Ⅲ线,AC-591831,()无svg 703港前北线,AC-671661,(FD-1992,FD-1998) 730泰港乙线,AC-903666,(FD-58442,FD-2025) 716兴业南线,AC-591810,(FD-1994,FD-58443) diff --git a/testHasttable/testHasttable.pro b/testHasttable/testHasttable.pro index 3a32da4..d4b5f8f 100644 --- a/testHasttable/testHasttable.pro +++ b/testHasttable/testHasttable.pro @@ -36,7 +36,8 @@ SOURCES += main.cpp \ element/branch.cpp \ element/line.cpp \ element/transformer.cpp \ - element/switch.cpp + element/switch.cpp \ + task.cpp HEADERS += \ elementhashtable.h \ @@ -58,7 +59,8 @@ HEADERS += \ element/branch.h \ element/line.h \ element/transformer.h \ - element/switch.h + element/switch.h \ + task.h #release{ DEFINES += QT_NO_DEBUG_OUTPUT diff --git a/testHasttable/topologyrecorder.cpp b/testHasttable/topologyrecorder.cpp index fda4e21..5c7afb2 100644 --- a/testHasttable/topologyrecorder.cpp +++ b/testHasttable/topologyrecorder.cpp @@ -1,7 +1,7 @@ #include "topologyrecorder.h" #include #include -TopologyRecorder::TopologyRecorder(const QHash& elementHT, QObject *parent):eleHT(elementHT) +TopologyRecorder::TopologyRecorder(const QHash& elementHT, const QVector &FDSet, QObject *parent):eleHT(elementHT),FDSet(FDSet) { } @@ -51,7 +51,7 @@ bool TopologyRecorder::isEquipmentNeeded(const QString& substatinID) else { QString feederID=sfd->getSubstationMemberOf_Feeder(); - return feederID=="FD-2014"||sfd->getNamingDescription()=="V馈线站"; + return this->FDSet.contains(feederID) ||sfd->getNamingDescription()=="V馈线站"; } return false; } diff --git a/testHasttable/topologyrecorder.h b/testHasttable/topologyrecorder.h index 50a56f0..13913b2 100644 --- a/testHasttable/topologyrecorder.h +++ b/testHasttable/topologyrecorder.h @@ -29,7 +29,7 @@ class TopologyRecorder:public QObject }; public: - TopologyRecorder(const QHash& elementHT,QObject *parent=0); + TopologyRecorder(const QHash& elementHT,const QVector &FDSet,QObject *parent=0); ~TopologyRecorder(); bool startWithNode(const QString& node); void exportTo(const QString& path); @@ -39,6 +39,7 @@ private: QHash reachedTerminal; QVector tfs; CIMExporter cimExporter; + QVector FDSet; bool isEquipmentNeeded(const QString& substatinID); };