initial upload
This commit is contained in:
139
archive/grd2msh/main.cpp
Normal file
139
archive/grd2msh/main.cpp
Normal file
@@ -0,0 +1,139 @@
|
||||
#include "func.h"
|
||||
|
||||
void disp_help()
|
||||
{
|
||||
cout
|
||||
<<"grd2msh 1.0 - convert a Surfer6's grd file or a xyz file into Gmsh .msh file for 3D Mapping"<<endl<<endl
|
||||
<<"syntax: grd2msh <grd_file>|{<xyz_file> -i<x_interval>/<y_interval>}|{<xyz_file> -I<N>/<M>} [-rWGS84|EarthR|<ref-r>/<ref-R>] [-m<magnify_factor>] [-o<msh_file>]"<<endl
|
||||
<<"-i\tintervals in x and y directions for the xyz file"<<endl
|
||||
<<"-I\tmartax number in x and y directions for the xyz file"<<endl
|
||||
<<"-r\treference system of the input file, the data will be taken as altitudes with respect to the reference system"<<endl
|
||||
<<"-m\tmagnify factor of z values of the grid data"<<endl
|
||||
<<"-o\tGmsh's mesh file name. The input filename will be used if -o is absent"<<endl<<endl
|
||||
<<"example: grd2msh test.grd -m1.0 -otest.msh"<<endl;
|
||||
}
|
||||
|
||||
int main(int argc, char const *argv[])
|
||||
{
|
||||
char command_type[1024] = {0};
|
||||
char inputname[1024] = {0};
|
||||
char mshname[1024] = {0};
|
||||
char nametype[1024] = {0};
|
||||
char refSystem[1024] = "NULL";
|
||||
double mg_factor = 1.0;
|
||||
double dx = 0,dy = 0;
|
||||
int n_num = -1, m_num = -1;
|
||||
int Run = 1;
|
||||
int filetype;
|
||||
|
||||
if (argc==1)
|
||||
{
|
||||
disp_help();
|
||||
}
|
||||
else
|
||||
{
|
||||
sscanf(argv[1],"%[^.]%s",inputname,nametype);//按格式读入文件名与扩展名
|
||||
if(!strcmp(inputname,""))//检查文件名是否为空
|
||||
{
|
||||
cout<<BOLDRED<<"==> "<<RESET<<"bad syntax: "<<argv[1]<<endl;
|
||||
Run = 0;
|
||||
}
|
||||
|
||||
if (!strcmp(nametype,".grd"))
|
||||
{
|
||||
filetype = 1;
|
||||
sscanf(argv[1],"%s",inputname);
|
||||
}
|
||||
else if (!strcmp(nametype,".dat")||!strcmp(nametype,".xyz"))
|
||||
{
|
||||
filetype = 2;
|
||||
sscanf(argv[1],"%s",inputname);
|
||||
}
|
||||
else
|
||||
{
|
||||
cout<<BOLDRED<<"==> "<<RESET<<"unrecognized file type: "<<nametype<<endl;
|
||||
Run = 0;
|
||||
}
|
||||
|
||||
for (int i = 2; i < argc; i++)
|
||||
{
|
||||
sscanf(argv[i],"%2s",command_type);
|
||||
if (!strcmp(command_type,MAGNIFY))
|
||||
{
|
||||
if (1!=sscanf(argv[i],"%*2s%lf",&mg_factor))
|
||||
{
|
||||
cout<<BOLDRED<<"==> "<<RESET<<"bad syntax: "<<argv[i]<<endl;
|
||||
Run = 0;
|
||||
}
|
||||
}
|
||||
else if(!strcmp(command_type,OUTMSH))//命令为文件名设置符
|
||||
{
|
||||
sscanf(argv[i],"%*2s%s",mshname);//按格式读入文件名与扩展名
|
||||
if(!strcmp(mshname,""))//检查文件名是否为空
|
||||
{
|
||||
cout<<BOLDRED<<"==> "<<RESET<<"bad syntax: "<<argv[i]<<endl;
|
||||
Run = 0;
|
||||
}
|
||||
}
|
||||
else if (!strcmp(command_type,INTERVAL))
|
||||
{
|
||||
if(2!=sscanf(argv[i],"%*2s%lf/%lf",&dx,&dy))
|
||||
{
|
||||
cout<<BOLDRED<<"==> "<<RESET<<"bad syntax: "<<argv[i]<<endl;
|
||||
Run = 0;
|
||||
}
|
||||
}
|
||||
else if (!strcmp(command_type,HL))
|
||||
{
|
||||
if(2!=sscanf(argv[i],"%*2s%d/%d",&n_num,&m_num))
|
||||
{
|
||||
cout<<BOLDRED<<"==> "<<RESET<<"bad syntax: "<<argv[i]<<endl;
|
||||
Run = 0;
|
||||
}
|
||||
}
|
||||
else if (!strcmp(command_type,REFER))
|
||||
{
|
||||
if(1!=sscanf(argv[i],"%*2s%s",refSystem))
|
||||
{
|
||||
cout<<BOLDRED<<"==> "<<RESET<<"bad syntax: "<<argv[i]<<endl;
|
||||
Run = 0;
|
||||
}
|
||||
}
|
||||
else //未定义的命令符
|
||||
{
|
||||
cout<<BOLDRED<<"==> "<<RESET<<"unrecognized syntax: "<<argv[i]<<endl;
|
||||
Run = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (!strcmp(inputname,""))
|
||||
{
|
||||
cout<<BOLDRED<<"==> "<<RESET<<"error: bad syntax"<<endl;
|
||||
Run = 0;
|
||||
}
|
||||
else if (!strcmp(mshname,""))
|
||||
{
|
||||
char temp[1024] = {0};
|
||||
char temp2[1024] = {0};
|
||||
sscanf(inputname,"%[^.]%s",temp,temp2);
|
||||
strcpy(mshname,temp);
|
||||
strcat(mshname,".msh");
|
||||
}
|
||||
|
||||
if ((filetype==2&&dx==0)||(filetype==2&&dy==0))
|
||||
{
|
||||
if ((filetype==2&&n_num==-1)||(filetype==2&&m_num==-1))
|
||||
{
|
||||
cout<<BOLDRED<<"==> "<<RESET<<"error: bad syntax"<<endl;
|
||||
Run = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (Run)
|
||||
{
|
||||
func F1;
|
||||
F1.run(inputname,mshname,refSystem,mg_factor,filetype,dx,dy,n_num,m_num);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
Reference in New Issue
Block a user