Следующее - пример чтения и записи AcGeExternalSurface с конкретным подклассом AcGeFiler. С целью этого примера, регистратор преобразования в последовательную форму - DWG регистратор. Следовательно, это обеспечивает постоянство, читая и пишущий формат DWG:
#include "gefiler.h"
class AcDbDwgFiler;
class AcGeDwgFiler : public AcGeFiler
{
public:
// Construct the filer with DWG filer.
// All read and write methods are implemented
// by delegating to this filer.
AcGeDwgFiler (AcDbDwgFiler* = NULL);
// Read/write methods.
//
Acad::ErrorStatus readBoolean(Adesk::Boolean*);
Acad::ErrorStatus writeBoolean(Adesk::Boolean);
Acad::ErrorStatus readBool(bool*);
Acad::ErrorStatus writeBool(bool);
Acad::ErrorStatus readChar(char*);
Acad::ErrorStatus writeChar(char);
Acad::ErrorStatus readShort(short*);
Acad::ErrorStatus writeShort(short);
Acad::ErrorStatus readLong(long*);
Acad::ErrorStatus writeLong(long);
Acad::ErrorStatus readUChar(unsigned char*);
Acad::ErrorStatus writeUChar(unsigned char);
Acad::ErrorStatus readUShort(unsigned short*);
Acad::ErrorStatus writeUShort(unsigned short);
Acad::ErrorStatus readULong(unsigned long*);
Acad::ErrorStatus writeULong(unsigned long);
Acad::ErrorStatus readDouble(double*);
Acad::ErrorStatus writeDouble(double);
Acad::ErrorStatus readPoint2d(AcGePoint2d*);
Acad::ErrorStatus writePoint2d(const AcGePoint2d&);
Acad::ErrorStatus readPoint3d(AcGePoint3d*);
Acad::ErrorStatus writePoint3d(const AcGePoint3d&);
Acad::ErrorStatus readVector2d(AcGeVector2d*);
Acad::ErrorStatus writeVector2d(const AcGeVector2d&);
Acad::ErrorStatus readVector3d(AcGeVector3d*);
Acad::ErrorStatus writeVector3d(const AcGeVector3d&);
// Set/Get methods
//
AcGeDwgFiler& setDwgFiler (AcDbDwgFiler*);
AcDbDwgFiler* dwgFiler ();
protected:
AcDbDwgFiler* mpFiler;
};
// Inline methods.
//
inline
AcGeDwgFiler::AcGeDwgFiler(AcDbDwgFiler* filer) : mpFiler(filer)
{}
inline AcGeDwgFiler&
AcGeDwgFiler::setDwgFiler(AcDbDwgFiler* filer)