明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 710|回复: 1

ObjectARX 判断实体是否是在位编辑块对象简单例子

[复制链接]
发表于 2024-8-1 21:55:12 | 显示全部楼层 |阅读模式
本帖最后由 edata 于 2024-8-1 22:22 编辑

判断使用 acdbIsInLongTransaction 应该就可以,该函数接口 objectarx2008 新增。低版本arx可以参考后面函数例子实现。
  1.     ads_name ent;
  2.     ads_point pt;
  3.     if(RTNORM != acedEntSel(_T("\n选择对象: "),ent,pt)){
  4.       return;
  5.     }
  6.     AcDbObjectId  objId;
  7.     acdbGetObjectId(objId,ent);
  8.     //直接判断
  9.     //if(acdbIsInLongTransaction(objId))
  10.     //判断并移除工作集
  11.     if(isWorksetAndRemove(objId))
  12.     {
  13.       acutPrintf(_T("\n在长事务中"));
  14.     }
  15.     else
  16.     {
  17.       acutPrintf(_T("\n不在长事务中"));
  18.     }
复制代码
判断并移除对象函数,通过currentLongTransactionFor,可以实现获取长事务对象id,可以处理对象增加到工作集,移除等操作。
简单示例
  1.   //从工作集中移除
  2.   static bool isWorksetAndRemove(AcDbObjectId objId){
  3.     AcDbObjectId longtransId = acapLongTransactionManagerPtr()->currentLongTransactionFor(curDoc());
  4.     if (AcDbObjectId::kNull != longtransId)
  5.     {
  6.       AcDbObjectPointer<AcDbLongTransaction> pLongTrans(longtransId,AcDb::kForRead);
  7.       if(Acad::eOk != pLongTrans.openStatus()) return false;
  8.       //判断是否在工作集
  9.       if(pLongTrans->workSetHas(objId))
  10.       {
  11.         //升级打开
  12.         pLongTrans->upgradeOpen();
  13.         if(pLongTrans->isWriteEnabled())
  14.         {
  15.           //移除工作集
  16.           pLongTrans->removeFromWorkSet(objId);
  17.         }
  18.         return true;
  19.       }      
  20.     }
  21.     return false;
  22.   }
复制代码



评分

参与人数 1明经币 +1 收起 理由
dtucad + 1 赞一个!

查看全部评分

发表于 2024-8-1 22:08:19 | 显示全部楼层
本帖最后由 你有种再说一遍 于 2024-11-15 18:58 编辑

貌似.net acad08没有长事务API,可能要DllImport
原本是通过交集+命令事件上面拦截的...速度不慢,就是感觉怪怪的...

本文收录:
https://www.cnblogs.com/JJBox/p/11185185.html

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 03:02 , Processed in 0.144000 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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