⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dxf_datas.cpp

📁 DXF数据提取
💻 CPP
📖 第 1 页 / 共 2 页
字号:
				{
					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 + -