目录
01案例
02步骤讲解
03关键类理解
04总结
05源码地址
01案例
创建一个圆
using Autodesk.AutoCAD.ApplicationServices.Core;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.Runtime;
namespace Hello.Cad.App01
{
public class Create_02
{
/// <summary>
/// CommandMethod特性中的第一个参数'globalName',表示CAD反射读取该特性时,命令行能够显示和执行的名称。
/// </summary>
[CommandMethod("create_method")]
public void MyFunction()
{
//由静态对象Application获取文档对象
var doc = Application.DocumentManager.MdiActiveDocument;
//模态窗体,调用此函数时,需要锁定文档
using (doc.LockDocument())
{
//当前文档的数据库对象
var db = doc.Database;
//开启事务
using (var host = doc.TransactionManager.StartTransaction())
{
//获取块表
using (var blockTable = host.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable)
{
//获取快表中的块表记录(模型空间)
using (var modelspaceRecord = host.GetObject(blockTable[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord)
{
//输入参数
var origin = new Point3d(10, 10, 0);
var normal = Vector3d.ZAxis;
var radius = 100;
//调用构造函数来创建圆
var cirlce = new Circle(origin, normal, radius);
//块表记录,添加该实体
var circleId = modelspaceRecord.AppendEntity(cirlce);
//事务,记录该实体
host.AddNewlyCreatedDBObject(cirlce, true);
}
}
host.Commit();
}
}
}
}
}
02步骤讲解
a)获取文档对象,锁定文档(如果从模特窗体触发命令)
b)开启新的事务对象(文档或数据库对象均可)
c)获取块表对象
d)获取块表中模型空间的块表记录
e)创建一个园
f)块表记录中添加园这条数据
g)通知事务实体已更新
h)提交事务
03关键类理解
Application
1.概念:应用程序对象,对应当前开启的AutoCAD应用程序的一个实例对象
2.作用:通过它,获取当前窗体的信息;开启一个属于当前窗体的自定义子窗体;获取当前活跃的文档对象;注册窗体事件
Document
1.概念:文档对象,包含模型空间与布局空间
2.作用:用户通过文档来与AutoCAD交互,比如创建、修改实体,打印布局页等
Database
1.概念:数据库对象,每个文档对象的一个属性,使用它实现绘图功能
2.作用:通过它来访问到表与字典对象,进而来操作实体
Transaction
1.概念:事务对象,可以通过文档对象或数据库对象的事务管理器,新建一个新的事务
2.作用:大部分在AutoCAD的操作,只有通过事务才能提交到数据库,从而在文档中显示
BlockTable
1.概念:块表对象,类似于SQL中的一个数据库对象
2.作用:用来管理块表记录对象,支持添加、判断块表记录的功能
BlockTableRecord
1.概念:块表记录,类似于SQL中的一个表,比如模型空间就是一个块表记录实例
2.作用:它能够添加块引用到该对象中,支持对块引用的操作,而一个块表记录是由多个实体构成的,比如模型空间或者一般建立的块引用
04总结
在AutoCAD中创建一个实体的过程,好比往常用的关系型数据库如SQLSERVER中插入一条数据一样。实体对象是一条数据,模型空间块表记录是一个表,通过开启事务,将数据添加到表中,最后提交,这样数据就能够通过文档来呈现在用户眼中;如有不正确的地方,欢迎大家的指正
05源码地址
https://gitee.com/jiangyong95/BlogCAD
标签:02,AutoCAD,AUTOCAD,对象,块表,var,文档,二次开发,using From: https://www.cnblogs.com/looufly/p/17440711.html