1.AutoCAD 数据库概述

AutoCAD 图形是存储在数据库中的对象集合。一些基本的数据库对象是实体、符号表和字典。实体是一种特殊的数据库对象,在 AutoCAD 图形中具有图形表示形式。直线、圆、圆弧、文本、实体、区域、样条曲线和椭圆都是图元的示例。用户可以在屏幕上看到实体并可以对其进行操作。

符号表和字典是用于存储数据库对象的容器。这两个容器对象都将符号名称(文本字符串)映射到数据库对象。AutoCAD 数据库包括一组固定的符号表,每个符号表都包含特定类别的符号表记录的实例。不能向数据库添加新的符号表。符号表的示例包括包含图层表记录的图层表 () 和包含块表记录的块表 ()。所有 AutoCAD 实体都归块表记录所有。AcDbLayerTableAcDbBlockTable

字典提供了比符号表更通用的容器来存储对象。字典可以包含其类型或子类的任何对象。AutoCAD 数据库在创建新图形时会创建一个名为命名对象字典的字典。命名对象字典可以被视为与数据库关联的所有字典的主“目录”。可以在命名对象字典中创建新字典,并向其中添加新的数据库对象。AcDbObject

下图显示了 AutoCAD 数据库的关键组件。

 

 

 

 

在 AutoCAD 编辑会话期间,可以通过调用以下全局函数来获取当前图形的数据库:

acdbHostApplicationServices()->workingDatabase()

1.1 多个数据库

可以在单个 AutoCAD 会话中加载多个数据库。会话中的每个对象都有一个句柄和一个对象 ID。句柄唯一标识特定数据库范围内的对象,而对象 ID 唯一标识一次加载的所有数据库中的对象。对象 ID 仅在编辑会话期间保留,但句柄随图形一起保存。与对象 ID 相反,在 AutoCAD 会话中加载多个数据库时,不能保证对象句柄是唯一的。

1.2 获取对象标识

使用对象 ID,可以获取指向实际数据库对象的指针,以便可以对其执行操作。有关示例,请参见打开和关闭 ObjectARX 对象

您可以通过多种方式获取对象 ID:

  • 创建一个对象并将其追加到数据库中。然后,数据库为对象提供一个 ID 并将其返回给您。
  • 使用数据库协议获取创建数据库时自动创建的对象的对象 ID(例如固定的符号表集和命名对象字典)。
  • 使用特定于类的协议获取对象 ID。某些类(如符号表和字典)定义拥有其他对象的对象。这些类提供用于获取拥有对象的对象 ID 的协议。
  • 使用迭代器单步执行一个列表或一组对象。AcDb 库提供了许多迭代器,可用于单步执行各种容器对象 (, )。AcDbDictionaryIterator AcDbObjectIterator
  • 查询选择集。用户选择对象后,可以向选择集询问所选对象的实体名称列表,并从名称转换为对象 ID。有关选择集的详细信息,请参阅实体

2.基本数据库对象

在 AutoCAD 中创建对象时,这些对象将添加到数据库中相应的容器对象中。实体将添加到块表中的记录中。符号表记录将添加到相应的符号表中。所有其他对象将添加到命名对象字典或由其他对象(并最终由命名对象字典)拥有的对象或扩展字典中。下一节“在 AutoCAD 中创建对象”中的方案详细介绍了此过程。扩展词典在“扩展词典”部分中讨论。

若要可用,数据库必须至少具有以下对象集:

  • 一组九个符号表,包括块表、图层表和线型表。块表最初包含三条记录:一条名为 *MODEL_SPACE 的记录,以及两条名为 *PAPER_SPACE 和 *PAPER_SPACE0 的图纸空间记录。这些块表记录表示模型空间和两个预定义的图纸空间布局。图层表最初包含一个记录,即图层 0。线型表最初包含“连续”线型。
  • 命名对象字典。创建数据库时,此字典已包含四个数据库字典:GROUP 字典、MLINE 样式字典、布局字典和打印样式名称字典。在 MLINE 样式字典中,标准样式始终存在。

这些对象可以通过传入构造函数的参数在新数据库中自动创建。传入将创建一个空数据库,可以将 DWG 或 DXF  文件加载到该数据库中。kTrue AcDbDatabase buildDefaultDrawing kFalse

3.在AutoCAD中创建对象

本节介绍如何在 AutoCAD 中创建线、圆、图层和组,并演示 AutoCAD 如何将这些对象添加到数据库中。首先,假设用户使用以下命令在模型空间中创建一条线:

4,2行 10,7

在数据库中,AutoCAD 创建类的实例,然后将其存储在模型空间块表记录中,如下图所示:AcDbLine

首次调用 AutoCAD 并且数据库处于默认状态时,图元将添加到模型空间(AutoCAD 中的主空间)中,用于模型几何图形和图形。图纸空间旨在支持“文档”几何图形和图形,例如绘图图纸轮廓、标题栏和注释文本。AutoCAD(在本例中为 LINE)中的实体创建命令会将实体添加到当前数据库以及模型空间块中。您可以询问任何实体哪个数据库以及它属于哪个块。

接下来,假设用户使用以下命令创建一个圆圈:

圆圈 9,3 2

同样,AutoCAD 会在此处创建相应实体的实例,并将其添加到模型空间块表记录中。AcDbCircle

接下来,用户创建一个图层:

图层_make MyLayer

AutoCAD 创建一个新的图层表记录来保存该图层,然后将其添加到图层表中。

最后,用户将所有实体分组在一起:

组 3,2 9,3

AutoCAD 创建一个新的组对象,并将其添加到“组”字典中,该字典包含在命名对象字典中。新组包含组成组的对象的对象 ID 的列表。

原文地址:http://www.cnblogs.com/HRDK-CADeveloper/p/16850657.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性