C#/AutoCAD 2018/ObjectArx/二次开发添加图形对象步骤和添加直线的例子(三)

C#/AutoCAD 2018/ObjectArx/二次开发添加图形对象步骤和添加直线的例子(三)

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报名免费课程加群即可。

猜你喜欢

转载自blog.csdn.net/yunyouxy/article/details/79777927