AutoCAD的二次开发支持多种语言,比如Autolisp, VB, C#, Javascript。
在这里,我们将介绍如何用c#,在.NET框架下,建立第一个项目。
一 . 新建项目
-
启动Visual Studio 2019
启动Visual Studio
-
创建新项目
创建新项目
-
选择类库模板
选择类库模板
- 命名项目
给项目取个名称MyFirstProject1
,项目位置可以自定义。
image.png
点击创建,完成项目的创建。
二. 引用AutoCAD.NET API文件
- 找到
解决方案资源管理器
解决方案资源管理器
如果默认界面没有显示这个管理器的话,可以在菜单栏打开显示:
![](https://img.haomeiwen.com/i13838866/9babf69e0fec2f21.png)
- 添加引用
在引用
上右键,选择添加项目引用
添加项目引用
- 选择文件
在弹出的窗口中点击浏览。
添加项目引用
我们的目的是要引用AcMgd.dll
,AcDbMgd.dll
和AcCoreMgd.dll
这三个文件。他们的位置在AutoCAD的安装目录下,比如:C:\Program Files\Autodesk\AutoCAD 2020
。
在文件夹下,用ctrl
键将三个文件同时选中,添加。
如果引用过一次,会有记录,下次加载会更加方便
![](https://img.haomeiwen.com/i13838866/f5252a8ef79ec79f.png)
- 设置不复制到本地
导入成功后,可以在依赖项->程序集
中看到引入的dll文件。
同时选中三个程序集,在下面的属性中,将复制本地的项设置为否。
官方的解释是,如果复制本地,程序导出后会附带这三个dll文件。再加载到AutoCAD中时,会与CAD本身的三个dll文件产生冲突,从而产生未知错误。因此这里最好设置为否。
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
-
在AutoCAD中操作
启动AutoCAD
启动AutoCAD
在CAD的命令行输入栏中,输入netload
NETLOAD
在弹出的对话框中,找到并选择MyFirstProject1.dll
文件
MyFirstProject1.dll
选择始终加载
![](https://img.haomeiwen.com/i13838866/72c5a42692700f12.png)
此时,我们可以输入之前在代码中设定的命令名称greeting
,回车或空格确认
![](https://img.haomeiwen.com/i13838866/f3f7e5e4798f5c8a.png)
在cad中缩放视图,可以看到在坐标0点附近,出现了一行文字Hello, Welcom to AutoCAD .NET
。
![](https://img.haomeiwen.com/i13838866/71bd573d7603aaf9.png)
到此,我们的第一个项目就建立并运行成功了!
网友评论