Custom object(немного низменный пример
Polysamp), содержащий
AcGePoint2dArray mVertex,
при команде
undo происходит увеличение точек в AcGePoint2dArray ( append),
а не возвращение в предыдущее значение. Хотя при записи я использовал
assertWriteEnabled();
И в документации вроде написано что даже если вы планируете реализовать механизм applyPartialUndo
на первых этапах разработки можете полагаться на автоматическую отмену.
Может кто подскажет как реализовать undo в этом случае?
Вопрос 2 когда выполняется метод AsdkPoly::applyPartialUndo из документации?
(Или у меня тут что-то поломано с исходным кодом?)
AutoCAD почему то игнорирует applyPartialUndo.
Acad::ErrorStatus AkPret99::subTransformBy(const AcGeMatrix3d& xform)
{
if (mDragDataFlags & kCloneMeForDraggingCalled) {
mDragDataFlags |= kUseDragCache;
mDragPlaneNormal = mPlaneNormal;
mDragElevation = mElevation;
AcGeMatrix2d xform2d(xform.convertToLocal(mDragPlaneNormal,mDragElevation));
mDragCenter = mCenter;
mDragCenter.transformBy(xform2d);
mDragPlaneNormal.normalize();
} else {
assertWriteEnabled();
AcGeMatrix2d xform2d(xform.convertToLocal(mPlaneNormal,mElevation));
mCenter.transformBy(xform2d);
for(int i=0;i<mVertex.length();i++) mVertex.at(i)=mVertex.at(i).transformBy(xform2d);
mPlaneNormal.normalize();
}
return Acad::eOk;
}
((-1 . <Entity name: 7ff4a9e0d1e0>) (0 . "AKPRET99") (330 . <Entity name: 7ff4a9e03980>) (5 . "2EFE") (100 . "AcDbEntity")
(67 . 0) (410 . "Model") (8 . "0") (48 . 100.0) (100 . "AkPret99") (90 . 1) (10 7051.0 7788.5 0.0)
(90 . 2) (210 0.0 0.0 1.0) (1 . "test") (340 . <Entity name: 7ff4a9e072a0>) (40 . 0.0)
(12 6397.0 7237.0 0.0) (12 7705.0 8340.0 0.0))после undo
(-1 . <Entity name: 7ff4a9e0d1f0>) (0 . "AKPRET99") (330 . <Entity name: 7ff4a9e03980>) (5 . "2EFF") (100 . "AcDbEntity")
(67 . 0) (410 . "Model") (8 . "0") (48 . 100.0) (100 . "AkPret99") (90 . 1) (10 8517.0 7788.5 0.0)
(90 . 4) (210 0.0 0.0 1.0) (1 . "test") (340 . <Entity name: 7ff4a9e072a0>)
(40 . 0.0)
(12 9102.0 7237.0 0.0) (12 10410.0 8340.0 0.0) (12 7863.0 7237.0 0.0) (12 9171.0 8340.0 0.0))