欢迎来到天天文库
浏览记录
ID:37054788
大小:543.81 KB
页数:49页
时间:2019-05-11
《创建和编辑基本图形对象》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第三章创建和编辑基本图形对象在学习ObjectARX的时候,大多数曾经试图直接去学习数据库的操作、几何类等概念,结果并不理想。经过一段时间的摸索,将创建和编辑基本图形对象作为突破口,逐步深入,在学习过程中成就感很强。3.1.1说明本实例运行的结果是在AutoCAD2008中,创建一条直线,该直线的起点是(0,0,0),终点是(100,100,0)。除此之外,不准备再做更多的事情。麻雀虽小,五脏俱全。通过这个程序,你将要开始了解AutoCAD数据库的基本结构3.1创建直线3.1.2思路首先来看看,在AutoCAD中,
2、使用LINE命令创建一条直线,需要哪些东西:命令:_line指定第一点:0,0指定下一点或[放弃(U)]:100,100指定下一点或[放弃(U)]:从上面的命令提示可以看出,创建一条直线,需要用户指定起点和终点。在继续之前,必须给大家介绍一点数据库最基础的几个名词:表:表是数据库的组成单位,一个数据库至少包含一个表。记录:记录是表的组成单位,一个表可能包含多条记录,也可能不包含任何记录。上图用来描述AutoCAD数据库的基本结构再好不过了。从图中来看,实体包含在块表记录中,因此要创建一个图形对象,需要遵循下面的基本
3、步骤:(1)确定要创建对象的图形数据库;(2)获得图形数据库的块表;(3)获得一个存储实体的块表记录,所有模型空间的实体都存储在模型空间的特定记录中。(4)创建实体类的一个对象,将该对象附加到特定的块表记录中。3.1.3步骤(1)使用向导创建一个命令(名称为MyLine)。(2)函数中,添加创建直线对象(在ObjectARX中,AcDbLine类代表直线)的代码://在内存上创建一个新的AcDbLine对象AcGePoint3dptStart(0,0,0);AcGePoint3dptEnd(100,100,0);A
4、cDbLine*pLine=newAcDbLine(ptStart,ptEnd);注意,基于AutoCAD内部的实现机制,必须在堆上创建对象,而不能用下面的语句创建直线的对象:AcDbLineline(ptStart,ptEnd);此时,直线对象仅被在内存上创建,并没有添加到图形数据库中,因此不可能会显示在图形窗口中。(3)在函数中,添加获得指向块表的指针的相关代码://获得指向块表的指针AcDbBlockTable*pBlockTable;acdbHostApplicationServices()->workin
5、gDatabase()->getBlockTable(pBlockTable,AcDb::kForRead);acdbHostApplicationServices()->workingDatabase()能够获得一个指向当前活动的图形数据库的指针,这在后面还要经常遇到。getBlockTable是AcDbDatabase类的一个成员函数,用于获得指向图形数据库的块表的指针,其定义为:inlineAcad::ErrorStatusgetBlockTable(AcDbBlockTable*&pTable,AcDb::
6、OpenModemode);该函数的返回值Acad::ErrorStatus是ObjectARX中定义的一个枚举类型,主要用于判断函数的返回状态,如果函数成功执行会返回Acad::eOk。第一个参数pTable返回指向块表的指针;第二个参数同样是一个枚举类型的变量,其类型AcDb::OpenMode包含了AcDb::kForRead、AcDb::kForWrite和AcDb::kForNotify三个可取的值,创建直线的时候不需要更改块表,因此这里打开的模式为AcDb::kForRead。(4)在函数中,添加获得指
7、向特定块表记录的指针的相关代码://获得指向特定的块表记录(模型空间)的指针AcDbBlockTableRecord*pBlockTableRecord;pBlockTable->getAt(ACDB_MODEL_SPACE,pBlockTableRecord,AcDb::kForWrite);getAt函数是AcDbBlockTable类的一个成员函数,用于获得块表中特定的记录,其定义为Acad::ErrorStatusgetAt(constchar*entryName,AcDbBlockTableRecord*
8、&pRec,AcDb::OpenModeopenMode,boolopenErasedRec=false)const;第一个参数用于指定块表记录的名称,ACDB_MODEL_SPACE是ObjectARX中定义的一个常量,其内容是“*Model_Space”;第二个参数用于返回指向块表记录的指针;第三个参数指定了块表记录打开的模式,下一步要向块表记录中添加实
此文档下载收益归作者所有