AutoCAD的二次开发支持多种语言,比如Autolisp, VB, C#, Javascript。
在这里,我们将介绍如何用c#,在.NET框架下,建立第一个项目。
一 . 新建项目
- 
启动Visual Studio 2019 
  启动Visual Studio 启动Visual Studio
- 
创建新项目 
  创建新项目 创建新项目
- 
选择类库模板 
  选择类库模板 选择类库模板
- 命名项目
 给项目取个名称MyFirstProject1,项目位置可以自定义。
  image.png image.png
 点击创建,完成项目的创建。
二. 引用AutoCAD.NET API文件
- 找到解决方案资源管理器
  解决方案资源管理器 解决方案资源管理器
如果默认界面没有显示这个管理器的话,可以在菜单栏打开显示:

image.png
- 添加引用
 在引用上右键,选择添加项目引用
  添加项目引用 添加项目引用
- 选择文件
 在弹出的窗口中点击浏览。
  添加项目引用 添加项目引用
 我们的目的是要引用AcMgd.dll,AcDbMgd.dll和AcCoreMgd.dll这三个文件。他们的位置在AutoCAD的安装目录下,比如:C:\Program Files\Autodesk\AutoCAD 2020。
 在文件夹下,用ctrl键将三个文件同时选中,添加。
 如果引用过一次,会有记录,下次加载会更加方便

image.png
- 设置不复制到本地
 导入成功后,可以在依赖项->程序集中看到引入的dll文件。
 同时选中三个程序集,在下面的属性中,将复制本地的项设置为否。
 官方的解释是,如果复制本地,程序导出后会附带这三个dll文件。再加载到AutoCAD中时,会与CAD本身的三个dll文件产生冲突,从而产生未知错误。因此这里最好设置为否。
  image.png image.png
三. 创建命令
环境已经搭建好了,下面我们可以写命令了。
在默认的Class1.cs文件中,你能看到下面这段已经存在的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MyFirstProject1
{
    public class Class1
    {
    }
}
我们开始写下面这段代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
namespace MyFirstProject1
{
    public class Class1
    {
        [CommandMethod("Greeting")]
        public void Greeting()
        {
            // 获取当前文档和数据库
            Document acDoc = Application.DocumentManager.MdiActiveDocument;
            Database acCurDb = acDoc.Database;
            // 启动事务
            using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction())
            {
                // 打开一个Block Table记录
                BlockTable acBlkTb1 = acTrans.GetObject(acCurDb.BlockTableId, OpenMode.ForRead) as BlockTable;
                // 开辟一个可供写的模型空间
                BlockTableRecord acBlkTblRec = acTrans.GetObject(acBlkTb1[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;
                // 创建一个文字对象
                using (MText objText = new MText())
                {
                    // 位置
                    objText.Location = new Autodesk.AutoCAD.Geometry.Point3d(0, 0, 0);
                    // 内容
                    objText.Contents = "Hello, Welcome to AutoCAD .NET";
                    // 将文字对象加入到之前开辟的模型空间
                    acBlkTblRec.AppendEntity(objText);
                    // 加入事务
                    acTrans.AddNewlyCreatedDBObject(objText, true);
                }
                acTrans.Commit();
            }
        }
    }
}
四. 生成解决方案并才AutoCAD中执行
我们已经写好了一段命令,但是如何在AutoCAD中执行呢?
- 
生成解决方案 
 在Visual Studio的菜单栏中,选择生成->生成解决方案。
  生成解决方案 生成解决方案
 在最下面的输出状态栏中,可以看到成功提示信息。
  输出状态栏 输出状态栏
 说明生成解决方案成功。生在的文件在我们的vs项目文件夹下。
  image.png image.png
- 
在AutoCAD中操作 
 启动AutoCAD
  启动AutoCAD 启动AutoCAD
 在CAD的命令行输入栏中,输入netload
  NETLOAD NETLOAD
 在弹出的对话框中,找到并选择MyFirstProject1.dll文件
  MyFirstProject1.dll MyFirstProject1.dll
选择始终加载

加载确认
此时,我们可以输入之前在代码中设定的命令名称greeting,回车或空格确认

image.png
在cad中缩放视图,可以看到在坐标0点附近,出现了一行文字Hello, Welcom to AutoCAD .NET。

image.png
到此,我们的第一个项目就建立并运行成功了!
 
                                 
                                 
                 
             
                            