You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

77 lines
1.5 KiB

#pragma once
#ifdef _WIN32
#ifdef WIREROUTINGDLL_EXPORTS // VisualStudio DLL 项目模板会将 <PROJECTNAME>_EXPORTS 添加到定义预处理器宏。
#define BRANCH_TREE_API __declspec(dllexport) // _WIN32
#else
#define BRANCH_TREE_API __declspec(dllimport)
#endif
#else
#define BRANCH_TREE_API
#endif
#include "BasicEdge.h"
#include<cmath>
#include<vector>
#include<queue>
#include<map>
#include<iostream>
#include<fstream>
#include<sstream>
using namespace std;
extern BasicEdge BRANCH_TREE_API basicEdge;
struct BRANCH_TREE_API Edge{
vector<string> wirenames;
vector<double> d;
int to;
double dis;
void clear();
};
//分支树结构,把各种路径信息处理成分支信息,并输出给CATIA
struct BRANCH_TREE_API BranchTree{
ClipSet* pclipSet; //指向卡箍集
double dia; //临时变量
vector<Edge>edge[N]; //边
P points[MAXPointNum]; //点
int f[N],sz[N]; //并查集信息
int pre[N],vis[N],st[N];
bool endpoint[N],hashuan;
//Bundle bundles[N];
//vector<int> bundlesOfClip[N];
bool record;
vector<int>pathpoints;
map<P,int> nodeid; //给点映射内部编号
int cnt,bfs; //点的总数,以及bfs的次数
//int bundleid,branchPointNum;
BranchTree();
//初始化
void init();
void startRecord();
void endRecord();
int getid(P& p);
int getrt(int x);
void merge(int x, int y);
bool check(P &p);
void addEdge(int x, int y, vector<string> namelist);
bool hasEdge(int x, int y);
vector<int> BFS(int u, int v);
void newPath(vector<int>& path, vector<string> namelist);
//添加一条路径,返回去除环路的路径
Path addPath(Path& path);
};