2014-12-06 21:48:07 +08:00
|
|
|
|
#include "topologyrecorder.h"
|
2015-01-21 14:03:07 +08:00
|
|
|
|
#include <iostream>
|
2015-01-03 22:22:54 +08:00
|
|
|
|
#include <QList>
|
2015-01-22 11:09:20 +08:00
|
|
|
|
TopologyRecorder::TopologyRecorder(const QHash<QString,BasicElementInfo *>& elementHT, const QVector<QString> &FDSet, const QString& loadFilePath, const QString &rootID, QObject *parent):QObject(parent),eleHT(elementHT),FDSet(FDSet),cimExporter(elementHT,loadFilePath),rootID(rootID)
|
2014-12-06 21:48:07 +08:00
|
|
|
|
{
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2014-12-25 21:35:06 +08:00
|
|
|
|
TopologyRecorder::~TopologyRecorder()
|
|
|
|
|
|
{
|
2015-01-07 21:57:50 +08:00
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2015-01-30 21:34:31 +08:00
|
|
|
|
bool TopologyRecorder::addDG(const QString& substationID, const QString &fromNodeID)
|
|
|
|
|
|
{
|
|
|
|
|
|
// std::cout<<"sub id"<<substationID.toStdString()<<std::endl;
|
|
|
|
|
|
DGMapping dgMapping;
|
|
|
|
|
|
QVector<QSharedPointer<DGInfo> > DGs=dgMapping.getDGBySubstationID(substationID);
|
|
|
|
|
|
foreach(QSharedPointer<DGInfo> _DG,DGs)
|
|
|
|
|
|
{
|
|
|
|
|
|
double capacity=_DG->getCapacity();
|
|
|
|
|
|
QPair<QString,QString> fromTo;
|
|
|
|
|
|
fromTo.first=fromNodeID;
|
|
|
|
|
|
fromTo.second=_DG->getName();//虚拟节点
|
|
|
|
|
|
if(this->usedDG.contains(_DG->getName()))
|
|
|
|
|
|
{
|
|
|
|
|
|
break;//这个Substation下面已经添加过DG,不用再添加了。
|
|
|
|
|
|
}
|
2015-02-01 13:52:43 +08:00
|
|
|
|
// std::cout<<"from node"<<fromNodeID.toStdString()<<std::endl;
|
2015-01-30 21:34:31 +08:00
|
|
|
|
DG *DGP=new DG(fromTo,capacity,_DG->getName(),this);
|
|
|
|
|
|
this->cimExporter.add(fromTo,DGP);
|
2015-03-12 22:42:40 +08:00
|
|
|
|
std::cout<<"add "<<_DG->getName().toStdString()<<" to "<<substationID.toStdString() <<std::endl;
|
2015-01-30 21:34:31 +08:00
|
|
|
|
this->usedDG[_DG->getName()]=0;//用过了,做个记号
|
|
|
|
|
|
}
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2015-01-07 21:57:50 +08:00
|
|
|
|
bool TopologyRecorder::isEquipmentNeeded(const QString& substatinID)
|
|
|
|
|
|
{
|
|
|
|
|
|
const QHash<QString,BasicElementInfo*> &ht=this->eleHT;
|
|
|
|
|
|
Substation *sfd=static_cast<Substation *>(ht[substatinID]);
|
|
|
|
|
|
if(sfd==NULL)
|
|
|
|
|
|
{
|
2015-01-08 21:32:33 +08:00
|
|
|
|
// std::cout<<"can not find"<<substatinID.toStdString()<<std::endl;
|
2015-01-07 21:57:50 +08:00
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
QString feederID=sfd->getSubstationMemberOf_Feeder();
|
|
|
|
|
|
return this->FDSet.contains(feederID) ||sfd->getNamingDescription()=="V馈线站";
|
|
|
|
|
|
}
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void TopologyRecorder::exportTo(const QString& path)
|
|
|
|
|
|
{
|
2015-01-22 11:09:20 +08:00
|
|
|
|
this->cimExporter.exportTo(path,this->rootID);
|
2015-01-07 21:57:50 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void TopologyRecorder::showContainerInfo(QTextStream &stream)
|
|
|
|
|
|
{
|
|
|
|
|
|
|
2015-01-03 22:22:54 +08:00
|
|
|
|
const QHash<QString,BasicElementInfo*> &ht=this->eleHT;
|
2015-01-08 11:19:31 +08:00
|
|
|
|
// stream<<"total tf"<<this->tfs.length()<<"\n";
|
2015-01-03 22:22:54 +08:00
|
|
|
|
//统计一下每个Container下有多少个变压器
|
|
|
|
|
|
QHash<QString,QVector<QString> > s;
|
|
|
|
|
|
for(QVector<QString>::iterator ite=this->tfs.begin();
|
|
|
|
|
|
ite!=this->tfs.end();
|
|
|
|
|
|
ite++)
|
|
|
|
|
|
{
|
|
|
|
|
|
PowerTransformer *pf=static_cast<PowerTransformer *>(ht[*ite]);
|
|
|
|
|
|
QString container;
|
|
|
|
|
|
container=pf->getEquipmentMemberOf_EquipmentContainer();
|
|
|
|
|
|
s[container].push_back(*ite);
|
|
|
|
|
|
}
|
2015-01-08 21:32:33 +08:00
|
|
|
|
// std::cout<<"container "<<s.keys().length()<<std::endl;
|
2015-01-03 22:22:54 +08:00
|
|
|
|
QList<QString> keys=s.keys();
|
|
|
|
|
|
for(QList<QString>::iterator ite=keys.begin();
|
|
|
|
|
|
ite!=keys.end();
|
|
|
|
|
|
ite++)
|
|
|
|
|
|
{
|
|
|
|
|
|
QString k=*ite;
|
2015-01-07 21:57:50 +08:00
|
|
|
|
stream<<k;
|
2015-01-03 22:22:54 +08:00
|
|
|
|
Substation *sb=static_cast<Substation *>(ht[k]);
|
2015-01-07 21:57:50 +08:00
|
|
|
|
stream<<"("<<sb->getNamingDescription()<<")";
|
2015-01-08 11:19:31 +08:00
|
|
|
|
stream<<"#####";
|
2015-01-03 22:22:54 +08:00
|
|
|
|
QVector<QString> v=s[k];
|
|
|
|
|
|
foreach (QString n, v) {
|
2015-01-08 10:13:29 +08:00
|
|
|
|
stream<<", "<<n;
|
2015-01-03 22:22:54 +08:00
|
|
|
|
PowerTransformer *pf=static_cast<PowerTransformer *>(ht[n]);
|
2015-01-07 21:57:50 +08:00
|
|
|
|
stream<<"("<<pf->getNamingDescription()<<")";
|
2015-01-03 22:22:54 +08:00
|
|
|
|
}
|
2015-01-07 21:57:50 +08:00
|
|
|
|
stream<<"\n";
|
2015-01-03 22:22:54 +08:00
|
|
|
|
}
|
2014-12-25 21:35:06 +08:00
|
|
|
|
|
2014-12-28 17:49:16 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2014-12-06 21:48:07 +08:00
|
|
|
|
bool TopologyRecorder::startWithNode(const QString& node)
|
|
|
|
|
|
{
|
|
|
|
|
|
if(node=="")
|
|
|
|
|
|
{
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
const QHash<QString,BasicElementInfo*> &ht=this->eleHT;
|
|
|
|
|
|
QString anotherTerminal;
|
|
|
|
|
|
QVector<QString> anotherTerminalVector;
|
|
|
|
|
|
anotherTerminalVector=this->nodeToTerminal.value(node);//一个Node可以找到多个与之相连的Terminal
|
2015-01-19 13:33:29 +08:00
|
|
|
|
// std::cout<<"find "<<anotherTerminalVector.length()<<"terminal "<<std::endl;
|
2014-12-06 21:48:07 +08:00
|
|
|
|
for(int atI=0;atI<anotherTerminalVector.length();atI++)
|
|
|
|
|
|
{
|
2014-12-28 16:40:57 +08:00
|
|
|
|
TopologyRecorder::Type::EleType typ;
|
|
|
|
|
|
BasicElementInfo *foundEle=NULL;
|
2014-12-06 21:48:07 +08:00
|
|
|
|
anotherTerminal=anotherTerminalVector.at(atI);
|
|
|
|
|
|
if(this->reachedTerminal.contains(anotherTerminal))
|
|
|
|
|
|
{
|
|
|
|
|
|
continue;
|
|
|
|
|
|
}
|
2015-01-17 22:31:06 +08:00
|
|
|
|
// std::cout<<anotherTerminal.toStdString()<<std::endl;
|
2014-12-06 21:48:07 +08:00
|
|
|
|
this->reachedTerminal[anotherTerminal]=0;
|
|
|
|
|
|
Terminal *anotherTerminalP=static_cast<Terminal *>(ht[anotherTerminal]);
|
|
|
|
|
|
QString ce;
|
|
|
|
|
|
ce=anotherTerminalP->getConductingEquipment();
|
2014-12-09 22:03:56 +08:00
|
|
|
|
QPair<QString,QString> fromTo;
|
|
|
|
|
|
QString terminalA;
|
|
|
|
|
|
QString terminalB;
|
|
|
|
|
|
//通过ACSegmentLine的ID来找Terminal。下同。
|
2014-12-06 21:48:07 +08:00
|
|
|
|
if(ce.startsWith("AC"))
|
|
|
|
|
|
{
|
|
|
|
|
|
QString acID=ce;
|
2015-01-15 17:31:41 +08:00
|
|
|
|
// fromTo.first=node;
|
|
|
|
|
|
// fromTo.second=acID;
|
2014-12-06 21:48:07 +08:00
|
|
|
|
ACLineSegment *AC=static_cast<ACLineSegment *>(ht[acID]);
|
|
|
|
|
|
if(!AC)
|
|
|
|
|
|
{
|
|
|
|
|
|
continue;
|
|
|
|
|
|
}
|
2015-01-18 18:18:18 +08:00
|
|
|
|
// std::cout<<AC->getLength()<<std::endl;
|
|
|
|
|
|
// std::cout<<AC->getID().toStdString()<<std::endl;
|
2014-12-06 21:48:07 +08:00
|
|
|
|
terminalA=AC->getTerminalA();
|
|
|
|
|
|
terminalB=AC->getTerminalB();
|
2014-12-28 16:40:57 +08:00
|
|
|
|
foundEle=AC;
|
|
|
|
|
|
typ=TopologyRecorder::Type::AC;
|
2014-12-06 21:48:07 +08:00
|
|
|
|
}
|
|
|
|
|
|
if(ce.startsWith("SW"))
|
|
|
|
|
|
{
|
2014-12-25 21:35:06 +08:00
|
|
|
|
BasicElementInfo *bi=ht[ce];
|
|
|
|
|
|
if(bi!=NULL)
|
2014-12-12 17:13:39 +08:00
|
|
|
|
{
|
2014-12-25 21:54:03 +08:00
|
|
|
|
|
2014-12-25 21:35:06 +08:00
|
|
|
|
if(bi->getName()=="Breaker")
|
|
|
|
|
|
{
|
2015-01-08 21:32:33 +08:00
|
|
|
|
// std::cout<<bi->getName().toStdString()<<std::endl;
|
2014-12-25 21:35:06 +08:00
|
|
|
|
QString swID=ce;
|
2015-01-15 17:31:41 +08:00
|
|
|
|
// fromTo.first=node;
|
|
|
|
|
|
// fromTo.second=swID;
|
2014-12-25 21:35:06 +08:00
|
|
|
|
Breaker *SW=static_cast<Breaker *>(ht[swID]);
|
|
|
|
|
|
if(!SW)
|
|
|
|
|
|
{
|
|
|
|
|
|
continue;
|
|
|
|
|
|
}
|
|
|
|
|
|
//显示开关状态
|
|
|
|
|
|
if(SW->getOpenState()==true)
|
|
|
|
|
|
{
|
2015-01-08 21:32:33 +08:00
|
|
|
|
// std::cout<<"sw "<<SW->getNamingDescription().toStdString()<<"is open"<<std::endl;
|
2014-12-25 21:35:06 +08:00
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
2015-01-08 21:32:33 +08:00
|
|
|
|
// std::cout<<"sw "<<SW->getNamingDescription().toStdString()<<"is close"<<std::endl;
|
2014-12-25 21:35:06 +08:00
|
|
|
|
}
|
2015-01-20 13:19:28 +08:00
|
|
|
|
|
2014-12-25 21:35:06 +08:00
|
|
|
|
terminalA=SW->getTerminalA();
|
|
|
|
|
|
terminalB=SW->getTerminalB();
|
2015-01-08 21:32:33 +08:00
|
|
|
|
// std::cout<<"find"<<SW->getID().toStdString()<<std::endl;
|
2014-12-28 16:40:57 +08:00
|
|
|
|
foundEle=SW;
|
|
|
|
|
|
typ=TopologyRecorder::Type::BREAKER;
|
2014-12-25 21:35:06 +08:00
|
|
|
|
}
|
|
|
|
|
|
if(bi->getName()=="Disconnector")
|
|
|
|
|
|
{
|
2015-01-08 21:32:33 +08:00
|
|
|
|
// std::cout<<bi->getName().toStdString()<<std::endl;
|
2014-12-25 21:35:06 +08:00
|
|
|
|
QString disConID=ce;
|
2014-12-25 21:54:03 +08:00
|
|
|
|
Disconnector *Dis=static_cast<Disconnector *>(ht[disConID]);
|
|
|
|
|
|
//先判断一下是不是需要的Disconnector
|
|
|
|
|
|
QString container=Dis->getEquipmentMemberOf_EquipmentContainer();
|
|
|
|
|
|
if(!this->isEquipmentNeeded(container))
|
|
|
|
|
|
{
|
2015-01-08 21:32:33 +08:00
|
|
|
|
// std::cout<<"Dissw not belong "<<disConID.toStdString()<<std::endl;
|
2014-12-25 21:54:03 +08:00
|
|
|
|
continue;
|
|
|
|
|
|
}
|
2015-01-15 17:31:41 +08:00
|
|
|
|
// fromTo.first=node;
|
|
|
|
|
|
// fromTo.second=disConID;
|
2014-12-25 21:35:06 +08:00
|
|
|
|
|
|
|
|
|
|
if(!Dis)
|
|
|
|
|
|
{
|
|
|
|
|
|
continue;
|
|
|
|
|
|
}
|
|
|
|
|
|
//显示开关状态
|
|
|
|
|
|
if(Dis->getOpenState()==true)
|
|
|
|
|
|
{
|
2015-01-08 21:32:33 +08:00
|
|
|
|
// std::cout<<"Dissw "<<Dis->getNamingDescription().toStdString()<<"is open"<<std::endl;
|
2014-12-25 21:35:06 +08:00
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
2015-01-08 21:32:33 +08:00
|
|
|
|
// std::cout<<"Dissw "<<Dis->getNamingDescription().toStdString()<<"is close"<<std::endl;
|
2014-12-25 21:35:06 +08:00
|
|
|
|
}
|
2015-01-19 13:33:29 +08:00
|
|
|
|
|
2014-12-25 21:35:06 +08:00
|
|
|
|
terminalA=Dis->getTerminalA();
|
|
|
|
|
|
terminalB=Dis->getTerminalB();
|
2015-01-08 21:32:33 +08:00
|
|
|
|
// std::cout<<"find"<<Dis->getID().toStdString()<<std::endl;
|
2014-12-28 16:40:57 +08:00
|
|
|
|
foundEle=Dis;
|
|
|
|
|
|
typ=TopologyRecorder::Type::DISCONNECTOR;
|
2014-12-25 21:35:06 +08:00
|
|
|
|
}
|
2014-12-12 17:13:39 +08:00
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
2014-12-25 21:35:06 +08:00
|
|
|
|
continue;
|
2014-12-12 17:13:39 +08:00
|
|
|
|
}
|
2014-12-25 21:35:06 +08:00
|
|
|
|
|
|
|
|
|
|
|
2014-12-09 22:03:56 +08:00
|
|
|
|
}
|
|
|
|
|
|
if(ce.startsWith("BS"))
|
|
|
|
|
|
{
|
2014-12-25 16:21:20 +08:00
|
|
|
|
//看找到那个Substation了
|
|
|
|
|
|
BusbarSection *bs=static_cast<BusbarSection *>(ht[ce]);
|
|
|
|
|
|
if(bs==NULL)
|
|
|
|
|
|
{
|
2015-01-08 21:32:33 +08:00
|
|
|
|
// std::cout<<"not find bussection"<<ce.toStdString()<<std::endl;
|
2014-12-25 16:21:20 +08:00
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
QString container=bs->getEquipmentMemberOf_EquipmentContainer();
|
|
|
|
|
|
Substation *sfd=static_cast<Substation *>(ht[container]);
|
|
|
|
|
|
if(sfd==NULL)
|
|
|
|
|
|
{
|
2015-01-08 21:32:33 +08:00
|
|
|
|
// std::cout<<"can not find"<<container.toStdString()<<std::endl;
|
2014-12-25 16:21:20 +08:00
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
2015-01-17 22:31:06 +08:00
|
|
|
|
// std::cout<<"encounter "<<sfd->getNamingDescription().toLocal8Bit().data()<<std::endl;
|
2015-01-03 22:22:54 +08:00
|
|
|
|
if(!this->isEquipmentNeeded(container))
|
|
|
|
|
|
{
|
2015-01-08 21:32:33 +08:00
|
|
|
|
// std::cout<<"not belong"<<std::endl;
|
2015-01-03 22:22:54 +08:00
|
|
|
|
}
|
2014-12-25 16:21:20 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
2014-12-09 22:03:56 +08:00
|
|
|
|
continue;
|
|
|
|
|
|
}
|
2014-12-11 20:32:49 +08:00
|
|
|
|
if(ce.startsWith("TF"))
|
|
|
|
|
|
{
|
|
|
|
|
|
QString tfID=ce;
|
|
|
|
|
|
PowerTransformer *tf=static_cast<PowerTransformer *>(ht[tfID]);
|
2015-01-08 21:32:33 +08:00
|
|
|
|
// std::cout<<"TF"<<tf->getNamingDescription().toStdString()<<std::endl;
|
2014-12-25 11:44:46 +08:00
|
|
|
|
//判断一下这个变压器是不是我们需要的
|
|
|
|
|
|
QString equipmentContainer;
|
|
|
|
|
|
equipmentContainer=tf->getEquipmentMemberOf_EquipmentContainer();
|
2014-12-25 21:54:03 +08:00
|
|
|
|
if(this->isEquipmentNeeded(equipmentContainer))
|
2014-12-25 11:44:46 +08:00
|
|
|
|
{
|
2015-01-03 22:22:54 +08:00
|
|
|
|
this->tfs.push_back(tfID);
|
2015-01-20 13:19:28 +08:00
|
|
|
|
|
2014-12-28 16:40:57 +08:00
|
|
|
|
foundEle=tf;
|
2014-12-25 11:44:46 +08:00
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
2015-01-08 21:32:33 +08:00
|
|
|
|
// std::cout<<tf->getNamingDescription().toStdString()<<"not belong"<<std::endl;
|
2015-01-17 22:31:06 +08:00
|
|
|
|
continue;
|
2014-12-25 11:44:46 +08:00
|
|
|
|
}
|
2014-12-28 16:40:57 +08:00
|
|
|
|
typ=TopologyRecorder::Type::TF;
|
2014-12-26 11:22:10 +08:00
|
|
|
|
|
2014-12-11 20:32:49 +08:00
|
|
|
|
}
|
2014-12-28 16:40:57 +08:00
|
|
|
|
if(foundEle)
|
2014-12-09 22:03:56 +08:00
|
|
|
|
{
|
2015-01-20 13:19:28 +08:00
|
|
|
|
|
2015-01-15 17:31:41 +08:00
|
|
|
|
//有可能会访问到重复的元件,所以这里判断一下,如果是已经访问过的就不添加了。
|
|
|
|
|
|
if(this->hasAdded.contains(foundEle->getID()))
|
|
|
|
|
|
{
|
|
|
|
|
|
continue;
|
|
|
|
|
|
}
|
|
|
|
|
|
this->hasAdded[foundEle->getID()]=0;
|
2015-01-20 13:19:28 +08:00
|
|
|
|
|
|
|
|
|
|
Branch *branch=NULL;
|
|
|
|
|
|
QString nextTerminal;
|
|
|
|
|
|
Terminal *nextTerminalP;
|
|
|
|
|
|
QString nextNode;
|
|
|
|
|
|
if(typ!=TopologyRecorder::Type::TF)
|
|
|
|
|
|
{
|
|
|
|
|
|
nextTerminal=(terminalA==anotherTerminal)?terminalB:terminalA;
|
|
|
|
|
|
nextTerminalP=static_cast<Terminal *>(ht[nextTerminal]);
|
|
|
|
|
|
if(!nextTerminalP)
|
|
|
|
|
|
{
|
|
|
|
|
|
continue;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
nextNode=nextTerminalP->getConnectivityNode();
|
|
|
|
|
|
fromTo.first=node;
|
|
|
|
|
|
fromTo.second=nextNode;
|
2015-01-22 14:12:49 +08:00
|
|
|
|
if(nextNode=="")
|
|
|
|
|
|
{
|
|
|
|
|
|
fromTo.second=foundEle->getID();//用虚拟节点
|
|
|
|
|
|
}
|
2015-01-20 13:19:28 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
nextNode="";
|
|
|
|
|
|
fromTo.first=node;
|
|
|
|
|
|
fromTo.second=foundEle->getID();//用变压器编号做虚拟节点
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// std::cout<<typ<<" "<<ce.toStdString()<<std::endl;
|
2014-12-28 16:40:57 +08:00
|
|
|
|
switch(typ)
|
|
|
|
|
|
{
|
|
|
|
|
|
case TopologyRecorder::Type::AC:
|
|
|
|
|
|
branch=new Line(fromTo,static_cast<ACLineSegment *>(foundEle),this);
|
|
|
|
|
|
this->cimExporter.add(fromTo,static_cast<Line *>(branch));
|
|
|
|
|
|
break;
|
|
|
|
|
|
case TopologyRecorder::Type::BREAKER:
|
2015-01-20 21:24:33 +08:00
|
|
|
|
branch=new Switch(fromTo,foundEle->getID(),this);
|
2014-12-28 16:40:57 +08:00
|
|
|
|
this->cimExporter.add(fromTo,static_cast<Switch *>(branch));
|
|
|
|
|
|
break;
|
|
|
|
|
|
case TopologyRecorder::Type::DISCONNECTOR:
|
2015-01-20 21:24:33 +08:00
|
|
|
|
branch=new Switch(fromTo,foundEle->getID(),this);
|
2014-12-28 16:40:57 +08:00
|
|
|
|
this->cimExporter.add(fromTo,static_cast<Switch *>(branch));
|
|
|
|
|
|
break;
|
|
|
|
|
|
case TopologyRecorder::Type::TF:
|
|
|
|
|
|
branch=new Transformer(fromTo,static_cast<PowerTransformer *>(foundEle),this);
|
|
|
|
|
|
this->cimExporter.add(fromTo,static_cast<Transformer *>(branch));
|
2015-01-30 21:34:31 +08:00
|
|
|
|
//把DG接在变压器旁边
|
|
|
|
|
|
|
|
|
|
|
|
this->addDG(static_cast<PowerTransformer *>(foundEle)->getEquipmentMemberOf_EquipmentContainer(),fromTo.first);
|
2015-03-12 22:42:40 +08:00
|
|
|
|
|
|
|
|
|
|
if(this->usedDG.keys().length()>0)
|
|
|
|
|
|
{
|
|
|
|
|
|
std::cout<<"contained DG"<<this->rootID.toStdString()<<std::endl;
|
|
|
|
|
|
}
|
2014-12-28 16:40:57 +08:00
|
|
|
|
break;
|
|
|
|
|
|
default:
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
2015-01-19 13:33:29 +08:00
|
|
|
|
// std::cout<<nextNode.toStdString()<<std::endl;
|
2015-01-20 13:19:28 +08:00
|
|
|
|
if(nextNode!="")
|
|
|
|
|
|
this->startWithNode(nextNode);
|
2014-12-06 21:48:07 +08:00
|
|
|
|
}
|
2014-12-09 22:03:56 +08:00
|
|
|
|
else
|
2014-12-06 21:48:07 +08:00
|
|
|
|
{
|
2015-01-18 18:18:18 +08:00
|
|
|
|
// std::cout<<"not found cate "<<ce.toStdString()<<std::endl;
|
2014-12-06 21:48:07 +08:00
|
|
|
|
continue;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|