创建直线

 

ObjectArx中创建直线函数

AcDbLine(const AcGePoint3d& start, const AcGePoint3d& end)    //起始点与结束点

 

如何创建直线

 1 AcDbObjectId CCreateEnt::CreateLine()
 2 {
 3     AcGePoint3d ptStart(0,0,0);     //创建初始点ptStart
 4     AcGePoint3d ptEnd(100,100,0);    //创建结束点ptEnd
 5     AcDbLine *pLine = new AcDbLine(ptStart,ptEnd);    //根据ptStart与ptEnd构建直线
 6 
 7     AcDbBlockTable *pBlockTable;    //声明块表指针pBlockTable
 8     acdbHostApplicationServices()->workingDatabase()->getBlockTable(pBlockTable,AcDb::kForRead);     //以只读获取当前数据库的块表,并赋给pBlockTable
 9 
10     AcDbBlockTableRecord *pBlockTableRecord;    //声明块表记录指针pBlockTableRecord
11     pBlockTable->getAt(ACDB_MODEL_SPACE,pBlockTableRecord,AcDb::kForWrite);    //以写的方式获取当前模型空间
12 
13     AcDbObjectId lineId;    //声明直线的ObjectId
14     pBlockTableRecord->appendAcDbEntity(lineId,pLine);    //添加该直线到模型空间
15 
16     pBlockTable->close();   //关闭块表
17     pBlockTableRecord->close();    //关闭模型空间块记录
18     pLine->close();   //关闭直线
19 
20     return lineId;
21 
22 }

 

步骤:

(1) 创建直线。

(2) 只读方式获取当前数据库的块表。

(3) 根据块表,以写方式获取代表模型空间的块记录。

(4) 添加直线到到块记录。

(5) 关闭块表,关闭块记录,关闭直线

 

说明:

(1) getBlockTable,getAt,AppendDbEntity函数返回操作的结果,如果成功会返回Acad::eOk。

(2) 打开方式有3种,AcDb::kForRead以读方式打开,AcDb::kForWrite以写的方式打开,AcDb::kForNotify以通知的方式打开。

(3) 宏ACDB_MODEL_SPACE代表模型空间,ACDB_PAPER_SPACE代表图纸空间。

(4) 操作完毕后,需要关闭对象,不要使用delete。

 

 

 

posted on 2013-05-29 18:14  CQU  阅读(480)  评论(0编辑  收藏  举报

导航