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

       

Восстановление состояния


Если Вы определили kFalse для автоотмены, applyPartialUndo объекта () функция называется, когда команда UNDO вызвана. ApplyPartialUndo () функция - виртуальная функция на AcDbObject.

Полученные классы могут осуществлять эту функцию, чтобы интерпретировать класс - определенную информацию, сохраненную регистратором отмены и читать это в. ApplyPartialUndo () функция должна гарантировать, что ваш класс выполнил модификацию. Если не, это супер-сообщение, как показано в следующем примере.

Если Вы осуществляете частичный механизм отмены, убедитесь, что вызвали{*назвали*} следующую функцию так, чтобы никакая регистрация не случилась по умолчанию.

AssertWriteEnabled (kFalse, kFalse);

Как пример, имеется AsdkPoly-функция  applyPartialUndo()

Acad::ErrorStatus

AsdkPoly::applyPartialUndo(AcDbDwgFiler* filer,

AcRxClass* classObj)

{

// The first thing to check is whether the class matches

// ours. If it doesn’t, we call the base class’s

// applyPartialUndo(); hopefully, one of them will

// take care of it.

//

if (classObj != AsdkPoly::desc())

return AcDbCurve::applyPartialUndo(filer, classObj);

// Read the op-code and call the appropriate "set"

// method to undo what was done. The "set" does the

// filing again for redo.

//

Adesk::Int16 shortCode;

filer->readItem(&shortCode);

PolyOpCodeForPartialUndo code;

code = (PolyOpCodeForPartialUndo)shortCode;

Adesk::UInt32 value32;

switch (code) {

case kSetNumSides:

filer->readItem(&value32);

AOK(setNumSides(value32));

break;

default:

assert(Adesk::kFalse);

break;

}

return Acad::eOk;

}



Содержание раздела