您的位置:首页 > 移动开发 > Objective-C

三、ObjectARX 创建一条直线

2015-11-10 16:40 549 查看
使用ObjectARX 在vs2008中创建一条直线:

主要过程如下

思路
首先来看看,在
AutoCAD 中,使用 LINE
命令创建一条直线,需要哪些东西:
命令: _line
指定第一点: 0,0
指定下一点或 [放弃(U)]: 100,100
指定下一点或 [放弃(U)]:
从上面的命令提示可以看出,创建一条直线,需要用户指定起点和终点。
在继续之前,必须给大家介绍一点数据库最基础的几个名词:

表:表是数据库的组成单位,一个数据库至少包含一个表。

记录:记录是表的组成单位,一个表可能包含多条记录,也可能不包含任何记录。
图2.1用来描述AutoCAD数据库的基本结构再好不过了。从图中来看,实体包含在块表记
录中,因此要创建一个图形对象,需要遵循下面的基本步骤:
( 1)确定要创建对象的图形数据库;
( 2)获得图形数据库的块表;
( 3)获得一个存储实体的块表记录,所有模型空间的实体都存储在模型空间的特定记
录中。

2 章 创建和编辑基本图形对象
( 4)创建实体类的一个对象,将该对象附加到特定的块表记录中。



2、利用向导新建一ObjectARX项目。



图片过程如上如所示。

3完整的代码片段 

static void CHAP2CreateLine(void)
{
// Add your code for command CHAP2.CreateLine here
AcGePoint3d ptStart(0,0,0);//创建一个3d空间的点
AcGePoint3d ptEnd(100,100,0);
AcDbLine *pLine = new AcDbLine(ptStart,ptEnd);//这个类代表了CAD里面的线实体,起始点终结点

//获取指向块表的指针

AcDbBlockTable *pBlockTable;//声明只想块表的指针
acdbHostApplicationServices()->workingDatabase()->getBlockTable(pBlockTable,AcDb::kForRead);//获取快编织针
//acdbHostApplicationServices()->workingDataBase()->getBlockTable(pBlockTable,AcDb::kForRead);//
AcDbBlockTableRecord *pBlockTableRecord;//声明一个块表记录区的指针
pBlockTable->getAt(ACDB_MODEL_SPACE,pBlockTableRecord,AcDb::kForWrite);//将空间模型区域的记录地址赋给上声明的变量 模式为写

AcDbObjectId lineld;//声明ID
pBlockTableRecord->appendAcDbEntity(lineld,pLine);//将ID与实体传入
//关闭所有这个很关键 用到了什么就要吧所有的都关闭不然会出现问题。
pBlockTable->close();
pBlockTableRecord->close();
pLine->close();

}


新建命令之后在命令函数的里面添加代码如上。

可能会有错误提示:

编译错误的提示为:
AcDbLine 是一个未定义的标识符。已经知道了
AcDbLine 是ObjectARX
中的一个类,那么就要找到其定义的位置,将其所在的头文件包含到当前文件中来。如何确定
AcDbLine 类需要包含哪个头文件呢?打开ObjectARX帮助文档中的ObjectARX Reference,转到【索引】选项卡,在文本框中输入AcDbLine

即可找到头文件
 添加即可
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息