天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 45|回复: 0

ObjectARX使用事务简单示例

[复制链接]

该用户从未签到

主题

0

回帖

2912

积分

管理员

积分
2912
发表于 2024-6-22 09:46:18 | 显示全部楼层 |阅读模式
AcDbDatabase *pDb = acDocManager->mdiActiveDocument()->database();
               
                if (!pDb)
                {
                        acutPrintf(_T("\nNullDabase!"));
                        return;
                }
                AcTransaction *pTrans = actrTransactionManager->startTransaction();
                if (!pTrans)
                {
                        acutPrintf(_T("\nNullTransaction!"));
                        return;
                }               
                AcDbObject *pObj = NULL;
                Acad::ErrorStatus es= pTrans->getObject(pObj,pDb->blockTableId(),AcDb::kForRead);
                if (Acad::eOk != es || !pObj)
                {
                        acutPrintf(_T("\nGetObject Error= %s !"),es);
                        actrTransactionManager->abortTransaction();
                        return;
                }
                AcDbBlockTable *pBlkTbl = AcDbBlockTable::cast(pObj);
                if (!pBlkTbl)
                {
                        acutPrintf(_T("\nCast Error= %s !"),es);
                        actrTransactionManager->abortTransaction();
                        return;
                }
                AcDbObjectId msObjId;
                es = pBlkTbl->getAt(ACDB_MODEL_SPACE,msObjId);
                if (Acad::eOk != es)
                {
                        acutPrintf(_T("\nGetObjId Error= %s !"),es);
                        actrTransactionManager->abortTransaction();
                        return;
                }
                es = pTrans->getObject(pObj,msObjId,AcDb::kForWrite);
                if (Acad::eOk != es || !pObj)
                {
                        acutPrintf(_T("\nGetObject Error= %s !"),es);
                        actrTransactionManager->abortTransaction();
                        return;
                }
                AcDbBlockTableRecord *pTblRcd=AcDbBlockTableRecord::cast(pObj);
                if (!pTblRcd)
                {
                        acutPrintf(_T("\nCast Error= %s !"),es);
                        actrTransactionManager->abortTransaction();
                        return;
                }
                AcDbLine *pLine = new AcDbLine(AcGePoint3d(0,0,0),AcGePoint3d(500,0,0));
                pLine->setColorIndex(1);
                pTblRcd->appendAcDbEntity(pLine);
                actrTransactionManager->addNewlyCreatedDBRObject(pLine,true);
                actrTransactionManager->endTransaction();

 

 

 

 

ObjectARX使用事务简单示例
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池|中国膜结构网_中国空间膜结构协会

GMT+8, 2024-11-1 13:35 , Processed in 0.135903 second(s), 28 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表