CAD开发常用方法实例总结

1. 捕获实体ID办法中:遍历块表和选择集那个效率更高?

 edata说:遍历块表更快些
 遍历块表
acedGetPoint(NULL,_T("\n选择点: "),pt)
acedSSGet(_T("X"),NULL,NULL,rb,ss)
AcDbObjectIdArray objIds;
    for (int i=0;i<nsslen;i++)
    {
        ads_name ent;
        acedSSName(ss,i,ent);
        AcDbObjectId objId;
        acdbGetObjectId(objId,ent);
        if (!objId.isNull())
        {
            objIds.append(objId);
        }
    }

选择集

acedGetPoint(NULL,_T("\n选择点: "),pt)
AcGePoint3d p1=asPnt3d(pt);
AcDbBlockTablePointer pBlkTbl(curDoc()->database(),AcDb::kForRead);
AcDbBlockTableIterator *pBlkTblIter=NULL;
Acad::ErrorStatus es= pBlkTbl->newIterator(pBlkTblIter);
AcDbObjectIdArray objIds;
        for (pBlkRcdIter->start();!pBlkRcdIter->done();pBlkRcdIter->step())
        {
            AcDbEntity *pEnt=NULL;
            pBlkRcdIter->getEntity(pEnt,AcDb::kForRead);
            if (pEnt == NULL)
            {
                continue;
            }
            if (pEnt->isKindOf(AcDbPoint::desc()))
            {
                AcDbPoint *pPoint=AcDbPoint::cast(pEnt);
                if (pPoint!=NULL)
                {
                    AcGePoint3d ptTemp=pPoint->position();
                    if (ptTemp.isEqualTo(p1))
                    {
                        objIds.append(pPoint->objectId());
                    }
                }
            }
            pEnt->close();
        }

2.常用鼠标捕获办法总结

后续会一直增加

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值