#include "topologyrecorder.h" #include TopologyRecorder::TopologyRecorder(const QHash& elementHT):eleHT(elementHT) { } bool TopologyRecorder::startWithNode(const QString& node) { if(node=="") { return true; } const QHash &ht=this->eleHT; QString anotherTerminal; QVector anotherTerminalVector; anotherTerminalVector=this->nodeToTerminal.value(node);//一个Node可以找到多个与之相连的Terminal for(int atI=0;atIreachedTerminal.contains(anotherTerminal)) { // std::cout<reachedTerminal[anotherTerminal]=0; // std::cout<<"anotherTerminal"<(ht[anotherTerminal]); QString ce; ce=anotherTerminalP->getConductingEquipment(); // std::cout< fromTo; QString terminalA; QString terminalB; //通过ACSegmentLine的ID来找Terminal。下同。 if(ce.startsWith("AC")) { QString acID=ce; fromTo.first=node; fromTo.second=acID; ACLineSegment *AC=static_cast(ht[acID]); if(!AC) { // std::cout<<"can not find "<getNamingDescription()=="") terminalA=AC->getTerminalA(); terminalB=AC->getTerminalB(); std::cout<<"find"<getID().toStdString()<getNamingDescription().toStdString()<(ht[swID]); if(!SW) { // std::cout<<"can not SW "<getOpenState()==true) { std::cout<<"sw "<getName().toStdString()<<"is open"; } else { std::cout<<"sw "<getName().toStdString()<<"is close"; } terminalA=SW->getTerminalA(); terminalB=SW->getTerminalB(); std::cout<<"find"<getID().toStdString()<(ht[tfID]); std::cout<<"TF"<getNamingDescription().toStdString()<branch.push_back(fromTo); QString nextTerminal; nextTerminal=(terminalA==anotherTerminal)?terminalB:terminalA; // std::cout<<"new Terminal"<(ht[nextTerminal]); if(!nextTerminalP) { // std::cout<<"can not terminal "<getConnectivityNode(); // std::cout<<"next node"<startWithNode(nextNode); } else { std::cout<<"not found cate "<