CAD二次开发学习笔记三(封装添加实体到数据库函数)

本文介绍如何使用ObjectARX在AutoCAD中进行二次开发,重点讲解了如何创建并添加圆形实体到AutoCAD数据库的过程。通过具体的代码示例展示了实体创建、设置属性及添加到指定模型空间的方法。
学会查看ObjectARX帮助文档。
AcGe开头图形计算。
AcDb图形数据库。
在acrxEntryPoint.cpp添加如下代码:
ExpandedBlockStart.gif大气象
//将实体添加到数据库
//cad中的实体最终都要添加到数据库中才能被显示(图纸其实是一个数据库格式的),所以它的作用就是添加实体到数据库中
static Acad::ErrorStatus AddToDb(AcDbEntity* ent, AcDbObjectId& objId)
{    
    Acad::ErrorStatus      es;
    AcDbBlockTable
*        pBlockTable;
    AcDbBlockTableRecord
*  pSpaceRecord;

    
if ((es = acdbHostApplicationServices()->workingDatabase()->getBlockTable(pBlockTable, AcDb::kForRead))
        
!= Acad::eOk) {
            
return es;
    }

    
if ((es = pBlockTable->getAt(ACDB_MODEL_SPACE, 
        pSpaceRecord,
        AcDb::kForWrite)) 
!= Acad::eOk) {
            
return es;
    }


    
if ((es = pBlockTable->close()) != Acad::eOk) {
        
return es;
    }
    
if ((es = pSpaceRecord->appendAcDbEntity(objId, ent)) != Acad::eOk) {
        
return es;
    }

    
return pSpaceRecord->close();

}
public:

    
// - ArxProject2.cmd3 command (do not rename)
    static void ArxProject2cmd3(void)
    {
        
// Add your code for command ArxProject2.cmd3 here
        AcGePoint3d ptStart(0,0,0);
        AcDbCircle 
*pCircle=new AcDbCircle();
        pCircle
->setCenter(ptStart);
        pCircle
->setRadius(1000);
        
//也可以这样定义圆
        
//AcDbCircle *pCircle=new AcDbCircle(ptStart,AcGeVector3d(0,0,1),100);
        AcDbObjectId circleId;
        
//调用画实体函数
        if(AddToDb(pCircle,circleId)!=Acad::eOk)//传入指针,传出id
            AfxMessageBox( _T("加入实体到数据库失败!"));
        pCircle
->close();
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值