#include "stdafx.h" #include "BranchPoint.h" #include #include #include #include #include #include #include #include using namespace std; //简单的路径信息,路径规划的直接结果 struct Path{ vector wirelist; //路径中的线缆名 vector

points; //路径上的点,包括卡箍和分支点 vector inOut; //卡箍方向是正向为0,反向为1,分支点为-1 double dia; //路径直径 Path(){ dia=0; } //返回path中点的数量 inline int size(){ assert(inOut.size()==points.size()); return points.size(); } //把路径中经过的卡箍和分支点都标记成使用过的状态 void markPoint(){ for(int i=0;iused=true; pb->pc1->used=true; pb->pc2->used=true; } else if(tp.type==0){ clipSet.c[tp.ref].used=true; } } } //固定所有经过的分支点 void fixBranchPoint(){ for(int i=0;ifix(); } } } //检查路径合法性 void illegalCheck(){ mapvis; for(int i=0;ifixBranchPoint(); //this->processDir(); this->markPoint(); } //翻转整条路径 void reverse(){ std::reverse(points.begin(),points.end()); assert(inOut.size()==points.size()); for(int i=0;i