#include "cimexporter.h" #include CIMExporter::CIMExporter(const QHash &eleHT, const QString &loadDir):loadDir(loadDir),eleHT(eleHT) { } void CIMExporter::add(const QPair& fromTo,Line* line) { CIMExporter::LineStru lineStru; lineStru.line=line; lineStru.fromID=fromTo.first; lineStru.toID=fromTo.second; this->line.push_back(lineStru); } void CIMExporter::add(const QPair& fromTo,Switch* sw) { CIMExporter::SwitchStru switchStru; switchStru.sw=sw; switchStru.fromID=fromTo.first; switchStru.toID=fromTo.second; this->sw.push_back(switchStru); } void CIMExporter::add(const QPair& fromTo,Transformer* tf) { CIMExporter::TransformerStru tfStru; tfStru.tf=tf; tfStru.fromID=fromTo.first; tfStru.toID=fromTo.second; this->tf.push_back(tfStru); } void CIMExporter::exportTo(const QString& path) { //先给所有节点都编号 this->idToNumber(this->line); this->idToNumber(this->sw); this->idToNumber(this->tf); //开始按要求输出 //先输出线路 // for(QList::iterator ite=this->line.begin(); // ite!=this->line.end(); // ite++) // { // LineStru l=*ite; // std::cout<r<<","<x<<","<g1<<","<g2<loadDir); QStringList files; files=recurseDir.getFiles(); //只取文件名 QStringList baseNames; foreach(QString file,files) { QFileInfo fileInfo(file); baseNames<::iterator ite=this->tf.begin(); ite!=this->tf.end(); ite++) { PowerTransformer *tf=ite->tf->getTF(); QString subID=tf->getEquipmentMemberOf_EquipmentContainer();//所属Substation的ID Substation *sub=static_cast(this->eleHT[subID]); if(!sub) { std::cout<<"CIMExporter:: can not substation of "< > vecLoadInfo=loadMapping.getSubstationLoad(sub->getID()); foreach(QSharedPointer p,vecLoadInfo) { QFileInfo targetBasename(p->getLoadPath()); std::cout<getPA(); break; } } } //列出没有用的负荷文件 foreach(QString name, baseNames) { if(!usedLoad.contains(name)) { std::cout< void CIMExporter::idToNumber(QList &s)//把所有元件的标识进行编号 { for(typename QList::iterator ite=s.begin(); ite!=s.end(); ite++ ) { T _t=*ite; _t.fromNum=this->numberIt(_t.fromID); _t.toNum=this->numberIt(_t.toID); *ite=_t; } } int CIMExporter::numberIt(const QString& id) { if(this->number.contains(id)) { return this->number.value(id); } else { int n=this->number.values().length()+1; this->number[id]=n; return n; } }