1、创建一个图形对象的步骤如下
(1)得到创建对象的图形数据库;
(2)在内存中创建实体类的一个对象;
(3)定义一个指向当前数据库的事务处理;
(4)打开图形数据库的块表;
(5)打开一个存储实体的块表记录(通常绘图都在模型空间中进行),所有模型空间的实体都存储在块表“模型空间”记录中;
(6)将该对象添加到块表记录中;
(7)把对象添加到事务处理中;
(8)提交事务处理。
2、添加直线的例子
using System;
using System.Collections;
using System.Collections.Specialized;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.EditorInput;
using AutoCAD;
[assembly: CommandClass(typeof(YunyouXueYuan.MyCommands))]
namespace YunyouXueYuan
{
public class MyCommands
{
[CommandMethod("MKLine")]
public void MKLine()
{
//(1)获取当前活动图形数据库
Database db = HostApplicationServices.WorkingDatabase;
//(2)新建一个直线对象
Point3d startPoint = new Point3d(0, 100, 0); //直线起点
Point3d endPoint = new Point3d(100, 100, 0); //直线终点
Line line = new Line(startPoint, endPoint);
//(3)定义一个指向当前数据库的事务处理,以添加直线
using (Transaction trans = db.TransactionManager.StartTransaction())
{
//(3-1)以读方式打开块表..
BlockTable bt = (BlockTable)trans.GetObject(db.BlockTableId, OpenMode.ForRead);
//(3-2)以写方式打开模型空间块表记录
BlockTableRecord btr = (BlockTableRecord)trans.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite);
//(3-3)将图形对象的信息添加到块表记录中,并返回ObjectId对象.
btr.AppendEntity(line);
//(3-4)把对象添加到事务处理中.
trans.AddNewlyCreatedDBObject(line, true);
//(3-5)提交事务处理
trans.Commit();
}
}
}
3、例子代码结构截图
这个例子非常简单,想学习AutoCAD二次开发(c#、C++等语言)、BIM软件二次开发、Java、python等在线课程的同学,请关注云幽学院的视频课程 yunyou.ke.qq.com。
想获取例子完整源代码的同学,yunyou.ke.qq.com报名免费课程加群即可。