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


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


asDblArray(planeNormal),Adesk::kFalse);

mCenter.set(cen3d.x,cen3d.y);

mElevation = cen3d.z;

acdbWcs2Ecs(asDblArray(sp3d),asDblArray(sp3d),

asDblArray(planeNormal),Adesk::kFalse);

mStartPoint.set(sp3d.x,sp3d.y);

assert(mElevation == sp3d.z);

} else {

mCenter = cen2d;

mStartPoint = sp2d;

mElevation = elevation;

}

return es;

}

 

Законченный код для AsdkPoly определенного приложением класса может быть найден в каталоге примеров.

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

Эта выборка кода показывает, как Вы могли записывать dxfInFields () функция, которая является иждивенцем заказа (порядка).

 

Acad::ErrorStatus

AsdkPoly::dxfInFields(AcDbDxfFiler* filer)

{

assertWriteEnabled();

 

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

{

return filer->filerStatus();

}

try

{

struct resbuf rb;

 

// Object Version

Adesk::Int16 version;

filer->readItem(&rb);

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

throw AcDb::kDxfInt16;

 

version = rb.resval.rint;

if (version > VERSION)

return Acad::eMakeMeProxy;

if (version == 1)

{

AcGePoint3d cent,sp;

filer->readItem(&rb);

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

throw AcDb::kDxfXCoord

cent = asPnt3d(rb.resval.rpoint);

 

filer->readItem(&rb);

if (rb.restype != AcDb::kDxfXCoord + 1)

throw AcDb::kDxfXCoord + 1;

sp = asPnt3d(rb.resval.rpoint);

 

filer->readItem(&rb);

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

throw AcDb::kDxfInt32;

mNumSides = rb.resval.rlong;

 

filer->readItem(&rb);

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

throw AcDb::kDxfNormalX

mPlaneNormal = asVec3d(rb.resval.rpoint);

 

filer->readItem(&rb);

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

throw AcDb::kDxfText;

setName(rb.resval.rstring);

 

filer->readItem(&rb);

if (rb.restype != kDxfHardPointerId)

throw AcDb::kDxfHardPointerId;

acdbGetObjectId(mTextStyle, rb.resval.rlname);

 




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



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