AutoCAD打印模型的图元的基本组成是“块”,其存储于内部数据库中的块表之中。
目录
访问内部数据库的方法
var db = HostApplicationServices.WorkingDatabase
或者通过document访问:
var doc = Application.DocumentManager.MdiActiveDocument;
var db = doc.Database;
区别是前者不需要AutoCAD的运行环境。
访问块表的方法
AutoCAD内部数据库中的信息的查询(get)操作都可以通过Transaction.GetObject方法获得ObjectId,块表也不例外。
通常这样写以自动释放资源:
using(var tran = db.TransactionManager.StartTransaction())
{
var blockTable = tran.GetObject(db.BlockTableId,OpenMode.Read) as BlockTable;
// 其他操作
tran.Commit(); // 最后要提交数据库操作
}
块表、模型空间
块表blockTable的每一条记录BlockTableRecord就是一个块,所有的BlockTableRecord记录中有一条特殊的记录叫做ModelSpace(模型空间),就是我们常规的绘图用的空间。
var modelSpace = tran.GetObject(blockTable[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord