ObjectARX, AutoCAD. Среда программирования библиотеки C++


Диапазоны Кода DXF-группы - часть 2


Следующее - типовой код от AsdkPoly:: dxfOutFields ():

 

Acad::ErrorStatus

AsdkPoly::dxfOutFields(AcDbDxfFiler* filer) const

{

assertReadEnabled();

Acad::ErrorStatus es;

if ((es = AcDbCurve::dxfOutFields(filer))

!= Acad::eOk)

{

return es;

}

filer->writeItem(AcDb::kDxfSubclass, "AsdkPoly");

// Object Version

//

Adesk::Int16 version = VERSION;

filer->writeInt16(AcDb::kDxfInt16, version);

filer->writePoint2d(AcDb::kDxfXCoord, mCenter);

filer->writePoint2d(AcDb::kDxfXCoord + 1, mStartPoint);

filer->writeInt32(AcDb::kDxfInt32, mNumSides);

 

// Always use max precision when writing out the normal.

filer->writeVector3d(AcDb::kDxfNormalX, mPlaneNormal,16);

filer->writeString(AcDb::kDxfText, mpName);

filer->writeItem(AcDb::kDxfHardPointerId, mTextStyle);

filer->writeDouble(AcDb::kDxfReal, mElevation);

return filer->filerStatus();

}

 

Типовой Код для dxfInFields () с Независимостью порядка

Следующее - типовой код для AsdkPoly:: dxfInFields ():

 

Acad::ErrorStatus

AsdkPoly::dxfInFields(AcDbDxfFiler* filer)

{

assertWriteEnabled();

Acad::ErrorStatus es = Acad::eOk;

resbuf rb;

if ((AcDbCurve::dxfInFields(filer) != Acad::eOk) || !filer->atSubclassData("AsdkPoly"))

{

return filer->filerStatus();

}

// Object Version

Adesk::Int16 version;

filer->readItem(&rb);

if (rb.restype != AcDb::kDxfInt16)

{

filer->pushBackItem();

filer->setError(Acad::eInvalidDxfCode,

"\nError: expected group code %d (version)",

AcDb::kDxfInt16);

return filer->filerStatus();

}

version = rb.resval.rint;

if (version > VERSION)

return Acad::eMakeMeProxy;

AcGePoint3d cen3d,sp3d;

AcGePoint2d cen2d,sp2d;

long numSides;

AcDbObjectId textStyle;

double elevation;

Adesk::UInt32 fieldsFlags = 0;

char * pName = NULL;

AcGeVector3d planeNormal;

while ((es == Acad::eOk) && ((es = filer->readResBuf(&rb)) == Acad::eOk))

{

switch (rb.restype) {




Начало  Назад  Вперед



Книжный магазин