ObjectARX中获取图元的DXF名称,如AcDbLine->LINE

作者: admin 分类: CAD,ObjectARX 发布时间: 2019-12-17 14:05

某些时候想在arx中获取到图元的DXF名称,如
AcDbCircle->CIRCLE
AcDbLine->LINE
也就是获取DXF组码的0对应的内容,通过两天的寻找,最后在ARX的例子中找到,下面的代码可以实现获取,有需要的人可拿去。
static void getEntityDXFName(void)
        {
                ads_name ent99;
                ads_point pt99;
                if(acedEntSel(_T("\n请选择对象:"),ent99,pt99)==RTNORM)
                {
                        AcDbObjectId entId;
                        //获取图元ID
                        Acad::ErrorStatus es=acdbGetObjectId(entId,ent99);
                        if(es == Acad::eOk)
                        {
                                //以智能指针方式打开对象
                                AcDbObjectPointer<AcDbCurve> pCur(entId,AcDb::kForRead); //打开曲线物体
                                if(pCur.openStatus() != Acad::eOk)
                                {
                                        acutPrintf(_T("\n无法读取点的信息!"));
                                        return;
                                }
                                if(pCur->isKindOf(AcRxObject::desc()))
                                {
                                        AcRxObject* obj = AcRxObject::cast(pCur);
                                        AcRxClass* rxClass = obj->isA();
                                        if (rxClass != NULL) 
                                        {
                                                //CString DXFName = obj->isA()->name();
                                                acutPrintf(_T("\n类型名:%s,DXF名:%s"),obj->isA()->name(),obj->isA()->dxfName());
                                        }
                                }

                        }
                }
                else
                {
                        acutPrintf(_T("\n您退出了命令!"));
                }
        }

代码中主要的部分就是首先要知道使用AcRxClass,而且派生于AcDbEntity的图元如何转化为AcRxClass

EData的方法

pEnt->isA()->dxfName()
objId.objectClass()->dxfName()


对象类型,AcRxClass::name就可以得到

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!

发表评论

标签云