通过ObjectARX的运行时来复制实体

在做CAD开发的时候我们很多时候会碰到把很多实体从新复制一份放到另外一个地方。今天工作中遇到了这种情况,琢磨了一上午找到了复制实体的方式。

ARX的实体基类AcDbObject 提供了几种复制实体的方法,deepClone, wblockClone, virtual AcRxObject *clone() const, copyFrom等方法,其中我选择了用clone这个方法,应为用法简单,只要定义一个AcDbObject的实体,AcRxObject *pObject = pEnt->clone(); 用运行时AcDbEntity *pOtherEnt = AcDbEntity::cast(pObject);升级运行时。将实体添加到模型空间中即可。

for (long i = 0; i < setFloors.Length(); i++)
   {
    ent = setFloors[i];
    OPENOBJ_BEGIN(ent, AcDb::kForRead, AcDbEntity, pEnt);
    if (!pEnt)
    {
     continue;
    }
    AcRxObject *pObject = pEnt->clone();
    if (pObject != NULL)
    {
     AcDbEntity *pOtherEnt = AcDbEntity::cast(pObject);
     if (pOtherEnt != NULL)
     {
      AddToModelSpace(pOtherEnt);
     }
    }
    OPENOBJ_END();
   }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值