CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

ObjectARX 开发指南

相关分类

录制状态

2022-12-31 21:52| 发布者: admin| 查看: 296| 评论: 0|来自: AutoCAD

要仅记录对象状态的一部分,请指定参数,然后使用函数(或其他函数)将相关信息保存在撤消文件中。kFalseautoUndoundoFiler::writeItem()write xxx ()

函数是修改函数的典型例子。因为指定,类承担记录对象状态的相关部分的责任。首先,修改函数必须记录类描述符对象,以便派生类可以检查并让此类在必要时处理其部分撤消数据。setNumSides()AsdkPolyassertWriteEnabled()kFalseautoUndo

undoFiler()->writeAddress(AsdkPoly::desc());

然后修改函数需要指示操作的类型,然后是数据。在此示例中,操作的类型是,数据是。kSetNumSidesmNumSides

Acad::ErrorStatus  
AsdkPoly::setNumSides(int numSides)    
{
    assertWriteEnabled(Adesk::kFalse, Adesk::kTrue);
    if (numSides<3)
        return Acad::eInvalidInput;
    if (mNumSides == numSides)
        return Acad::eOk;
    // There are situations under which AutoCAD doesn't
    // want to do undo recording, so it won't create an
    // undo filer. Check for the existence of the filer
    // before starting to write into it.
    //
    AcDbDwgFiler *pFiler = NULL;
    if ((pFiler = undoFiler()) != NULL) {
        undoFiler()->writeAddress(AsdkPoly::desc());
        undoFiler()->writeItem((Adesk::Int16)kSetNumSides);
        undoFiler()->writeItem((Adesk::Int32)mNumSides);
    }
    mNumSides = numSides; 
    return Acad::eOk;
}

一旦对象执行了记录其完整状态的自动撤消操作,就会忽略其他自动撤消请求。


路过

雷人

握手

鲜花

鸡蛋

最新评论

QQ|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 )

GMT+8, 2024-5-19 16:17

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部