用户可以创建的对象的范围,从简单的直线、圆到复杂的样条曲线、椭圆和关联填充区域。通常,用户使用 AppendEntity 函数添加对象到中一个 BlockTableRecord 对象中。对象创建后,就可以修改对象的像图层、颜色和线型之类的属性。
图形数据库与其它数据库程序相似,可以认为在模型空间中的一个直线对象就相当于一条表记录,模型空间就相当于数据为表。在使用数据库时,必须在使用它们之前打开和关闭记录。与存储在数据库中的对象不同的是,需要使用 GetObject 函数从数据库中获取对象,然后定义你想怎样使用对象。
本节主题
打开和关闭对象
创建对象
使用选择集
编辑命名和二维对象
使用图层,颜色和线型
保存和恢复图层状态
向图形中添加文字
打开和关闭对象
使用ObjectIds
使用事务管理器处理事务
在没有事务管理器时打开和关闭对象
升级和降级打开的对象
使用ObjectIds
包含在数据库中的每个对象都被指定了几个唯一编号。使用独特的方式访问对象的方法有:
大多数公共方法都是通过 ObjectID 访问对象的。如果你的工程使用了COm Interop 和托管 .NET API,ObjectID 也可以很好的工作。如果创建了自定义的 AutoLISP 函数,就可以需要使用图元句柄了。
句柄在 AutoCAD 进程之间是不变的,如果需要输出图形信息到外部文件,可能稍后又需要用它更新图形,那么使用句柄是访问对象最好的方式。数据库中对象的 ObjectID 仅当数据库被加载到 内存 中后才存在。一旦数据库关闭了,对象的 ObjectID 就不再存在并且下次数据库再打开时,同一对象的 ObjectID 可能会不同了。
获取对象 ID
当使用对象时,打开对象用于查询和编辑它之前,首先必须获得对象的ID。当图形打开后,一个对象 ID 被 赋值 给数据库中的一个现有对象,一个新对象在它们首次创建时被赋值对象 ID。对象 ID 通常用于获取数据库中的现有对象:
打开对象
只要获得了对象 ID,GetObject 函数就可以根据特定的对象 ID 打开指定对象。一个对象可以用以下几种模式打开:
用户应该以这一种模式打开一个对象,这种模式使访问这个对象有最好的状态。以可写方式打开对象比创建一个可撤消记录需要更多额外的开销。如果你不确定对象是否是你想打开后用于操作的对象,就应该以只读方式打开,然后使用 UpgradeOpen 方法把模式从只读模式升级为可写模式。
GetObject 和 Open 函数都返回一个对象。在一些程序语言中,需要根据被赋值的变量值转换返回值。如果使用的是 VB .NET,就不需要担心转换返回值,因为它自己做这么做。下面示例展示为当前数据库的零层获得 LayerTableRecord。
下面的示例在事务不再需要后手工销毁它。
Dim acCurDb As Document = Application.DocumentManager.MdiActiveDocument.DatabaseDim acTrans As Transaction = acCurDb.TransactionManager.StartTransaction() Dim acLyrTblRec As LayerTableRecordacLyrTblRec = acTrans.GetObject(acCurDb.LayerZero, OpenMode.ForRead) acTrans.Dispose()下面的示例使用 Using 语句在事务不再需要后销毁。Using 语句是首选的代码样式。
Dim acCurDb As Document = Application.DocumentManager.MdiActiveDocument.DatabaseUsing acTrans As Transaction = acCurDb.TransactionManager.StartTransaction() Dim acLyrTblRec As LayerTableRecord acLyrTblRec = acTrans.GetObject(acCurDb.LayerZero, OpenMode.ForRead)End Using使用事务管理器处理事务
事务是用于将多个对象的多个操作一起当作一个简单的操作。事务是通过事务管理器启动和管理的。只要事务启动了,就可以使用 GetObject 函数打开对象。
当用 GetObject 打开使用的对象时,事务管理器会追踪对对象所做的修改。任何创建和添加到数据库的新对象,最好使用 AddNewlyCreatedDBObject 函数将其添加到事务中。一旦对象完成编辑或添加到数据库,应该保存对数据库所做的修改并关闭所有打开的对象,可以使用事务管理器创建的事务对象的 Commit 函数完成此操作。只要完成一个事务,就要用 Dispose 函数关闭事务。
开始新事务并打开对象
提交与回滚更改
嵌套事务
开始新事务并打开对象
事务管理器是从当前 Database 的 TransactionManager 属性访问的。一旦对事务管理器进行了引用,就可以使用 StartTransaction 方法启动一个新事务。StartTransaction 会创建一个 Transaction 对象的实例并允许用户使用 GetObject 方法打开对象。
在事务结束的时候,所有在事务打开期间打开的对象都会被关闭。若要结束事务,请调用 Transactio
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删