首页 > 其他分享 >ObjectARX 判断实体是否是在位编辑块对象简单例子

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

时间:2024-08-01 22:08:51浏览次数:6  
标签:AcDbObjectId return pLongTrans 在位 是否是 ObjectARX ent objId 移除

判断使用 acdbIsInLongTransaction 应该就可以。

ads_name ent;
    ads_point pt;
    if(RTNORM != acedEntSel(_T("\n选择对象: "),ent,pt)){
      return;
    }
    AcDbObjectId  objId;
    acdbGetObjectId(objId,ent);
    //直接判断
    //if(acdbIsInLongTransaction(objId))
    //判断并移除工作集
    if(isWorksetAndRemove(objId))
    {
      acutPrintf(_T("\n在长事务中"));
    }
    else
    {
      acutPrintf(_T("\n不在长事务中"));
    }

判断并移除对象函数,通过currentLongTransactionFor,可以实现获取长事务对象id,可以处理对象增加到工作集,移除等操作。

  //从工作集中移除
  static bool isWorksetAndRemove(AcDbObjectId objId){
    AcDbObjectId longtransId = acapLongTransactionManagerPtr()->currentLongTransactionFor(curDoc());
    if (AcDbObjectId::kNull != longtransId)
    {
      AcDbObjectPointer<AcDbLongTransaction> pLongTrans(longtransId,AcDb::kForRead);
      if(Acad::eOk != pLongTrans.openStatus()) return false;
      //判断是否在工作集
      if(pLongTrans->workSetHas(objId))
      {
        //升级打开
        pLongTrans->upgradeOpen();
        if(pLongTrans->isWriteEnabled())
        {
          //移除工作集
          pLongTrans->removeFromWorkSet(objId);
        }
        return true;
      }      
    }
    return false;
  }

标签:AcDbObjectId,return,pLongTrans,在位,是否是,ObjectARX,ent,objId,移除
From: https://www.cnblogs.com/edata/p/18337677

相关文章

  • 将 Dialogflow 用于公司网站聊天机器人是否是行业标准?
    我正在为公司网站开发聊天机器人,并且正在考虑使用Dialogflow。Dialogflow在业界是否普遍用于此目的?此外,任何人都可以向我指出一个很好的示例项目或源代码,用于使用Dialogflow创建聊天机器人吗?非常感谢!我正在研究不同的工具来创建一个工具,包括Dialogflow、Langchain+GP......
  • 获取未来 24 小时内经过我所在位置的所有卫星的列表
    我试图在某些空间物体经过我的位置时收到警报,因此我的计划是使用skyfield通过find_events函数生成通过列表(不关心是否可见,没有海拔限制)并存储通过时间列表带有卫星信息。所以我有完整的TLE跟踪对象列表,我设置了skyfield,它创建的列表很好......但我注意到,经过大约两个小时......
  • 导入创建对对象的意外引用,具体取决于模块是否是文件,或者是否是包的一部分
    我有一个微妙的导入问题,它创建的变量引用的对象与我期望的不同,这完全取决于我正在编写的模块是“按原样”导入还是作为包的一部分导入。假设我有一个定义Config类和设置它的函数的简单模块:classConfig:def__init__(self,**kwargs):ifkwargs.get......
  • 对象存在位置
    对象优先在Eden分配堆分为新生代和老年代,新生代用于存放使用后就要被回收的对象(朝生夕死),老年代用于存放生命周期比较长的对象。创建的大部分对象,都属于生命周期较短的对象,所以会存放在新生代。新生代又细分Eden、FromSurvivor、ToSurvivor,对象会优先在Eden区分配。......
  • 微信小程序 --判断是否是手机号
    validatemobile: function (mobile) {    if (mobile.length == 0) {     wx.showToast({            title: '请输入手机号!',            icon: 'success',            duration: 1500          })......
  • C#面:现有一个整数number,请写一个方法判断这个整数是否是2的N次方
    要判断一个整数是否是2的N次方,可以使用位运算来实现。一个整数如果是2的N次方,那么它的二进制表示中只有一位是1,其余位都是0。可以通过将这个整数与它减去1的结果进行按位与运算,如果结果为0,则说明这个整数是2的N次方。以下是一个示例代码:publicboolIsPowerOfTwo(intnumber)......
  • java 查询日期月末、季末、年末,上月末、上季末、上年末,以及两个日期是否是同一月,同一
    packagecom.dc.galaxydata.model;importcom.dc.common.util.DateUtil;importjava.util.Calendar;importjava.util.Date;publicclassDateLastEndUtil{publicstaticvoidmain(String[]args){//System.out.println(DateUtil.format(lastMonthEn......
  • 非接触式DIC测量技术在位移精度校验中的现场操作演示
    数字图像相关(DIC)方法是一种非接触、非干涉的全场变形测量方法,也是实验力学领域发展起来的最为成功的测量方法之一,并已经从实验室走向了工程应用。无论是高校/科研机构,还是试验机厂商,对于测试的精度、稳定性都有着严苛的要求。很多客户在选购新拓三维DIC测量系统前,都要对其进行......
  • 创建一条隧道网络,进行传输的时候,是否是转换为物理网卡IP进行通信?
    在创建隧道网络进行传输时,通常不会直接转换为物理网卡IP进行通信。隧道网络的核心思想是通过在现有网络基础上构建一个虚拟的通道,使得原本无法直接通信的节点能够通过这个通道进行通信。具体来说,隧道传输的过程大致可以分为以下几个步骤:封装数据:在隧道的起点(客户端或隧道起点),首......
  • C语言----判断n是否是2的次方数,利用到按位与&,算法n&(n-1)
    //写一个代码,判断n是否是2的次方数//if(n&(n-1))==0/*2的0次方是1---二进制12的1次方是2---二进制102的2次方是4---二进制1002的一次方-1是1---二进制是12的二次方-1是3---二进制是112的三次方-1是7---二进制是111n与n-1按位与后&是0就是0,两个1才是1所以if(n&(n-1......