Click here to Skip to main content
15,896,912 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
QuestionWhy commercial software does not have main()? Is it in the Windows? Pin
Link260024-Dec-03 2:20
Link260024-Dec-03 2:20 
AnswerRe: Why commercial software does not have main()? Is it in the Windows? Pin
Ian Darling24-Dec-03 2:32
Ian Darling24-Dec-03 2:32 
GeneralRe: Why commercial software does not have main()? Is it in the Windows? Pin
Link260024-Dec-03 3:07
Link260024-Dec-03 3:07 
GeneralHello Everyone! Pin
skylonely24-Dec-03 2:19
skylonely24-Dec-03 2:19 
GeneralRe: Hello Everyone! Pin
Link260024-Dec-03 2:23
Link260024-Dec-03 2:23 
GeneralCCriticalSection in Win CE Pin
Anonymous24-Dec-03 1:39
Anonymous24-Dec-03 1:39 
GeneralReading DXF File Pin
cithu24-Dec-03 0:51
cithu24-Dec-03 0:51 
GeneralRe: Reading DXF File Pin
peiman24-Dec-03 7:58
peiman24-Dec-03 7:58 
this is my beta code use it if it's useable for u (up to DXF14)
////////////////////////////////////////////////////////////////
_READ.h: interface for the CDXF_READ class.<br />
//<br />
//////////////////////////////////////////////////////////////////////<br />
<br />
#if !defined(AFX_DXF_READ_H__0C34F7F9_A3E2_11D2_B76C_CAED36AA095C__INCLUDED_)<br />
#define AFX_DXF_READ_H__0C34F7F9_A3E2_11D2_B76C_CAED36AA095C__INCLUDED_<br />
<br />
#if _MSC_VER > 1000<br />
#pragma once<br />
#endif // _MSC_VER > 1000<br />
<br />
/////////warnnigs < 1000<br />
#define ER_NOTABLEHEADER   -993<br />
#define ER_VOIDBLOCKS	   -994<br />
#define ER_VOIDHEADER	   -995<br />
#define ER_VOIDTABLES      -996<br />
#define ER_FILECORRUPT     -997<br />
#define ER_NOENDSEC		   -998<br />
#define ER_MISSEDENDOFFILE -999<br />
//////////////////<br />
#define ER_WARNNIG         -1000<br />
/////////errors   > 1000<br />
#define ER_INVALIDFILENAME -1001<br />
#define ER_NOSUCHFILE      -1002<br />
#define ER_BADVALUE		   -1003<br />
#define ER_VOIDENTITY      -1004<br />
#define ER_BADTABLES       -1005<br />
<br />
<br />
#include "..\drw_dxf.h"<br />
<br />
class CDXF_FILE <br />
{<br />
	CStdioFile m_file;<br />
	CString    m_str; <br />
public :<br />
	int Open(LPCSTR);<br />
	void Close();<br />
	CDXF_FILE ();<br />
	virtual ~CDXF_FILE ();<br />
<br />
	double	 ReadDouble();<br />
	float	 ReadFloat();<br />
	__int8   ReadInt8();<br />
	__int16  ReadInt16();<br />
	__int32  ReadInt32();<br />
<br />
	BOOL     EndOfFile();<br />
	BOOL     ReadString(CString&);<br />
<br />
private:<br />
	BOOL m_fileColse;<br />
};<br />
<br />
class CDXF_READ  <br />
{<br />
<br />
public:<br />
	BOOL ProcessSystemMsg();<br />
	struct DXF_RECORD<br />
	{<br />
		int what;<br />
		__int8  m_int8;<br />
		__int16 m_int16;<br />
		__int32 m_int32;<br />
		double  m_double;<br />
		float   m_float;<br />
		CString m_string;<br />
	} Rec;<br />
<br />
	int Read_DXF_Line();<br />
	CDXF_READ();<br />
	CDXF_READ(LPCSTR dxf_file);<br />
	virtual ~CDXF_READ();<br />
<br />
	int Process_Free_DXF(LPCSTR dxf_file=NULL);<br />
	int Process_DXF(LPCSTR dxf_file=NULL);<br />
private:<br />
	BOOL GroupCircle;<br />
	BOOL EndOfFileReached;<br />
	BOOL NOT_READ_BEFOR;<br />
	CDXF_FILE fileDXF;<br />
	int Process_EndOfFile();<br />
	int Process_Entites(BOOL READ_SECTION = TRUE);<br />
	int Process_Tables(BOOL READ_SECTION = TRUE);<br />
	int Process_Blocks(BOOL READ_SECTION = TRUE);<br />
	int Process_Header(BOOL READ_SECTION = TRUE);<br />
	int Open_DXF_File();<br />
////////////tables   section<br />
	int			Parse_LayerInfo();<br />
	int			Parse_TableItemInfo();<br />
////////////entities section<br />
	int			Parse_LineInfo();<br />
	int			Parse_PolyLineInfo();<br />
	int			Parse_LWPolyLineInfo();<br />
	int			Parse_CircleInfo();<br />
	int			Parse_ArcInfo();<br />
	int			Parse_TextInfo();<br />
	int			Parse_MTextInfo();<br />
	int			Parse_SolidInfo();<br />
	int			Parse_PointInfo();<br />
	int			Parse_InsertInfo();<br />
	int			Parse_SeqendInfo();<br />
	int			Parse_VertexInfo();<br />
	int			Parse_EllipseInfo();<br />
	int			Parse_UnknownInfo();<br />
<br />
	CString sDXF_FILE;<br />
	__int16 GetLayer(LPCSTR ln);<br />
<br />
protected:<br />
	long Line_No_Dxf_Read;<br />
	int LayerCount;<br />
	DXF_LAYER *LayerArray[512] , Layer;<br />
	CString CurrentGroupName;<br />
	struct DXF_POINT		Point;<br />
	struct DXF_LINE			Line;<br />
	struct DXF_CIRCLE		ArcCircle;<br />
	struct DXF_SOLID		Solid;<br />
	struct DXF_TEXT			Text;<br />
	struct DXF_MTEXT		MText;<br />
	struct DXF_LWPOLYLINE	LWPolyLine;<br />
	struct DXF_POLYLINE		PolyLine;<br />
	struct DXF_VERTEX		Vertex;<br />
	struct DXF_INSERT		Insert;<br />
	struct DXF_TABLES	    Tables;<br />
	struct DXF_ELLIPSE      Ellipse;<br />
////////////tables   section<br />
	virtual void	Handle_LayerInfo() = 0 ;<br />
////////////entities section<br />
	virtual void	Handle_LineInfo() = 0 ;<br />
	virtual void	Handle_PolyLineInfo() = 0 ;<br />
	virtual void	Handle_LWPolyLineInfo() = 0;<br />
	virtual void	Handle_CircleInfo() = 0 ;<br />
	virtual void	Handle_ArcInfo() = 0 ;<br />
	virtual void	Handle_TextInfo() = 0 ;<br />
	virtual void	Handle_MTextInfo() = 0 ;<br />
	virtual void	Handle_SolidInfo() = 0 ;<br />
	virtual void	Handle_PointInfo() = 0 ;<br />
	virtual void	Handle_InsertInfo() = 0 ;<br />
	virtual void	Handle_SeqendInfo() = 0 ;<br />
	virtual void	Handle_VertexInfo() = 0 ;<br />
	virtual void	Handle_EllipseInfo() = 0 ;<br />
	virtual void	Handle_UnknownInfo() = 0 ;<br />
<br />
};<br />
<br />
#endif // !defined(AFX_DXF_READ_H__0C34F7F9_A3E2_11D2_B76C_CAED36AA095C__INCLUDED_)

************************************************************************
// DXF_READ.cpp: implementation of the CDXF_READ class.<br />
//<br />
//////////////////////////////////////////////////////////////////////<br />
<br />
#include "stdafx.h"<br />
#include "DXF_IN.h"<br />
#include "DXF_READ.h"<br />
//#include "ThrdCore.h"<br />
<br />
#ifdef _DEBUG<br />
#undef THIS_FILE<br />
static char THIS_FILE[]=__FILE__;<br />
#define new DEBUG_NEW<br />
#endif<br />
<br />
//////////////////////////////////////////////////////////////////////<br />
// Construction/Destruction<br />
//////////////////////////////////////////////////////////////////////<br />
CDXF_FILE::CDXF_FILE()<br />
{<br />
	m_fileColse = TRUE;<br />
}<br />
CDXF_FILE::~CDXF_FILE()<br />
{<br />
	if(!m_fileColse)<br />
		m_file.Close();<br />
}<br />
void CDXF_FILE::Close()<br />
{<br />
	m_fileColse = TRUE;<br />
	m_file.Close();<br />
}<br />
int CDXF_FILE::Open(LPCSTR sDXF_FILE)<br />
{<br />
	CFileException e;<br />
	if( !m_file.Open(sDXF_FILE,CFile::modeRead|CFile::typeText, &e ) )<br />
	{<br />
#ifdef _DEBUG<br />
	   afxDump << "File could not be opened " << e.m_cause << "\n";<br />
#endif<br />
	   return ER_NOSUCHFILE;<br />
	}<br />
	m_fileColse = FALSE;<br />
	return 0;<br />
}<br />
double	 CDXF_FILE::ReadDouble()<br />
{<br />
	char *p;<br />
	m_file.ReadString(m_str);<br />
	m_str.TrimRight();<br />
	return strtod(m_str,&p);<br />
}<br />
float	 CDXF_FILE::ReadFloat()<br />
{<br />
	m_file.ReadString(m_str);<br />
	m_str.TrimRight();<br />
	return (float)atof(m_str);<br />
}<br />
__int8   CDXF_FILE::ReadInt8()<br />
{<br />
	return (__int8)ReadInt32();<br />
}<br />
__int16  CDXF_FILE::ReadInt16()<br />
{<br />
	return (__int16)ReadInt32();<br />
}<br />
__int32  CDXF_FILE::ReadInt32()<br />
{<br />
	char *p;<br />
	m_file.ReadString(m_str);<br />
	m_str.TrimLeft();<br />
	return strtol(m_str,&p,10);<br />
}<br />
BOOL     CDXF_FILE::ReadString(CString& m_Str)<br />
{<br />
	BOOL a=m_file.ReadString(m_str);<br />
	m_Str = m_str;<br />
	return a;<br />
}<br />
BOOL     CDXF_FILE::EndOfFile()<br />
{<br />
	return BOOL( feof(m_file.m_pStream) );<br />
}<br />
<br />
//////////////////////////////////////////////////////<br />
int CDXF_READ::Open_DXF_File()<br />
{<br />
	return fileDXF.Open(sDXF_FILE);<br />
}<br />
<br />
CDXF_READ::CDXF_READ()<br />
{<br />
	Line_No_Dxf_Read =0;<br />
	GroupCircle = FALSE;<br />
	EndOfFileReached = FALSE ;<br />
	LayerCount =0;<br />
	NOT_READ_BEFOR = TRUE;<br />
	sDXF_FILE="";<br />
}<br />
<br />
CDXF_READ::CDXF_READ(LPCSTR dxf_file)<br />
{<br />
	Line_No_Dxf_Read =0;<br />
	GroupCircle = FALSE;<br />
	EndOfFileReached = FALSE ;<br />
	LayerCount =0;<br />
	NOT_READ_BEFOR = TRUE;<br />
	sDXF_FILE=dxf_file;<br />
}<br />
<br />
CDXF_READ::~CDXF_READ()<br />
{<br />
	if(LayerCount )<br />
		for(;LayerCount>0;)<br />
			delete LayerArray[--LayerCount];<br />
	<br />
	fileDXF.Close();<br />
<br />
	((CDXF_IN_App*) AfxGetApp())->bDoingBackgroundProcessing = FALSE;<br />
}<br />
<br />
int CDXF_READ::Process_DXF(LPCSTR dxf_file)<br />
{<br />
	if(dxf_file!=NULL)<br />
		sDXF_FILE=dxf_file;<br />
	else if (sDXF_FILE.IsEmpty())<br />
		return ER_INVALIDFILENAME ;<br />
	<br />
	int result; <br />
	result=Open_DXF_File();<br />
	if(result < ER_WARNNIG)<br />
		return result;<br />
<br />
<br />
	result=Process_Header();<br />
	if(result < ER_WARNNIG)<br />
		return result;<br />
<br />
	result=Process_Tables();<br />
	if(result < ER_WARNNIG)<br />
		return result;<br />
<br />
	result=Process_Blocks();<br />
	if(result < ER_WARNNIG)<br />
		return result;<br />
<br />
	result=Process_Entites();<br />
	if(result < ER_WARNNIG)<br />
		return result;<br />
<br />
	result=Process_EndOfFile();<br />
	if(result < ER_WARNNIG)<br />
		return result;<br />
<br />
	return 0;<br />
}<br />
int CDXF_READ::Process_Free_DXF(LPCSTR dxf_file)<br />
{<br />
	if(dxf_file!=NULL)<br />
		sDXF_FILE=dxf_file;<br />
	else if (sDXF_FILE.IsEmpty())<br />
		return ER_INVALIDFILENAME ;<br />
	<br />
	int result; <br />
	result=Open_DXF_File();<br />
	if(result < ER_WARNNIG)<br />
		return result;<br />
	do<br />
	{<br />
		if(!ProcessSystemMsg())<br />
			return 0;<br />
		if(Read_DXF_Line()!=ER_BADVALUE)<br />
			if(Rec.what==0 && Rec.m_string=="SECTION")<br />
			{<br />
				if(Read_DXF_Line()!=ER_BADVALUE)<br />
				{<br />
					if(Rec.what==2 && Rec.m_string=="HEADER")<br />
					{<br />
						NOT_READ_BEFOR=FALSE;<br />
						result=Process_Header(FALSE);<br />
						if(result < ER_WARNNIG)<br />
							return result;					<br />
					}else<br />
					if(Rec.what==2 && Rec.m_string=="TABLES")<br />
					{<br />
						NOT_READ_BEFOR=FALSE;<br />
						result=Process_Tables(FALSE);<br />
						if(result < ER_WARNNIG)<br />
							return result;					<br />
					}else<br />
					if(Rec.what==2 && Rec.m_string=="BLOCKS")<br />
					{<br />
						NOT_READ_BEFOR=FALSE;<br />
						result=Process_Blocks(FALSE);<br />
						if(result < ER_WARNNIG)<br />
							return result;					<br />
					}else<br />
					if(Rec.what==2 && Rec.m_string=="ENTITIES")<br />
					{<br />
						NOT_READ_BEFOR=FALSE;<br />
						result=Process_Entites(FALSE);<br />
						if(result < ER_WARNNIG)<br />
							return result;					<br />
					}<br />
				}else<br />
				if(Rec.what==0 && Rec.m_string=="EOF")<br />
				{<br />
					EndOfFileReached = TRUE ;<br />
					return 0;<br />
				}<br />
			}<br />
	}while(!fileDXF.EndOfFile());<br />
	return 0;<br />
}<br />
<br />
int CDXF_READ::Process_Header(BOOL READ_SECTION)<br />
{<br />
	BOOL HeaderFound=FALSE;<br />
	if(READ_SECTION)<br />
		while(Read_DXF_Line()!=ER_BADVALUE)<br />
			if((Rec.what==0 && Rec.m_string=="SECTION"))<br />
				break;				<br />
<br />
	if(Read_DXF_Line()!=ER_BADVALUE)<br />
		if(Rec.what==2 && Rec.m_string=="HEADER")<br />
		{<br />
			HeaderFound=TRUE;<br />
		}else<br />
			return ER_VOIDHEADER ;<br />
	do<br />
	{<br />
		if(Read_DXF_Line()!=ER_BADVALUE)<br />
			if(Rec.what==0 && Rec.m_string=="ENDSEC")<br />
			{<br />
				break;<br />
			}<br />
	}while(!fileDXF.EndOfFile());<br />
	return 0;<br />
}<br />
<br />
int CDXF_READ::Process_Tables(BOOL READ_SECTION)<br />
{<br />
	BOOL TablesFound=FALSE;<br />
	if(READ_SECTION)<br />
		while(Read_DXF_Line()!=ER_BADVALUE)<br />
			if((Rec.what==0 && Rec.m_string=="SECTION"))<br />
				break;				<br />
<br />
	if(Read_DXF_Line()!=ER_BADVALUE)<br />
		if(Rec.what==2 && Rec.m_string=="TABLES")<br />
		{<br />
			TablesFound=TRUE;<br />
		}else<br />
			return ER_VOIDENTITY ;<br />
	BOOL TABLE_START = FALSE;<br />
	do<br />
	{<br />
		if(Read_DXF_Line()!=ER_BADVALUE)<br />
			if( Rec.what==0)<br />
			{<br />
				if( Rec.m_string=="TABLE")<br />
				{<br />
					Tables.group[0] = 0;<br />
					Tables.max_item = 0;<br />
					do<br />
					{<br />
						if(Read_DXF_Line()!=ER_BADVALUE)<br />
						{<br />
							switch( Rec.what)<br />
							{<br />
							case 2:<br />
								strncpy(Tables.group , Rec.m_string,255);<br />
								Tables.group[255] = 0;<br />
								break;<br />
							case 70:<br />
								Tables.max_item = Rec.m_int16;<br />
								TABLE_START = TRUE;<br />
								break;<br />
							}<br />
						}	<br />
					}while(!TABLE_START);<br />
					CString GroupName(Tables.group);<br />
					if(GroupName == "DIMSTYLE")<br />
					{ Parse_TableItemInfo() ; }<br />
					else<br />
					if(GroupName == "VPORT")<br />
					{Parse_TableItemInfo() ; }<br />
					else<br />
					if(GroupName == "LTYPE")<br />
					{ Parse_TableItemInfo() ; }<br />
					else<br />
					if(GroupName == "LAYER")<br />
					{<br />
						Parse_LayerInfo();<br />
					}<br />
					else<br />
					if(GroupName == "STYLE")<br />
					{ Parse_TableItemInfo() ; }<br />
					else<br />
					if(GroupName == "UCS")<br />
					{ Parse_TableItemInfo() ; }<br />
					else<br />
					if(GroupName == "VIEW")<br />
					{ Parse_TableItemInfo() ; }<br />
					else<br />
					if(GroupName == "VPORT")<br />
					{ Parse_TableItemInfo() ; }<br />
				}else<br />
				if( Rec.m_string=="ENDTAB" )<br />
				{<br />
					TABLE_START = FALSE;<br />
				}else<br />
				if( Rec.m_string=="ENDSEC")<br />
				{<br />
					//EndSection = TRUE;				<br />
					break;<br />
				}<br />
			}else<br />
				return ER_NOTABLEHEADER;<br />
	}while(!fileDXF.EndOfFile());<br />
<br />
	return 0;<br />
}<br />
<br />
int CDXF_READ::Process_Blocks(BOOL READ_SECTION)<br />
{<br />
	BOOL BlocksFound=FALSE;<br />
	if(READ_SECTION)<br />
		while(Read_DXF_Line()!=ER_BADVALUE)<br />
			if((Rec.what==0 && Rec.m_string=="SECTION"))<br />
				break;				<br />
<br />
	if(Read_DXF_Line()!=ER_BADVALUE)<br />
		if(Rec.what==2 && Rec.m_string=="BLOCKS")<br />
		{<br />
			BlocksFound=TRUE;<br />
		}else<br />
			return ER_VOIDBLOCKS ;<br />
	do<br />
	{<br />
		if(Read_DXF_Line()!=ER_BADVALUE)<br />
			if(Rec.what==0 && Rec.m_string=="ENDSEC")<br />
			{<br />
				break;<br />
			}<br />
	}while(!fileDXF.EndOfFile());<br />
	return 0;<br />
}<br />
<br />
int CDXF_READ::Process_Entites(BOOL READ_SECTION)<br />
{<br />
	BOOL EntityFound=FALSE;<br />
	if(READ_SECTION)<br />
		while(Read_DXF_Line()!=ER_BADVALUE)<br />
			if((Rec.what==0 && Rec.m_string=="SECTION"))<br />
				break;				<br />
<br />
	if(Read_DXF_Line()!=ER_BADVALUE)<br />
		if(Rec.what==2 && Rec.m_string=="ENTITIES")<br />
		{<br />
			EntityFound=TRUE;<br />
		}else<br />
			return ER_VOIDENTITY ;<br />
<br />
<br />
	BOOL EndSection=FALSE;<br />
	do<br />
	{<br />
		if(!ProcessSystemMsg())<br />
			return 0;<br />
		if(Read_DXF_Line()!=ER_BADVALUE)<br />
		if(Rec.what==0)<br />
			if( Rec.m_string=="LINE")<br />
				Parse_LineInfo();<br />
			else <br />
			if( Rec.m_string=="LWPOLYLINE")<br />
				Parse_LWPolyLineInfo();<br />
			else <br />
			if( Rec.m_string=="POLYLINE")<br />
				Parse_PolyLineInfo();<br />
			else <br />
			if( Rec.m_string=="CIRCLE")<br />
				Parse_CircleInfo();<br />
			else <br />
			if( Rec.m_string=="ARC")<br />
				Parse_ArcInfo();<br />
			else <br />
			if( Rec.m_string=="ELLIPSE")<br />
				Parse_EllipseInfo();<br />
			else <br />
			if( Rec.m_string=="TEXT")<br />
				Parse_TextInfo();<br />
			else <br />
			if( Rec.m_string=="MTEXT")<br />
				Parse_MTextInfo();<br />
			else <br />
			if( Rec.m_string=="SOLID")<br />
				Parse_SolidInfo();<br />
			else <br />
			if( Rec.m_string=="POINT")<br />
				Parse_PointInfo();<br />
			else <br />
			if( Rec.m_string=="INSERT")<br />
				Parse_InsertInfo();<br />
			else <br />
			if( Rec.m_string=="SEQEND")<br />
				Parse_SeqendInfo();<br />
			else <br />
			if( Rec.m_string=="VERTEX")<br />
				Parse_VertexInfo();<br />
			else<br />
			if( Rec.m_string=="ENDSEC")<br />
			{<br />
				EndSection = TRUE;				<br />
				break;<br />
			}<br />
			else<br />
				Parse_UnknownInfo();<br />
	}while(!fileDXF.EndOfFile() );<br />
<br />
	if(!EndSection)<br />
		return ER_NOENDSEC;<br />
	return 0;<br />
}<br />
<br />
int CDXF_READ::Process_EndOfFile()<br />
{<br />
	if(Read_DXF_Line()!=ER_BADVALUE)<br />
	if(Rec.what ==0 && Rec.m_string=="EOF")<br />
		EndOfFileReached = TRUE ;<br />
	else<br />
		return ER_FILECORRUPT;<br />
	return 0;<br />
}<br />
<br />
int CDXF_READ::Read_DXF_Line()<br />
{<br />
	<br />
	if(NOT_READ_BEFOR)<br />
	{<br />
		Rec.m_double =0.0;<br />
		Rec.m_float =0.0;<br />
		Rec.m_int16 =0 ;<br />
		Rec.m_int32 = 0;<br />
		Rec.m_int8 = 0; <br />
		Rec.m_string ="";<br />
		Rec.what = -1;<br />
	}else <br />
	{<br />
		NOT_READ_BEFOR = TRUE;<br />
		return 0;<br />
	}	<br />
<br />
	Line_No_Dxf_Read ++ ;<br />
	<br />
	Rec.what=fileDXF.ReadInt16();<br />
<br />
	Line_No_Dxf_Read ++ ;<br />
<br />
	if(Rec.what >=0 && Rec.what <=9 ) //0-9		String (255 characters maximum; less for Unicode strings)<br />
		fileDXF.ReadString(Rec.m_string);<br />
	else<br />
	if((Rec.what >=10 && Rec.what <=59 ) ||   //10-59	Double precision 3D point<br />
		(Rec.what >=140 && Rec.what <=147 )||<br />
		(Rec.what >=210 && Rec.what <=230 ))  //140-147	Double precision scalar floating-point value<br />
		Rec.m_double=fileDXF.ReadDouble();<br />
	else<br />
	if((Rec.what >=60 && Rec.what <=79)  ||  //60-79	16-bit integer value<br />
	   (Rec.what >=170 && Rec.what <=175)||  //170-175	16-bit integer value			<br />
	   (Rec.what >=1060 && Rec.what <=1070)) //1060-1070	16-bit integer value<br />
<br />
		Rec.m_int16=fileDXF.ReadInt16();<br />
	else<br />
	if(Rec.what >=90 && Rec.what <=99 ) //90-99	32-bit integer value<br />
										//1071 	32-bit integer value	<br />
		Rec.m_int32=fileDXF.ReadInt32();<br />
	else<br />
	if((Rec.what ==100 || Rec.what == 102 || Rec.what == 105 || Rec.what == 999 ) ||<br />
	   (Rec.what >=300 && Rec.what <=369) || (Rec.what >=1000 && Rec.what <=1009) )<br />
		fileDXF.ReadString(Rec.m_string);<br />
	//100		String (255 characters maximum; less for Unicode strings)<br />
	//102		String (255 characters maximum; less for Unicode strings)<br />
	//105		String representing hexadecimal (hex) handle value<br />
	//999		Comment (string)<br />
	//300-309	Arbitrary text string<br />
	//310-319	String representing hex value of binary chunk<br />
	//320-329	String representing hex handle value<br />
	//330-369	String representing hex object IDs<br />
	//1000-1009	String (255 characters maximum; less for Unicode strings)<br />
	<br />
<br />
	else<br />
	if(Rec.what >=280 && Rec.what <=289 ) //	280-289	8-bit integer value<br />
		Rec.m_int8=fileDXF.ReadInt8();<br />
<br />
	else<br />
	if(Rec.what >=1010 && Rec.what <=1059 ) //   1010-1059	Floating-point value<br />
		Rec.m_float=fileDXF.ReadFloat();<br />
	else<br />
	{<br />
		fileDXF.ReadString(Rec.m_string);<br />
		return ER_BADVALUE;<br />
	}<br />
	return 0;<br />
}<br />
int		CDXF_READ::Parse_LineInfo()<br />
{<br />
	ZeroMemory(&Line,sizeof(Line));<br />
	CurrentGroupName = Rec.m_string ;<br />
	do<br />
	{<br />
		if(Read_DXF_Line()!=ER_BADVALUE)<br />
			switch(Rec.what)<br />
			{<br />
				case 8:<br />
					Line.layer = GetLayer(Rec.m_string);<br />
					break;<br />
				case  39:<br />
					Line.th = Rec.m_double;<br />
					break;<br />
				case 10:<br />
					Line.x1 = Rec.m_double;<br />
					break;<br />
				case 20:<br />
					Line.y1 = Rec.m_double;<br />
					break;<br />
				case 11:<br />
					Line.x2 = Rec.m_double;<br />
					break;<br />
				case 21:<br />
					Line.y2 = Rec.m_double;<br />
					break;<br />
				case 0:<br />
					NOT_READ_BEFOR = FALSE;<br />
					break;<br />
			}<br />
	}while(!fileDXF.EndOfFile() && NOT_READ_BEFOR);<br />
	Handle_LineInfo();<br />
	return 0;<br />
}<br />
int		CDXF_READ::Parse_CircleInfo()<br />
{<br />
	GroupCircle = TRUE;<br />
	ArcCircle.sa = ArcCircle.ea = 0;<br />
	Parse_ArcInfo();<br />
	GroupCircle = FALSE;<br />
	Handle_CircleInfo();<br />
	return 0;<br />
}<br />
int		CDXF_READ::Parse_ArcInfo()<br />
{<br />
	CurrentGroupName = Rec.m_string ;<br />
	ZeroMemory(&ArcCircle,sizeof(ArcCircle));<br />
	do<br />
	{<br />
		if(Read_DXF_Line()!=ER_BADVALUE)<br />
			switch(Rec.what)<br />
			{<br />
				case 8:<br />
					ArcCircle.layer = GetLayer(Rec.m_string);<br />
					break;<br />
				case  39:<br />
					ArcCircle.th = Rec.m_double;<br />
					break;<br />
				case 10:<br />
					ArcCircle.x = Rec.m_double;<br />
					break;<br />
				case 20:<br />
					ArcCircle.y = Rec.m_double;<br />
					break;<br />
				case 40:<br />
					ArcCircle.r = Rec.m_double;<br />
					break;<br />
				case 50:<br />
					ArcCircle.sa = Rec.m_double;<br />
					break;<br />
				case 51:<br />
					ArcCircle.ea = Rec.m_double;<br />
					break;<br />
				case 0:<br />
					NOT_READ_BEFOR = FALSE;<br />
					break;<br />
			}<br />
	}while(!fileDXF.EndOfFile() && NOT_READ_BEFOR);<br />
	if(!GroupCircle)<br />
		Handle_ArcInfo();<br />
	return 0;<br />
}<br />
int		CDXF_READ::Parse_TextInfo()<br />
{<br />
	CurrentGroupName = Rec.m_string ;<br />
	ZeroMemory(&Text,sizeof(Text));<br />
<br />
	do<br />
	{<br />
		if(Read_DXF_Line()!=ER_BADVALUE)<br />
		switch(Rec.what)<br />
		{<br />
			case 8:<br />
				Text.layer = GetLayer(Rec.m_string);<br />
				break;<br />
			case  39:<br />
				Text.th = Rec.m_double;<br />
				break;<br />
			case 10:<br />
				Text.x = Rec.m_double;<br />
				break;<br />
			case 20:<br />
				Text.y = Rec.m_double;<br />
				break;<br />
/*			case 11:<br />
				Text.x2 = Rec.m_double;<br />
				break;<br />
			case 21:<br />
				Text.y2 = Rec.m_double;<br />
				break;*/<br />
			case 40://hieght<br />
				Text.h = Rec.m_double;<br />
				break;<br />
			case 1://string<br />
				//Text.text = Rec.m_string;<br />
				strncpy(Text.text , Rec.m_string,255);<br />
				Text.text[255] = 0; <br />
				break;<br />
			case 50: //rotation<br />
				Text.rt = Rec.m_double;<br />
				break;<br />
			case 51: //oblique<br />
				Text.ob = Rec.m_double;<br />
				break;<br />
			case 7:<br />
				//Text.style = Rec.m_string;<br />
				strncpy(Text.style , Rec.m_string,255);<br />
				Text.style[255] = 0; <br />
				break;<br />
			case 71://generation default 0<br />
				Text.gen = Rec.m_int16;<br />
				break;<br />
			case 72://Horizental justification default 0<br />
				Text.hju = Rec.m_int16;<br />
				break;<br />
			case 73:<br />
				Text.vju = Rec.m_int16;<br />
				break;<br />
			case 0:<br />
				NOT_READ_BEFOR = FALSE;<br />
				break;<br />
		}<br />
	}while(!fileDXF.EndOfFile() && NOT_READ_BEFOR);<br />
	Handle_TextInfo();<br />
	return 0;<br />
}<br />
int		CDXF_READ::Parse_MTextInfo()<br />
{<br />
	CurrentGroupName = Rec.m_string ;<br />
	ZeroMemory(&MText,sizeof(MText));<br />
<br />
	do<br />
	{<br />
		if(Read_DXF_Line()!=ER_BADVALUE)<br />
		switch(Rec.what)<br />
		{<br />
			case 8:<br />
				MText.layer = GetLayer(Rec.m_string);<br />
				break;<br />
			case 10:<br />
				MText.x = Rec.m_double;<br />
				break;<br />
			case 20:<br />
				MText.y = Rec.m_double;<br />
				break;<br />
			case 11:<br />
				MText.xdir = Rec.m_double;<br />
				break;<br />
			case 21:<br />
				MText.ydir = Rec.m_double;<br />
				break;<br />
			case 40://hieght<br />
				MText.h = Rec.m_double;<br />
				break;<br />
			case 41://hieght<br />
				MText.refwidth = Rec.m_double;<br />
				break;<br />
			case 1://string<br />
				MText.MTextp[MText.MTextn] = new char [Rec.m_string.GetLength()+1] ;<br />
				strcpy(MText.MTextp[MText.MTextn] , Rec.m_string);<br />
				MText.MTextn ++ ;<br />
				break;<br />
			case 3://string		<br />
				MText.MTextp[MText.MTextn] = new char [Rec.m_string.GetLength()+1] ;<br />
				strcpy(MText.MTextp[MText.MTextn] , Rec.m_string);<br />
				MText.MTextn ++ ;<br />
				break;<br />
			case 50: //rotation<br />
				MText.rot = Rec.m_double;<br />
				break;<br />
			case 7:<br />
				//MText.style = Rec.m_string;<br />
				strncpy(MText.style , Rec.m_string,255);<br />
				MText.style[255] = 0; <br />
				break;<br />
			case 71://generation default 0<br />
				MText.attach = Rec.m_int16;<br />
				break;<br />
			case 72://Horizental justification default 0<br />
				MText.direction = Rec.m_int16;<br />
				break;<br />
			case 0:<br />
				NOT_READ_BEFOR = FALSE;<br />
				break;<br />
		}<br />
	}while(!fileDXF.EndOfFile() && NOT_READ_BEFOR);<br />
	Handle_MTextInfo();<br />
	for(int i=0;i < MText.MTextn ; i++)<br />
		delete MText.MTextp[i] ;<br />
	return 0;<br />
}<br />
int		CDXF_READ::Parse_PointInfo()<br />
{<br />
	CurrentGroupName = Rec.m_string ;<br />
	ZeroMemory(&Point,sizeof(Point));<br />
	do<br />
	{<br />
		if(Read_DXF_Line()!=ER_BADVALUE)<br />
		switch(Rec.what)<br />
		{<br />
			case 8:<br />
				Point.layer = GetLayer(Rec.m_string);<br />
				break;<br />
			case  39:<br />
				Point.th = Rec.m_double;<br />
				break;<br />
			case 10:<br />
				Point.x = Rec.m_double;<br />
				break;<br />
			case 20:<br />
				Point.y = Rec.m_double;<br />
				break;<br />
			case 0:<br />
				NOT_READ_BEFOR = FALSE;<br />
				break;<br />
		}<br />
	}while(!fileDXF.EndOfFile() && NOT_READ_BEFOR);<br />
	Handle_PointInfo();<br />
	return 0;<br />
}<br />
int		CDXF_READ::Parse_SolidInfo()<br />
{<br />
	CurrentGroupName = Rec.m_string ;<br />
	ZeroMemory(&Solid,sizeof(Solid));<br />
	do<br />
	{<br />
		if(Read_DXF_Line()!=ER_BADVALUE)<br />
		switch(Rec.what)<br />
		{<br />
			case 8:<br />
				Solid.layer = GetLayer(Rec.m_string);<br />
				break;<br />
			case  39:<br />
				Solid.th = Rec.m_double;<br />
				break;<br />
			case 10:<br />
				Solid.x1 = Rec.m_double;<br />
				break;<br />
			case 20:<br />
				Solid.y1 = Rec.m_double;<br />
				break;<br />
			case 11:<br />
				Solid.x2 = Rec.m_double;<br />
				break;<br />
			case 21:<br />
				Solid.y2 = Rec.m_double;<br />
				break;<br />
			case 12:<br />
				Solid.x3 = Rec.m_double;<br />
				break;<br />
			case 22:<br />
				Solid.y3 = Rec.m_double;<br />
				break;<br />
			case 13:<br />
				Solid.x4 = Rec.m_double;<br />
				break;<br />
			case 23:<br />
				Solid.y4 = Rec.m_double;<br />
				break;<br />
			case 0:<br />
				NOT_READ_BEFOR = FALSE;<br />
				break;<br />
		}<br />
	}while(!fileDXF.EndOfFile() && NOT_READ_BEFOR);<br />
	Handle_SolidInfo();<br />
	return 0;<br />
}<br />
int		CDXF_READ::Parse_LWPolyLineInfo()<br />
{<br />
/*<br />
100	Subclass marker (AcDbPolyline) <br />
90	Number of vertices.<br />
70	Polyline flag (bit-coded); default is 0:<br />
1 = closed<br />
128 = plinegen<br />
43	Constant width (optional; default = 0) Not used if variable width (codes 40 and/or 41) is set.<br />
38	Elevation (optional; default = 0)<br />
39	Thickness (optional; default = 0)<br />
10	Vertex coordinates (in OCS), multiple entries; one entry for each vertex. DXF: X value; APP: 2D point <br />
20	DXF: Y value of vertex coordinates (in OCS), multiple entries; one entry for each vertex<br />
40	Starting width (multiple entries; one entry for each vertex) (optional; default = 0; multiple entries). Not used if constant width (code 43) is set.<br />
41	End width (multiple entries; one entry for each vertex) (optional; default = 0; multiple entries). Not used if constant width (code 43) is set.<br />
42	Bulge (multiple entries; one entry for each vertex)  (optional; default = 0).<br />
210	Extrusion direction. (optional; default = 0, 0, 1). <br />
DXF: X value; APP: 3D vector<br />
220, 230	DXF: Y and Z values of extrusion direction<br />
*/<br />
	CurrentGroupName = Rec.m_string ;<br />
	int vertice_i= -1;<br />
	ZeroMemory(&LWPolyLine,sizeof(PolyLine)) ;<br />
	do<br />
	{<br />
		if(Read_DXF_Line()!=ER_BADVALUE)<br />
		switch(Rec.what)<br />
		{<br />
			case 8:<br />
				LWPolyLine.layer = GetLayer(Rec.m_string);<br />
				break;<br />
			case  38:<br />
				LWPolyLine.elevation = Rec.m_double;<br />
				break;<br />
			case  39:<br />
				LWPolyLine.th = Rec.m_double;<br />
				break;<br />
			case  43:<br />
				LWPolyLine.width = Rec.m_double;<br />
				break;<br />
			case 90:<br />
				LWPolyLine.vertices = Rec.m_int32;<br />
				if( LWPolyLine.vertices > 0 )<br />
				{<br />
					LWPolyLine.pVertices = new VERTICE[LWPolyLine.vertices] ;<br />
					ZeroMemory( LWPolyLine.pVertices , sizeof(VERTICE)*LWPolyLine.vertices ) ;<br />
				}<br />
				break;<br />
			case 10:<br />
				if( LWPolyLine.vertices > 0 )<br />
				{<br />
					vertice_i ++ ;<br />
					LWPolyLine.pVertices[vertice_i].x = Rec.m_double;<br />
				}<br />
				break;<br />
			case 20:<br />
				if( LWPolyLine.vertices > 0 )<br />
					LWPolyLine.pVertices[vertice_i].y = Rec.m_double;				<br />
				break;<br />
			case 40:<br />
				if( LWPolyLine.vertices > 0 )<br />
					LWPolyLine.pVertices[vertice_i].sw = Rec.m_double;<br />
				break;<br />
			case 41:<br />
				if( LWPolyLine.vertices > 0 )<br />
					LWPolyLine.pVertices[vertice_i].ew = Rec.m_double;<br />
				break;<br />
			case 42:<br />
				if( LWPolyLine.vertices > 0 )<br />
					LWPolyLine.pVertices[vertice_i].bulge = Rec.m_double;<br />
				break;<br />
			case 70:<br />
				LWPolyLine.flag = Rec.m_int16;<br />
				break;<br />
			case 0:<br />
				NOT_READ_BEFOR = FALSE;<br />
				break;<br />
		}<br />
	}while(!fileDXF.EndOfFile() && NOT_READ_BEFOR);<br />
<br />
	if( LWPolyLine.width > 0 )<br />
		for(vertice_i=0;vertice_i < LWPolyLine.vertices ;vertice_i++)<br />
			LWPolyLine.pVertices[vertice_i].sw = LWPolyLine.pVertices[vertice_i].ew = LWPolyLine.width ;<br />
<br />
	Handle_LWPolyLineInfo();<br />
	if( LWPolyLine.vertices > 0 )<br />
	{<br />
		delete LWPolyLine.pVertices ;<br />
		LWPolyLine.pVertices = NULL ;	<br />
		return 0;<br />
	}<br />
	return ER_FILECORRUPT;<br />
}<br />
int		CDXF_READ::Parse_PolyLineInfo()<br />
{<br />
	/*<br />
10	DXF: always 0<br />
	APP: a "dummy" point; the X and Y values are always 0, and the Z value is the polyline's elevation (in OCS when 2D, WCS when 3D)<br />
20	DXF: always 0<br />
30	DXF: polyline's elevation (in OCS when 2D, WCS when 3D)<br />
39	Thickness (optional; default = 0)<br />
70	Polyline flag (bit-coded); default is 0:<br />
	1 = This is a closed polyline (or a polygon mesh closed in the M direction).<br />
	2 = Curve-fit vertices have been added.<br />
	4 = Spline-fit vertices have been added.<br />
	8 = This is a 3D polyline.<br />
	16 = This is a 3D polygon mesh.<br />
	32 = The polygon mesh is closed in the N direction.<br />
	64 = The polyline is a polyface mesh.<br />
	128 = The linetype pattern is generated continuously around the vertices of this polyline.<br />
40	Default starting width (optional; default = 0)<br />
41	Default ending width (optional; default = 0)<br />
71	Polygon mesh M vertex count (optional; default = 0)<br />
72	Polygon mesh N vertex count (optional; default = 0)<br />
73	Smooth surface M density (optional; default = 0)<br />
74	Smooth surface N density (optional; default = 0)<br />
75	Curves and smooth surface type (optional; default = 0); integer codes, not bit-coded:<br />
	0 = No smooth surface fitted<br />
	5 = Quadratic B-spline surface<br />
	6 = Cubic B-spline surface<br />
	8 = Bezier surface<br />
*/<br />
	CurrentGroupName = Rec.m_string ;<br />
	ZeroMemory(&PolyLine,sizeof(PolyLine)) ;<br />
	do<br />
	{<br />
		if(Read_DXF_Line()!=ER_BADVALUE)<br />
		switch(Rec.what)<br />
		{<br />
			case 8:<br />
				PolyLine.layer = GetLayer(Rec.m_string);<br />
				break;<br />
			case  39:<br />
				PolyLine.th = Rec.m_double;<br />
				break;<br />
			case 10:<br />
				PolyLine.x = Rec.m_double;<br />
				break;<br />
			case 20:<br />
				PolyLine.y = Rec.m_double;<br />
				break;<br />
			case 70:<br />
				PolyLine.flag = Rec.m_int16;<br />
				break;<br />
			case 75:<br />
				PolyLine.type = Rec.m_int16;<br />
				break;<br />
			case 0:<br />
				NOT_READ_BEFOR = FALSE;<br />
				break;<br />
		}<br />
	}while(!fileDXF.EndOfFile() && NOT_READ_BEFOR);<br />
<br />
	Handle_PolyLineInfo();<br />
	return 0;<br />
}<br />
int		CDXF_READ::Parse_VertexInfo()<br />
{<br />
	CurrentGroupName = Rec.m_string ;<br />
	ZeroMemory(&Vertex,sizeof(Vertex)) ;<br />
	do<br />
	{<br />
		if(Read_DXF_Line()!=ER_BADVALUE)<br />
		switch(Rec.what)<br />
		{<br />
			case 8:<br />
				Vertex.layer = GetLayer(Rec.m_string);<br />
				break;<br />
			case 10:<br />
				Vertex.x = Rec.m_double;<br />
				break;<br />
			case 20:<br />
				Vertex.y = Rec.m_double;<br />
				break;<br />
			case 70:<br />
				Vertex.flag = Rec.m_int16;<br />
				break;<br />
			case 42:<br />
				Vertex.bulge = Rec.m_double;<br />
				break;<br />
			case 40:<br />
				Vertex.sw = Rec.m_double;<br />
				break;<br />
			case 41:<br />
				Vertex.ew = Rec.m_double;<br />
				break;<br />
			case 50:<br />
				Vertex.curve = Rec.m_double;<br />
				break;<br />
			case 0:<br />
				NOT_READ_BEFOR = FALSE;<br />
				break;<br />
		}<br />
	}while(!fileDXF.EndOfFile() && NOT_READ_BEFOR);<br />
	Handle_VertexInfo();<br />
	return 0;<br />
}<br />
int		CDXF_READ::Parse_SeqendInfo()<br />
{<br />
	CurrentGroupName = Rec.m_string ;<br />
	//ZeroMemory(&Vertex,sizeof()) ;<br />
	do<br />
	{<br />
		if(Read_DXF_Line()!=ER_BADVALUE)<br />
		switch(Rec.what)<br />
		{<br />
			case 8:<br />
				Vertex.layer = GetLayer(Rec.m_string);<br />
				break;<br />
			case 0:<br />
				NOT_READ_BEFOR = FALSE;<br />
				break;<br />
		}<br />
	}while(!fileDXF.EndOfFile() && NOT_READ_BEFOR);<br />
	Handle_SeqendInfo();<br />
	return 0;<br />
}<br />
int		CDXF_READ::Parse_InsertInfo()<br />
{<br />
	/*<br />
	double x ,y; //10,20<br />
	double xscale ,yscale; //41,42<br />
	double rot; //50<br />
	__int16 colnum,rownum; //70,71<br />
	double  colspc.rowspc; //44,45<br />
	*/<br />
	ZeroMemory(&Insert,sizeof(Insert));<br />
	Insert.xscale = Insert.yscale = 1; // by default<br />
	CurrentGroupName = Rec.m_string ;<br />
	do<br />
	{<br />
		if(Read_DXF_Line()!=ER_BADVALUE)<br />
		switch(Rec.what)<br />
		{<br />
			case 10:<br />
				Insert.x = Rec.m_double;<br />
				break;<br />
			case 20:<br />
				Insert.y = Rec.m_double;<br />
				break;<br />
			case 41:<br />
				Insert.xscale = Rec.m_double;<br />
				break;<br />
			case 42:<br />
				Insert.yscale = Rec.m_double;<br />
				break;<br />
			case 44:<br />
				Insert.colspc = Rec.m_double;<br />
				break;<br />
			case 45:<br />
				Insert.rowspc = Rec.m_double;<br />
				break;<br />
			case 50:<br />
				Insert.rot = Rec.m_double;<br />
				break;<br />
			case 70:<br />
				Insert.colnum = Rec.m_int16;<br />
				break;<br />
			case 71:<br />
				Insert.rownum = Rec.m_int16;<br />
				break;<br />
			case 8:<br />
				Insert.layer = GetLayer(Rec.m_string);<br />
				break;<br />
			case 2:<br />
				strncpy(Insert.block , Rec.m_string,255);<br />
				Insert.block[255] = 0; <br />
				break;<br />
			case 0:<br />
				NOT_READ_BEFOR = FALSE;<br />
				break;<br />
		}<br />
	}while(!fileDXF.EndOfFile() && NOT_READ_BEFOR);<br />
	Handle_InsertInfo();<br />
	return 0;<br />
}<br />
int		CDXF_READ::Parse_UnknownInfo()<br />
{<br />
	CurrentGroupName = Rec.m_string ;<br />
	do<br />
	{<br />
		if(Read_DXF_Line()!=ER_BADVALUE)<br />
		switch(Rec.what)<br />
		{<br />
			case 8:<br />
				Vertex.layer = GetLayer(Rec.m_string);<br />
				break;<br />
			case 0:<br />
				NOT_READ_BEFOR = FALSE;<br />
				break;<br />
		}<br />
	}while(!fileDXF.EndOfFile() && NOT_READ_BEFOR);<br />
	Handle_UnknownInfo();<br />
	return 0;<br />
}<br />
int	CDXF_READ::Parse_TableItemInfo()<br />
{<br />
	if(Read_DXF_Line()!=ER_BADVALUE)<br />
		if(Rec.what == 0  &&  Rec.m_string != Tables.group)<br />
			return ER_BADTABLES;<br />
	CurrentGroupName = Tables.group ;	<br />
	do<br />
	{<br />
		if(Read_DXF_Line()!=ER_BADVALUE)<br />
		switch(Rec.what)<br />
		{<br />
			case 70:<br />
				Layer.flag = Rec.m_int16;<br />
				break;<br />
			case 0:<br />
				if(Rec.m_string == "ENDTAB" )<br />
					NOT_READ_BEFOR = FALSE;<br />
				break;<br />
		}<br />
	}while(!fileDXF.EndOfFile() && NOT_READ_BEFOR);<br />
	return 0;<br />
}<br />
<br />
int	CDXF_READ::Parse_LayerInfo()<br />
{<br />
	if(Read_DXF_Line()!=ER_BADVALUE)<br />
		if(Rec.what == 0  &&  Rec.m_string != Tables.group)<br />
			return ER_BADTABLES;<br />
	CurrentGroupName = Tables.group ;	<br />
	ZeroMemory(&Layer,sizeof(Layer));<br />
	do<br />
	{<br />
		if(Read_DXF_Line()!=ER_BADVALUE)<br />
		switch(Rec.what)<br />
		{<br />
			case 2:<br />
				strncpy(Layer.name , Rec.m_string,255);<br />
				break;<br />
			case 70:<br />
				Layer.flag = Rec.m_int16;<br />
				break;<br />
			case 6:<br />
				strncpy(Layer.linetype , Rec.m_string,255);<br />
				break;<br />
			case 62:<br />
				Layer.color = Rec.m_int16;<br />
				break;<br />
			case 0:<br />
				if(Rec.m_string == "ENDTAB" )<br />
					NOT_READ_BEFOR = FALSE;<br />
				else<br />
				{	<br />
					LayerArray [ LayerCount ] = new DXF_LAYER;<br />
					ZeroMemory(LayerArray [ LayerCount ],sizeof(DXF_LAYER) );<br />
					CopyMemory(LayerArray [ LayerCount ],&Layer,sizeof(DXF_LAYER) );<br />
					LayerCount++;<br />
					Handle_LayerInfo();<br />
				}<br />
				break;<br />
		}<br />
	}while(!fileDXF.EndOfFile() && NOT_READ_BEFOR);<br />
<br />
	LayerArray [ LayerCount ] = new DXF_LAYER;<br />
	ZeroMemory(LayerArray [ LayerCount ],sizeof(DXF_LAYER) );<br />
	CopyMemory(LayerArray [ LayerCount ],&Layer,sizeof(DXF_LAYER) );<br />
	LayerCount++;<br />
<br />
	Handle_LayerInfo();<br />
	return 0;<br />
}<br />
__int16 CDXF_READ::GetLayer(LPCSTR ln)<br />
{<br />
	__int16 ret=0; <br />
	for(;ret < LayerCount; ret++)<br />
		if(stricmp(LayerArray[ret]->name,ln)==0)<br />
			return ret;<br />
<br />
	LayerArray [ LayerCount ] = new DXF_LAYER;<br />
	ZeroMemory(LayerArray [ LayerCount ],sizeof(DXF_LAYER) );<br />
<br />
	strcpy(LayerArray [ LayerCount ]->name  , ln);<br />
	LayerArray [ LayerCount ]->color = -LayerCount ; //layer is off<br />
	LayerArray [ LayerCount ]->flag = 5;  //frozen & lockec<br />
<br />
	LayerCount++;<br />
	return ret;<br />
}<br />
int		CDXF_READ::Parse_EllipseInfo()<br />
{<br />
/*<br />
100	Subclass marker (AcDbEllipse) <br />
10	Center point (in WCS). DXF: X value; APP: 3D point<br />
20, 30	DXF: Y and Z values of center point (in WCS) <br />
11	Endpoint of major axis, relative to the center (in WCS).<br />
DXF: X value; APP: 3D point.<br />
21, 31	DXF: Y and Z values of endpoint of major axis, relative to the center (in WCS)<br />
210	Extrusion direction. (optional; default = 0, 0, 1). <br />
DXF: X value; APP: 3D vector<br />
220, 230	DXF: Y and Z values of extrusion direction<br />
40	Ratio of minor axis to major axis<br />
41	Start parameter (this value is 0.0 for a full ellipse)<br />
42	End parameter (this value is 2pi for a full ellipse)<br />
*/	GroupCircle = FALSE;<br />
	CurrentGroupName = Rec.m_string ;<br />
	ZeroMemory(&Ellipse,sizeof(DXF_ELLIPSE));<br />
	do<br />
	{<br />
		if(Read_DXF_Line()!=ER_BADVALUE)<br />
			switch(Rec.what)<br />
			{<br />
				case 8:<br />
					Ellipse.layer = GetLayer(Rec.m_string);<br />
					break;<br />
				case 10:<br />
					Ellipse.x = Rec.m_double;<br />
					break;<br />
				case 20:<br />
					Ellipse.y = Rec.m_double;<br />
					break;<br />
				case 11:<br />
					Ellipse.mx = Rec.m_double;<br />
					break;<br />
				case 21:<br />
					Ellipse.my = Rec.m_double;<br />
					break;<br />
				case 40:<br />
					Ellipse.rmin = Rec.m_double;<br />
					break;<br />
				case 41:<br />
					Ellipse.sp = Rec.m_double;<br />
					break;<br />
				case 42:<br />
					Ellipse.ep = Rec.m_double;<br />
					break;<br />
				case 0:<br />
					NOT_READ_BEFOR = FALSE;<br />
					break;<br />
			}<br />
	}while(!fileDXF.EndOfFile() && NOT_READ_BEFOR);<br />
	Handle_EllipseInfo();<br />
	return 0;<br />
}<br />
BOOL CDXF_READ::ProcessSystemMsg()<br />
{<br />
///////////////////////////////////////////////////////////////////<br />
	if(((CDXF_IN_App*) AfxGetApp())->bShouldExit)<br />
		return FALSE ;<br />
	MSG msg;<br />
	CDXF_IN_App* theApp =(CDXF_IN_App*) AfxGetApp();<br />
	theApp->bDoingBackgroundProcessing = TRUE;<br />
	while ( ::PeekMessage( &msg, NULL, 0, 0, PM_NOREMOVE ) ) <br />
	{ <br />
		if ( !theApp->PumpMessage( ) ) <br />
		{ <br />
			theApp->bDoingBackgroundProcessing = FALSE;  <br />
			::PostQuitMessage(0 ); <br />
			break; <br />
		} <br />
	} <br />
	// let MFC do its idle processing<br />
	LONG lIdle = 0;<br />
	while ( theApp->OnIdle(lIdle++ ) )<br />
		;  <br />
//////////////////////////////////////////////////////////////////////<br />
	return 	theApp->bDoingBackgroundProcessing;<br />
}

GeneralFile Properties -&gt;Summary Pin
amol arya24-Dec-03 0:49
amol arya24-Dec-03 0:49 
GeneralRe: File Properties -&gt;Summary Pin
Michael Dunn24-Dec-03 6:47
sitebuilderMichael Dunn24-Dec-03 6:47 
GeneralRe: File Properties -&gt;Summary Pin
amol arya28-Dec-03 3:52
amol arya28-Dec-03 3:52 
Questionhow i can link c library from c++ class Pin
Rajesh match23-Dec-03 23:21
Rajesh match23-Dec-03 23:21 
AnswerRe: how i can link c library from c++ class Pin
Taka Muraoka23-Dec-03 23:54
Taka Muraoka23-Dec-03 23:54 
GeneralRe: how i can link c library from c++ class Pin
Rajesh match24-Dec-03 0:12
Rajesh match24-Dec-03 0:12 
GeneralRe: how i can link c library from c++ class Pin
Taka Muraoka24-Dec-03 0:15
Taka Muraoka24-Dec-03 0:15 
GeneralDatabase Problem Pin
harwanegg23-Dec-03 23:04
harwanegg23-Dec-03 23:04 
Generalgrammer of fortran language Pin
ammad ami23-Dec-03 22:59
ammad ami23-Dec-03 22:59 
GeneralInstall Shield details Pin
skpanda23-Dec-03 21:55
skpanda23-Dec-03 21:55 
GeneralRe: Install Shield details Pin
Monty223-Dec-03 22:40
Monty223-Dec-03 22:40 
GeneralRe: Install Shield details Pin
Michael P Butler24-Dec-03 2:44
Michael P Butler24-Dec-03 2:44 
GeneralRe: Install Shield details Pin
neo2k324-Dec-03 5:17
neo2k324-Dec-03 5:17 
QuestionHow to Enumerate Window CE process Pin
Member 39424123-Dec-03 21:52
Member 39424123-Dec-03 21:52 
Generalstandard scrollbar &amp; scrollbar control Pin
ashxly23-Dec-03 21:51
ashxly23-Dec-03 21:51 
GeneralRe: standard scrollbar &amp; scrollbar control Pin
Monty223-Dec-03 22:37
Monty223-Dec-03 22:37 
GeneralRe: standard scrollbar &amp; scrollbar control Pin
ashxly23-Dec-03 23:00
ashxly23-Dec-03 23:00 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.