CAD数据库 创建简单的对象
来源:互联网 发布:linux 查看nginx配置 编辑:程序博客网 时间:2024/05/01 08:08
1、介绍
每个AutoCAD图样代表保存了几种类型对象的结构化数据库。当你打开一个新的图样时,AutoCAD会在后台创建一个组织过并且高效的数据库。这个数据库拥有最少允许你创建基本图形的数据。
这个最少数据基本上表现为像层,线型,文本样式等等的对象。这样你就有了层0,标准文本样式,连续的线型及其它。
自从AutoCAD 2000起你就能同时与多个图形一起工作,这个就是我们说的多文档界面(MDI)环境。这个功能在带来了更多的灵活的同时,也让处理多个图形变得额外复杂。这个课程里我们不讨论多文档界面,但是这个可能会是未来ObjectARX应用程序里要求的。
2、数据如何存取
数据库保存一个图样展现必须的所有各类的对象。这些对象都存取在适当的容器里,这些容器是用来管理同类对象的特殊对象。通过这种方式,我们就有了合适的方法和过程用于存取实体,层,文本样式等等。每个存储在数据库中的对象有一个被称为ObjectId的标识符。这个标识符在同一个AutoCAD session里是唯一的,在每个对象的生命周期内都是有效的。ObjectId由数据库自行生成 ,我们不用关心如何创建它。
在ObjectARX内容我们有三个基本的对象:
实体:用于表现图形的对象(线,弧线,文本……);
容器:用于存储和管理集合的特殊对象(层表,线型表……);
对象:没有图形显示的对象 (组,布局……)
3、AutoCAD的数据结构
a、创建对象
通过ObjectARX创建对象有一些方法,根据你想创建哪种对象和你想要在哪里存储它来定(大部分情况下我们保存对象在它特有的容器内)。但基本上,你将要依照下面的顺序:
为你想要创建的对象类型定义一个指针,然后调用它的new操作;
由这个指针,调用这个对象的适当方法改变它的特性;
获得你想创建对象的数据库的指针(大部情况下是当前数据库);
打开存储它的适当容器;
调用特定的容器方法,传递它的指针,存储它。
自动接收由所在容器创建的ObjectId;
完成操作,关闭所有打开的对象,包括容器和你刚创建的对象。
很明显你要创建一些方便的类将这个过程自动化,因为它们是如此的相似,很容易重用。最主要的思想是创建一种数据库实用方法,如 AddLayer, AddLine, AddCircle, AddTextStyle,等等。
*关闭打开的对象是很重要的一件事,因为这个会导致AutoCAD终止运行。
b、创建直线的简单代码(AcDbLine)
这个代码用来说明如何在两点间创建一条简单的线。过程很简单,并且没有错误处理。这个代码需要被放到ObjectARX 应用程序结构里来工作。主要是思想是向你展示一些概念。此处我们将创建能工作的代码。请注意打开的关闭操作的顺序。
// 现在我们需要实例化一个AcDbLine指针
// 在这个例子里,它的构造构造函数允许我传递两个点的参数
AcDbLine *pLine = new AcDbLine(startPt, endPt);
// 现在需要打开适当的容器,就是BlockTable
AcDbBlockTable *pBlockTable = NULL;
// 首先,得到当前数据库,然后取得BlcokTable
AcDbDatabase* pDB = acdbHostApplicationServices()->workingDatabase();
pDB->getSymbolTable(pBlockTable, AcDb::kForRead);
// 在BlockTable内, 打开ModelSpace
AcDbBlockTableRecord* pBlockTableRecord = NULL;
pBlockTable->getAt(ACDB_MODEL_SPACE, pBlockTableRecord,AcDb::kForWrite);
// 得到ModelSpace之后我们可以关闭BlockTable了
pBlockTable->close();
// 使用ModelSpace指针我们可以增加我们全新的直接
AcDbObjectId lineId = AcDbObjectId::kNull;
pBlockTableRecord->appendAcDbEntity(lineId, pLine);
// 最后,为了完成整个处理,我们需要关闭ModelSpace和实体entity
pBlockTableRecord->close();
pLine->close();
- CAD数据库 创建简单的对象
- CAD的Dock窗口创建
- 对象的简单创建流程
- 创建数据库对象的方法
- 创建简单的SQLitem 数据库
- mysql ---创建简单的数据库
- 基于OpenCascade的简单CAD功能实现
- CAD图纸简单的那里有啊
- cad二次开发的一些简单入门实例
- js创建最简单的对象
- java创建对象的简单方式
- oracle数据库对象的创建和使用
- Hibernate数据库对象的创建与导出
- 创建mysql数据库的PDO对象
- 数据库的对象、数据类型、创建表
- 使用phonegap创建简单的数据库
- 如何创建一个简单的数据库
- 怎样创建一个简单的mysql数据库
- 远程登录不了网络摄像机是什么原因?
- C语言指针4-内存的灵活操作
- Windows消息编程
- HDU1251字典树
- Base
- CAD数据库 创建简单的对象
- 全手工制作arm-linux交叉编译工具链《一》
- wxLua 扩展
- 自己制作arm-linux交叉编译环境(一)
- 自己制作arm-linux交叉编译环境(二)-crosstool篇
- DsoFramer.ocx制作CAB包详细图解过程
- wchar to char转换
- 小红伞误报病毒。误删了userinit.exe。使用USB启动技术修复。
- XXX is not in the sudoers file. This incident will be reported.