乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 8|回复: 0

[ARX]为什么我的自定义实体类加入对象字典 出错

[复制链接]

8

主题

28

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2005-7-3 12:15:00 | 显示全部楼层 |阅读模式
// This is command 'TEST'
void cascoTest()
{               
        acutPrintf("cascoCEntity was on the Drawing.\n");         AcDbBlockTable *pBlkTbl;
        acdbHostApplicationServices()->workingDatabase()
                ->getBlockTable(pBlkTbl, AcDb::kForRead);
        AcDbBlockTableRecord *pTblRcd;
        pBlkTbl->getAt(ACDB_MODEL_SPACE, pTblRcd, AcDb::kForWrite);
        pBlkTbl->close();
         
        cascoCEntity *pMyEnt = new cascoCEntity();//自定义实体类cascoCEntity : public AcDbEntity
        pTblRcd->appendAcDbEntity(objectID, pMyEnt);       
        objectID_a = objectID;       
        const AcGePoint3d start(pMyEnt->Center());
        //pMyEnt->close();
        cascoCEntity *pMySecondEnt = new cascoCEntity("Drawing0.dwg", "TWO_RECT"); //自定义实体类cascoCEntity : public AcDbEntity
        pTblRcd->appendAcDbEntity(objectID, pMySecondEnt);       
                objectID_b = objectID;
                const AcGePoint3d end(pMySecondEnt->Center());
        //pMySecondEnt->close();
        AcDbLine *pLine = new AcDbLine(start, end);
        pTblRcd->appendAcDbEntity(objectID, pLine);
        pLine->close();       
                         AcDbDictionary *pNamedObj;
                         AcDbDictionary *pNameList;
                         acdbHostApplicationServices()->workingDatabase()
                ->getNamedObjectsDictionary(pNamedObj, AcDb::kForWrite);
                         if (pNamedObj->getAt("ASDK_DICT", (AcDbObject*&)pNameList, AcDb::kForWrite)
                                                                                         == Acad::eKeyNotFound)
                         {
                                                         pNameList = new AcDbDictionary;
                                                         AcDbObjectId DictId;
                                                         pNamedObj->setAt("ASDK_DICT", pNameList, DictId);
                         }
                         pNamedObj->close();
                         CascoObjectToNotify *pObj = new CascoObjectToNotify(); //自定义实体类CascoObjectToNotify : public AcDbObject
                         pObj->eLinkage(objectID, true);
                         AcDbObjectId objId;
                         if ((pNameList->getAt("object_to_notify_A", objId))
                                                         == Acad::eKeyNotFound)
                         {
                                                         pNameList->setAt("object_to_notify_A", pObj, objId);
                                                         pObj->close();
                         } else {
                                                         delete pObj;
                                                         ads_printf("object_to_notify_A already exists\n");
                         }
                         pMyEnt->addPersistentReactor(objectID_a); //原来是objId,关键objId为空
                         pMyEnt->close();       
                         pObj = new CascoObjectToNotify();
                         pObj->eLinkage(objectID, false);
                         if ((pNameList->getAt("object_to_notify_B", objId))
                                                         == Acad::eKeyNotFound)
                         {
                                                         pNameList->setAt("object_to_notify_B", pObj, objId);
                                                         pObj->close();
                         } else {
                                                         delete pObj;
                                                         ads_printf("object_to_notify_B already exists\n");
                         }
                         pMySecondEnt->addPersistentReactor(objectID_b);        //原来是objId
        pMySecondEnt->close();
                         pNameList->close();
        pTblRcd->close();       
}
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-2-5 10:54 , Processed in 0.157798 second(s), 54 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表