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

学会查看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、付费专栏及课程。

余额充值