代码下载:GDwgFiler
#pragma once
#include “dbfiler.h”
enum DwgFilerDataType
{
kDataString=0,
kDataBChunk=1,
kDataHandle=2,
kDataInt32=3,
kDataInt16=4,
kDataInt8=5,
kDataUInt32=6,
kDataUInt16=7,
kDataUInt8=8,
kDataBoolean=9,
kDataBool=10,
kDataDouble=11,
kDataPoint2d=12,
kDataPoint3d=13,
kDataVector2d=14,
kDataVector3d=15,
kDataScale3d=16,
kDataBytes=17,
kDataAddress=18,
kDataHardOwnershipId=19,
kDataSoftOwnershipId=20,
kDataHardPointerId=21,
kDataSoftPointerId=22,
kDataLong=23,
kDataInt64=24,
kDataUInt64=25
};
class GDwgFiler:public AcDbDwgFiler
{
public:
ACRX_DECLARE_MEMBERS(GDwgFiler);
GDwgFiler();
virtual ~GDwgFiler();
virtual Acad::ErrorStatus filerStatus() const{return m_stat;}
virtual AcDb::FilerType filerType() const{return m_filerType;}
virtual void setFilerStatus(Acad::ErrorStatus es){m_stat=es;}
virtual void resetFilerStatus(){m_stat=Acad::eOk;}
virtual Acad::ErrorStatus readHardOwnershipId(AcDbHardOwnershipId*);
virtual Acad::ErrorStatus writeHardOwnershipId(const AcDbHardOwnershipId&);
virtual Acad::ErrorStatus readSoftOwnershipId(AcDbSoftOwnershipId*);
virtual Acad::ErrorStatus writeSoftOwnershipId(const AcDbSoftOwnershipId&);
virtual Acad::ErrorStatus readHardPointerId(AcDbHardPointerId*);
virtual Acad::ErrorStatus writeHardPointerId(const AcDbHardPointerId&);
virtual Acad::ErrorStatus readSoftPointerId(AcDbSoftPointerId*);
virtual Acad::ErrorStatus writeSoftPointerId(const AcDbSoftPointerId&);
virtual Acad::ErrorStatus readString(ACHAR **);
virtual Acad::ErrorStatus writeString(const ACHAR *);
#if _MSC_VER>=1400
virtual Acad::ErrorStatus readString(AcString &);
virtual Acad::ErrorStatus writeString(const AcString &);
#endif
virtual Acad::ErrorStatus readBChunk(ads_binary*);
virtual Acad::ErrorStatus writeBChunk(const ads_binary&);
virtual Acad::ErrorStatus readAcDbHandle(AcDbHandle*);
virtual Acad::ErrorStatus writeAcDbHandle(const AcDbHandle&);
#if _MSC_VER>=1500
virtual Acad::ErrorStatus readInt64(Adesk::Int64*);
virtual Acad::ErrorStatus writeInt64(Adesk::Int64);
virtual Acad::ErrorStatus readUInt64(Adesk::UInt64*);
virtual Acad::ErrorStatus writeUInt64(Adesk::UInt64);
#endif
virtual Acad::ErrorStatus readInt32(Adesk::Int32*);
virtual Acad::ErrorStatus writeInt32(Adesk::Int32);
virtual Acad::ErrorStatus readInt16(Adesk::Int16*);
virtual Acad::ErrorStatus writeInt16(Adesk::Int16);
virtual Acad::ErrorStatus readInt8(Adesk::Int8 *);
virtual Acad::ErrorStatus writeInt8(Adesk::Int8);
#if _MSC_VER<=1300
virtual Acad::ErrorStatus readChar(char* unnamed){return readInt8(unnamed);}
virtual Acad::ErrorStatus writeChar(char unnamed){return writeInt8(unnamed);}
#endif
virtual Acad::ErrorStatus readUInt32(Adesk::UInt32*);
virtual Acad::ErrorStatus writeUInt32(Adesk::UInt32);
virtual Acad::ErrorStatus readUInt16(Adesk::UInt16*);
virtual Acad::ErrorStatus writeUInt16(Adesk::UInt16);
virtual Acad::ErrorStatus readUInt8(Adesk::UInt8*);
virtual Acad::ErrorStatus writeUInt8(Adesk::UInt8);
virtual Acad::ErrorStatus readBoolean(Adesk::Boolean*);
virtual Acad::ErrorStatus writeBoolean(Adesk::Boolean);
virtual Acad::ErrorStatus readBool(bool*);
virtual Acad::ErrorStatus writeBool(bool);
virtual Acad::ErrorStatus readDouble(double*);
virtual Acad::ErrorStatus writeDouble(double);
Acad::ErrorStatus readLong(long*);
Acad::ErrorStatus writeLong(long);
virtual Acad::ErrorStatus readPoint2d(AcGePoint2d*);
virtual Acad::ErrorStatus writePoint2d(const AcGePoint2d&);
virtual Acad::ErrorStatus readPoint3d(AcGePoint3d*);
virtual Acad::ErrorStatus writePoint3d(const AcGePoint3d&);
virtual Acad::ErrorStatus readVector2d(AcGeVector2d*);
virtual Acad::ErrorStatus writeVector2d(const AcGeVector2d&);
virtual Acad::ErrorStatus readVector3d(AcGeVector3d*);
virtual Acad::ErrorStatus writeVector3d(const AcGeVector3d&);
virtual Acad::ErrorStatus readScale3d(AcGeScale3d*);
virtual Acad::ErrorStatus writeScale3d(const AcGeScale3d&);
#if _MSC_VER<1500
virtual Acad::ErrorStatus readBytes(void*, Adesk::UInt32);
virtual Acad::ErrorStatus writeBytes(const void*, Adesk::UInt32);
#else
virtual Acad::ErrorStatus readBytes(void *, Adesk::UIntPtr);
virtual Acad::ErrorStatus writeBytes(const void *, Adesk::UIntPtr);
#endif
virtual Acad::ErrorStatus readAddress(void**);
virtual Acad::ErrorStatus writeAddress(const void*);
#if _MSC_VER<1500
virtual Acad::ErrorStatus seek(long offset, int method){return Acad::eNotImplementedYet;}
#else
virtual Acad::ErrorStatus seek(Adesk::Int64 nOffset, int method){return Acad::eNotImplementedYet;}
#endif
#if _MSC_VER<1500
virtual long tell() const{return 0;}
#else
virtual Adesk::Int64 tell() const{return 0;}
#endif
void setFilerType(AcDb::FilerType newType) { m_filerType = newType; }
static Adesk::UInt32 kCurrentVersionNumber ;
const AcDbDatabase* database() const{return m_db;}
void setDatabase(AcDbDatabase* pDb){m_db=pDb;}
void getDat(AcArray<byte>& dat);
void setDat(AcArray<byte>& dat);
public:
bool m_bOpenLog;//是否打开日志,默认为否
private:
void WriteLine(CString fmt, …);
Acad::ErrorStatus m_stat;
AcDbDatabase* m_db;//位于哪个数据库中,主要用于读取ObjectId类
AcDb::FilerType m_filerType;
AcArray<byte> m_dat;//数据
int m_readindex;
int m_writeindex;
#if _MSC_VER>=1400
AcString m_tmpStr;
#endif
Adesk::UInt32 m_version ;
Acad::ErrorStatus FirstReadVersion();
Acad::ErrorStatus FirstWriteVersion();
virtual Acad::ErrorStatus _readInt32(Adesk::Int32*);
virtual Acad::ErrorStatus _readInt16(Adesk::Int16*);
virtual Acad::ErrorStatus _readInt8(Adesk::Int8*);
virtual Acad::ErrorStatus _readUInt32(Adesk::UInt32*);
virtual Acad::ErrorStatus _readUInt16(Adesk::UInt16*);
virtual Acad::ErrorStatus _readUInt8(Adesk::UInt8*);
virtual Acad::ErrorStatus _readType(DwgFilerDataType* pType);
virtual Acad::ErrorStatus _readDouble(double*);
virtual Acad::ErrorStatus _readBoolean(Adesk::Boolean*);
virtual Acad::ErrorStatus _readBool(bool*);
virtual Acad::ErrorStatus _readLong(long*);
virtual Acad::ErrorStatus _writeUInt32(Adesk::UInt32);
virtual Acad::ErrorStatus _writeUInt16(Adesk::UInt16);
virtual Acad::ErrorStatus _writeUInt8(Adesk::UInt8);
virtual Acad::ErrorStatus _writeInt32(Adesk::Int32);
virtual Acad::ErrorStatus _writeInt16(Adesk::Int16);
virtual Acad::ErrorStatus _writeInt8(Adesk::Int8);
virtual Acad::ErrorStatus _writeType(DwgFilerDataType kType);
virtual Acad::ErrorStatus _writeDouble(double);
virtual Acad::ErrorStatus _writeBoolean(Adesk::Boolean);
virtual Acad::ErrorStatus _writeBool(bool);
virtual Acad::ErrorStatus _writeString(const ACHAR *);
virtual Acad::ErrorStatus _writeLong(const long);
#if _MSC_VER>=1500
virtual Acad::ErrorStatus _readInt64(Adesk::Int64*);
virtual Acad::ErrorStatus _writeInt64(Adesk::Int64);
virtual Acad::ErrorStatus _readUInt64(Adesk::UInt64*);
virtual Acad::ErrorStatus _writeUInt64(Adesk::UInt64);
#endif
//恢复到读取类型之前
virtual Acad::ErrorStatus _backToBeforeReadType();
};


杭州格原