#ifndef _TETGEN2GMSH_H #define _TETGEN2GMSH_H #include "data_func.h" class tetgen2gmsh { public: tetgen2gmsh(); ~tetgen2gmsh(); int call_back(string,string);//响应函数 int read_tetgen(string);//读取tetgen文件 int write_gmsh(string);//写入gmsh(.msh)文件 private: int node_sum;//顶点数量与指针 vertex *vert; int edge_sum;//边数量与指针 edge *edg; int face_sum;//面数量与指针 face *fac; int tetra_sum;//四面体数量与指针 tetra *tet; string tetgen_name;//tetgen文件名 string gmsh_name;//gmsh文件名 }; tetgen2gmsh::tetgen2gmsh()//初始化指针 { vert=NULL; edg=NULL; fac=NULL; tet=NULL; } tetgen2gmsh::~tetgen2gmsh()//销毁动态数组 { if(vert!=NULL) delete []vert; if(edg!=NULL) delete []edg; if(fac!=NULL) delete []fac; if(tet!=NULL) delete []tet; } int tetgen2gmsh::call_back(string tetgen_name,string gmsh_name) { if(access((tetgen_name + ".node").c_str(),F_OK)||access((tetgen_name + ".edge").c_str(),F_OK) ||access((tetgen_name + ".face").c_str(),F_OK)||access((tetgen_name + ".ele").c_str(),F_OK)) { cout<<"tetgen files are incomplete..."<>node_sum>>temp>>temp>>temp>>first_no; node_in.seekg(-1,ios::cur); vert = new vertex [node_sum]; if(first_no==1) { for(int i=0;i>vert[i].No>>vert[i].vt.x>>vert[i].vt.y>>vert[i].vt.z>>temp; } } else { for(int i=0;i>vert[i].No>>vert[i].vt.x>>vert[i].vt.y>>vert[i].vt.z; vert[i].No+=1; } } edge_in>>edge_sum>>temp; edg = new edge [edge_sum]; if(first_no==1) { for(int i=0;i>edg[i].No>>edg[i].ver[0]>>edg[i].ver[1]>>temp; } } else { for(int i=0;i>edg[i].No>>edg[i].ver[0]>>edg[i].ver[1]>>temp; edg[i].ver[0]+=1; edg[i].ver[1]+=1; } } face_in>>face_sum>>temp; fac = new face [face_sum]; if(first_no==1) { for(int i=0;i>fac[i].No>>fac[i].ver[0]>>fac[i].ver[1]>>fac[i].ver[2]>>temp; } } else { for(int i=0;i>fac[i].No>>fac[i].ver[0]>>fac[i].ver[1]>>fac[i].ver[2]>>temp; fac[i].ver[0]+=1; fac[i].ver[1]+=1; fac[i].ver[2]+=1; } } ele_in>>tetra_sum>>temp>>temp; tet = new tetra [tetra_sum]; if(first_no==1) { for(int i=0;i>tet[i].No>>tet[i].ver[0]>>tet[i].ver[1]>>tet[i].ver[2]>>tet[i].ver[3]; } } else { for(int i=0;i>tet[i].No>>tet[i].ver[0]>>tet[i].ver[1]>>tet[i].ver[2]>>tet[i].ver[3]; tet[i].ver[0]+=1; tet[i].ver[1]+=1; tet[i].ver[2]+=1; tet[i].ver[3]+=1; } } node_in.close(); ele_in.close(); face_in.close(); edge_in.close(); return 0; } int tetgen2gmsh::write_gmsh(string filename)//写入gmsh文件 { int count = 1; string outname = filename + ".msh"; const char* outname_c = outname.c_str(); ofstream msh_out(outname_c); if(!msh_out) { cout<<"Can not create "<