AcDbDwgFiler继承实现
代码下载: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(); };查看完整版本: AcDbDwgFiler继承实现
Tags: