AutoCAD.net Transaction实例4 标高

本文介绍了AutoCAD.net中Transaction的使用,特别是针对数据库操作的增删改查。通过TransactionManager管理对象,利用StartTransaction、GetObject、AddNewlyCreatedDBObject和Commit等函数实现图形数据库的管理。文章通过一个实例展示了如何使用Transaction绘制建筑制图中的标高符号,该符号由三角形、水平线和文字组成,并讨论了在添加AttributeReference时需要考虑与BlockReference的关联问题。
摘要由CSDN通过智能技术生成

1 Transaction介绍

一般而言数据库的增删改查操作统一交给Transaction(事务)处理,AutoCAD也不例外,它将所有对象以图形数据库的形式存储,并将对象的打开和关闭交给唯一的TransactionManager进行管理,因此TransactionManager必须是一个全局对象,且随AutoCAD启动而创建,并管理多个被AutoCAD打开的dwg文档。

 存储在硬盘的dwg文档里面的每个对象都要有一个唯一的编号Handle,这样才被AutoCAD正确索引。而被Transaction Manager从硬盘取出放入内存的对象也会被重新分配一个唯一的编号ObjectId,它本质是一个内存地址,有了这个地址我们在代码里面就可以访问到这个对象。

TransactionManager简化了数据库的存储操作,使对象的增删改查主要涉及4个函数:StartTransaction、GetObject、AddNewlyCreatedDBObject、Commit。其中StartTransaction函数是获得Transaction对象的唯一入口,当添加新的对象到内存并得到一个与之关联的ObjectId后,还需要调用AddNewlyCreatedDBObject函数通知TransactionManager,使后续将要被调用的Commit函数将对象存入硬盘,并为该对象分配Handle。

一段简单的添加对象的代码如下:

/// <summary>
/// 添加表记录(BlockTable DimStyleTable LayerTable LinetypeTable RegAppTable TextStyleTable UCSTable ViewportTable ViewTable)
/// </summary>
/// <param name="symbolTableRecord"></param>
/// <param name="symbolTableId"></param>
/// <returns></returns>
private static ObjectId AddSymbolTableRecord(SymbolTableRecord symbolTableRecord, ObjectId symbolTableId)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值