📄 dxf_datas.cpp
字号:
{
m_cInf.type=m_cNode.NAME;
if(m_cNode.dir==0)
{
m_cInf.sign=0x00000000;
}
if(m_cNode.dir==1)
{
m_cInf.sign=0x00000001;
}
m_cInf.SPNum=m_cNode.SPNum;
m_cInf.BSplineX=new double [m_cNode.SPNum];
m_cInf.BSplineY=new double [m_cNode.SPNum];
for(int k=0;k<=m_cNode.SPNum-1;k++)
{
m_cInf.BSplineX[k]=m_cNode.BSplineX[k];
m_cInf.BSplineY[k]=m_cNode.BSplineY[k];
}
m_cInfArray.Add(m_cInf);
}
if(m_cNode.NAME==0x00060002)
{
m_cInf.type=m_cNode.NAME;
if(m_cNode.dir==0)
{
m_cInf.sign=0x00000001;
}
if(m_cNode.dir==1)
{
m_cInf.sign=0x00000003;
}
m_cInf.x=(float)(m_cNode.x);
m_cInf.y=(float)(m_cNode.y);
m_cInf.angle1=(float)(m_cNode.angle1);
m_cInf.angle2=(float)(m_cNode.angle2);
m_cInf.r=(float)(m_cNode.r);
m_cInfArray.Add(m_cInf);
}
}
if(sp_flag==1)
{
delete m_cNode.BSplineX;
delete m_cNode.BSplineY;
}
}
return 1;
}//FileName == NULL
else return 2;
}
void ChangeGradation(double x0, double y0)
{
int Num,j;
double x,x1,y,y1,r,angle1,angle2;
double pi=3.1415926/180;
Num=m_cNodeInfArray.GetSize();
for(j=1;j<=(Num-1);j++)
{
if (j!=m_nFlag)
{
m_cNodeInf=m_cNodeInfArray.GetAt(j);
if (m_cNodeInf.NAME=="LINE")
{
x=m_cNodeInf.x;
y=m_cNodeInf.y;
x1=m_cNodeInf.x1;
y1=m_cNodeInf.y1;
if (fabs(x0-x)<=0.01 && fabs(y0-y)<=0.01)
{
m_cNode.NAME=0x00030001;
m_cNode.dir=m_cNodeInf.dir;
m_cNode.angle1=m_cNodeInf.angle1;
m_cNode.angle2=m_cNodeInf.angle2;
m_cNode.x=m_cNodeInf.x;
m_cNode.x1=m_cNodeInf.x1;
m_cNode.y=m_cNodeInf.y;
m_cNode.y1=m_cNodeInf.y1;
m_cNode.z=m_cNodeInf.z;
m_cNode.z1=m_cNodeInf.z1;
m_cNode.r=m_cNodeInf.r;
m_cNodeArray.Add(m_cNode);
m_Endx=x1;
m_Endy=y1;
m_nFlag=j;
break;
}
if (fabs(x0-x1)<=0.01 && fabs(y0-y1)<=0.01)
{
m_cNode.NAME=0x00030001;
m_cNode.dir=m_cNodeInf.dir;
m_cNode.angle1=m_cNodeInf.angle1;
m_cNode.angle2=m_cNodeInf.angle2;
m_cNode.x=m_cNodeInf.x1;
m_cNode.x1=m_cNodeInf.x;
m_cNode.y=m_cNodeInf.y1;
m_cNode.y1=m_cNodeInf.y;
m_cNode.z=m_cNodeInf.z1;
m_cNode.z1=m_cNodeInf.z;
m_cNode.r=m_cNodeInf.r;
m_cNodeArray.Add(m_cNode);
m_Endx=x;
m_Endy=y;
m_nFlag=j;
break;
}
}
//////////////////////// Spline ////////////////////////////
if (m_cNodeInf.NAME=="SPLINE")
{
sp_flag=1;
x=*((double *)(&m_cNodeInf.BSplineX[0]));
y=*((double *)(&m_cNodeInf.BSplineY[0]));
x1=*((double *)(&m_cNodeInf.BSplineX[m_cNodeInf.SPNum-1]));
y1=*((double *)(&m_cNodeInf.BSplineY[m_cNodeInf.SPNum-1]));
if (fabs(x0-x)<=0.01 && fabs(y0-y)<=0.01)
{
m_cNode.NAME=0x00090001;
m_cNode.dir=m_cNodeInf.dir;
m_cNode.SPNum=m_cNodeInf.SPNum;
m_cNode.BSplineX=new double [m_cNodeInf.SPNum];
m_cNode.BSplineY=new double [m_cNodeInf.SPNum];
for(int k=0;k<=m_cNodeInf.SPNum-1;k++)
{
m_cNode.BSplineX[k]=m_cNodeInf.BSplineX[k];
m_cNode.BSplineY[k]=m_cNodeInf.BSplineY[k];
}
m_cNodeArray.Add(m_cNode);
m_Endx=x1;
m_Endy=y1;
m_nFlag=j;
break;
}
if (fabs(x0-x1)<=0.01 && fabs(y0-y1)<=0.01)
{
m_cNode.NAME=0x00090001;
m_cNode.dir=1;
m_cNode.SPNum=m_cNodeInf.SPNum;
m_cNode.BSplineX=new double [m_cNodeInf.SPNum];
m_cNode.BSplineY=new double [m_cNodeInf.SPNum];
for(int k=0;k<=m_cNodeInf.SPNum-1;k++)
{
m_cNode.BSplineX[k]=m_cNodeInf.BSplineX[k];
m_cNode.BSplineY[k]=m_cNodeInf.BSplineY[k];
}
m_cNodeArray.Add(m_cNode);
m_Endx=x;
m_Endy=y;
m_nFlag=j;
break;
}
}
//********************************************************************//
if (m_cNodeInf.NAME=="ARC")
{
angle1=m_cNodeInf.angle1;
angle2=m_cNodeInf.angle2;
r=m_cNodeInf.r;
x=m_cNodeInf.x+r*cos(angle1*pi);
y=m_cNodeInf.y+r*sin(angle1*pi);
x1=m_cNodeInf.x+r*cos(angle2*pi);
y1=m_cNodeInf.y+r*sin(angle2*pi);
if(fabs(x0-x)<=0.01 && fabs(y0-y)<=0.01)
{
m_cNode.NAME=0x00060002;
m_cNode.dir=m_cNodeInf.dir;
m_cNode.angle1=m_cNodeInf.angle1;
m_cNode.angle2=m_cNodeInf.angle2;
m_cNode.x=m_cNodeInf.x;
m_cNode.x1=m_cNodeInf.x1;
m_cNode.y=m_cNodeInf.y;
m_cNode.y1=m_cNodeInf.y1;
m_cNode.z=m_cNodeInf.z;
m_cNode.z1=m_cNodeInf.z1;
m_cNode.r=m_cNodeInf.r;
m_cNodeArray.Add(m_cNode);
m_Endx=x1;
m_Endy=y1;
m_nFlag=j;
break;
}
if(fabs(x0-x1)<=0.01 && fabs(y0-y1)<=0.01)
{
m_cNode.NAME=0x00060002;
m_cNode.dir=0;
m_cNode.angle1=m_cNodeInf.angle2;
m_cNode.angle2=m_cNodeInf.angle1;
m_cNode.x=m_cNodeInf.x;
m_cNode.x1=m_cNodeInf.x1;
m_cNode.y=m_cNodeInf.y;
m_cNode.y1=m_cNodeInf.y1;
m_cNode.z=m_cNodeInf.z;
m_cNode.z1=m_cNodeInf.z1;
m_cNode.r=m_cNodeInf.r;
m_cNodeArray.Add(m_cNode);
m_Endx=x;
m_Endy=y;
m_nFlag=j;
break;
}
}
}//if
}//for
}
double GF_GetXMax()
{
int Num,i;
double x,y,x1,y1;
Num=m_cPointInfArray.GetSize();
m_cPointInf=m_cPointInfArray.GetAt(0);
x=m_cPointInf.x;
y=m_cPointInf.y;
m_cPointInf=m_cPointInfArray.GetAt(1);
x1=m_cPointInf.x;
y1=m_cPointInf.y;
if (x<x1)
{
m_Maxx=x1;
m_Minx=x;
}
else
{
m_Maxx=x;
m_Minx=x1;
}
if (y<y1)
{
m_Maxy=y1;
m_Miny=y;
}
else
{
m_Maxy=y;
m_Miny=y1;
}
for (i=2;i<=(Num-1);i++)
{
m_cPointInf=m_cPointInfArray.GetAt(i);
x=m_cPointInf.x;
y=m_cPointInf.y;
if (x<m_Minx)
m_Minx=x;
if (x>m_Maxx)
m_Maxx=x;
if (y<m_Miny)
m_Miny=y;
if (y>m_Maxy)
m_Maxy=y;
}
return m_Maxx;
}
double GF_GetXMin()
{
int Num,i;
double x,y,x1,y1;
Num=m_cPointInfArray.GetSize();
m_cPointInf=m_cPointInfArray.GetAt(0);
x=m_cPointInf.x;
y=m_cPointInf.y;
m_cPointInf=m_cPointInfArray.GetAt(1);
x1=m_cPointInf.x;
y1=m_cPointInf.y;
if (x<x1)
{
m_Maxx=x1;
m_Minx=x;
}
else
{
m_Maxx=x;
m_Minx=x1;
}
if (y<y1)
{
m_Maxy=y1;
m_Miny=y;
}
else
{
m_Maxy=y;
m_Miny=y1;
}
for (i=2;i<=(Num-1);i++)
{
m_cPointInf=m_cPointInfArray.GetAt(i);
x=m_cPointInf.x;
y=m_cPointInf.y;
if (x<m_Minx)
m_Minx=x;
if (x>m_Maxx)
m_Maxx=x;
if (y<m_Miny)
m_Miny=y;
if (y>m_Maxy)
m_Maxy=y;
}
return m_Minx;
}
double GF_GetYMax()
{
int Num,i;
double x,y,x1,y1;
Num=m_cPointInfArray.GetSize();
m_cPointInf=m_cPointInfArray.GetAt(0);
x=m_cPointInf.x;
y=m_cPointInf.y;
m_cPointInf=m_cPointInfArray.GetAt(1);
x1=m_cPointInf.x;
y1=m_cPointInf.y;
if (x<x1)
{
m_Maxx=x1;
m_Minx=x;
}
else
{
m_Maxx=x;
m_Minx=x1;
}
if (y<y1)
{
m_Maxy=y1;
m_Miny=y;
}
else
{
m_Maxy=y;
m_Miny=y1;
}
for (i=2;i<=(Num-1);i++)
{
m_cPointInf=m_cPointInfArray.GetAt(i);
x=m_cPointInf.x;
y=m_cPointInf.y;
if (x<m_Minx)
m_Minx=x;
if (x>m_Maxx)
m_Maxx=x;
if (y<m_Miny)
m_Miny=y;
if (y>m_Maxy)
m_Maxy=y;
}
return m_Maxy;
}
double GF_GetYMin()
{
int Num,i;
double x,y,x1,y1;
Num=m_cPointInfArray.GetSize();
m_cPointInf=m_cPointInfArray.GetAt(0);
x=m_cPointInf.x;
y=m_cPointInf.y;
m_cPointInf=m_cPointInfArray.GetAt(1);
x1=m_cPointInf.x;
y1=m_cPointInf.y;
if (x<x1)
{
m_Maxx=x1;
m_Minx=x;
}
else
{
m_Maxx=x;
m_Minx=x1;
}
if (y<y1)
{
m_Maxy=y1;
m_Miny=y;
}
else
{
m_Maxy=y;
m_Miny=y1;
}
for (i=2;i<=(Num-1);i++)
{
m_cPointInf=m_cPointInfArray.GetAt(i);
x=m_cPointInf.x;
y=m_cPointInf.y;
if (x<m_Minx)
m_Minx=x;
if (x>m_Maxx)
m_Maxx=x;
if (y<m_Miny)
m_Miny=y;
if (y>m_Maxy)
m_Maxy=y;
}
return m_Miny;
}
unsigned int GF_GetCurDataType()
{
m_cInf=m_cInfArray.GetAt(m_nCurNum);
type=m_cInf.type;
return type;
}
unsigned int GF_GetCurDataFlag()
{
m_cInf=m_cInfArray.GetAt(m_nCurNum);
sign=m_cInf.sign;
return sign;
}
int GF_GetCurDataLen()
{
m_cInf=m_cInfArray.GetAt(m_nCurNum);
if(m_cInf.type==0x00030001)
return 4;
if(m_cInf.type==0x00060002)
return 7;
if(m_cInf.type==0x00090001)
return m_cInf.SPNum;
else return 0;
}
int GF_GetSingleGraphDataLen()
{
return m_cSingleGhArray.GetSize();
}
int GF_GetSingleGraphData(unsigned int * Data,int nIndex)
{
m_cSingleGh = m_cSingleGhArray.GetAt(nIndex-1);
if(m_cSingleGh.NAME == "CIRCLE")
{
Data[0] = 0x00a00001;
Data[1] = *((unsigned int *)(&m_cSingleGh.x));
Data[2] = *((unsigned int *)(&m_cSingleGh.y));
Data[3] = *((unsigned int *)(&m_cSingleGh.r));
}
if(m_cSingleGh.NAME == "LWPOLYLINE")
{
Data[0] = 0x00a00002;
Data[1] = *((unsigned int *)(&m_cSingleGh.x));
Data[2] = *((unsigned int *)(&m_cSingleGh.y));
Data[3] = 0;
}
return 0;
}
int GF_GetCurData(unsigned int *Data,double *SPlineX,double *SPlineY)
{
m_cInf=m_cInfArray.GetAt(m_nCurNum);
if(m_cInf.type==0x00030001)
{
Data[0]=m_cInf.type;
Data[1]=m_cInf.sign;
Data[2]=*((unsigned int *)(&m_cInf.x));
Data[3]=*((unsigned int *)(&m_cInf.y));
}
if(m_cInf.type==0x00060002)
{
Data[0]=m_cInf.type;
Data[1]=m_cInf.sign;
Data[2]=*((unsigned int *)(&m_cInf.x));
Data[3]=*((unsigned int *)(&m_cInf.y));
Data[4]=*((unsigned int *)(&m_cInf.angle1));
Data[5]=*((unsigned int *)(&m_cInf.angle2));
Data[6]=*((unsigned int *)(&m_cInf.r));
}
if(m_cInf.type==0x00090001)
{
Data[0]=m_cInf.type;
Data[1]=m_cInf.sign;
Data[2]=*((unsigned int *)(&m_cInf.SPNum));
for(int i=0;i<=m_cInf.SPNum-1;i++)
{
SPlineX[i]=m_cInf.BSplineX[i];
SPlineY[i]=m_cInf.BSplineY[i];
}
}
return 0;
}
int GF_Release()
{
if(sp_flag==1)
{
delete m_cInf.BSplineX;
delete m_cInf.BSplineY;
}
return 0;
}
int GF_MoveNext()
{
m_nDatasNum=m_cInfArray.GetSize();
if(m_nCurNum<(m_nDatasNum-1))
{
m_nCurNum++;
return m_nCurNum;
}
else return -2;
}
int GF_Reset()
{
m_nCurNum=0;
return m_nCurNum;
}
BOOL GF_CheckSingleGh()
{
return m_bSingleGraph;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -