基于C#的AutoCad二次开发–第一章–环境搭建及几种二开模式

  • A+
所属分类:.NET技术
摘要

Autocad的开发形式包括visual lisp、objectarx、vba、.Net等等,其中基于.Net平台的C#语言学习曲线较为平缓,使用该语言进行AutoCad的二次开发效率较高。

Autocad的开发形式包括visual lisp、objectarx、vba、.Net等等,其中基于.Net平台的C#语言学习曲线较为平缓,使用该语言进行AutoCad的二次开发效率较高。

本文主要记录了使用C#进行AutoCad二次开发的环境搭建和几种二次开发的模式。

学习资料:1. Autocad .Net开发指南(中文版),此为欧特克公司提供的官方文档;

                  2. AutoCad官网,在开发人员板块可以查阅官方提供的各种类库;

                  3. b站的AutoCad_C#二开视屏,链接如下:

                      https://www.bilibili.com/video/BV1x4411y79M?from=search&seid=11773567052653254338;

                  4. 百度,google......

 

软件配置:Autocad2014 + objectarx2014 + AutoCAD_2014_dotnet_wizards + vs2013;

                 注:此配置不是唯一的,因为.NET框架可向下兼容;

 

第一节:搭建环境

1.1 创建项目

在vs中创建一个类库项目,适用于.dll和对话框应用程序的开发。

基于C#的AutoCad二次开发--第一章--环境搭建及几种二开模式

 

1.2  引用类库

从objectarx2014中引入下图所示类库,并且对于所有类库,右击->属性->复制到本地->false;

基于C#的AutoCad二次开发--第一章--环境搭建及几种二开模式

 

 1.3 框架及目标平台

做完上述操作,建议先不要动项目的框架及目标平台(右击->项目->应用程序or生成),如果编译出问题,再调整这两项,即注意:平台要与Autocad相匹配:是x64 or x32;框架也要相匹配,看是否和当前Autocad版本相兼容。

 

第二节:代码编写

在正式写代码之前,需要了解你想做哪种形式的Cad二次开发,如:.dll; Ribbon; 对话框应用程序等等。不同形式的开发,其代码编写也有所不同。

 

2.1  载入动态链接库(.dll)

这应该是较为常用的,且比较简单快捷的一种开发形式。可以用其来编写一些小的功能,类似于在Cad下方的编辑框中输入一些命令(Command)。

具体开发如下:

在public class xxx下方编写:

[Command("xxx")]                     //可以理解为:当写完代码并加载至cad后,在编译框键入命令xxx,从而执行操作。至于具体执行什么操作,这要根据下面的xxx方法具体的算法逻辑了。

public void xxx()                  //编写期望cad具体执行的操作。

{

xxxxxx;

}

注:以上只是一个模板,具体可参照《Autocad .Net开发指南》上的例子。

 

2.2 对话框应用程序

本质上,这也是一个类库项目,与2.1节类似,也是先编译生成一个.dll格式的动态链接库,然后再通过NETLOAD命令加载入Cad中,随后键入xxx命令,执行操作。但是,与上述开发形式相比,其与用户之间的交互模式更为友好。

一般地,当键入xxx命令后,cad会弹出一个对话框,通过点选按钮的方式,让cad执行具体操作。

具体开发如下:(注:仅为模板)

1. 创建一个类库项目;

2. 添加窗体文件,并在类库中编写类似如下的代码:

public class Class1     {         [CommandMethod("DialogDemo")]         public void DialogDemo()         {             Form1 f1 = new Form1();   //创建窗体实例             f1.ShowDialog();    //弹出对话框,注意与show的区别         }     }

3. 为了实现:当点击按钮,从而触发事件这一操作,

需要编写事件中命令cad所做的具体操作逻辑,这就需要单独编写一个或多个类,可以添加一个类文件,将他们放在其中。

4.最后,为了点击按钮后能够触发相应的事件,在事件处理器中需要添加类似如下的代码:

private void btnDrawToCad_Click(object sender, EventArgs e)         {             MyEntites m1 = new MyEntites((double)numericUpDown1.Value, (double)numericUpDown2.Value, (double)numericUpDown3.Value); //创建一个实例;             datatool.AddEntity(m1.Ents); //将list作参数载入,将创建的图形添加进模型空间块表记录中。         }

5. 综合起来,在cad键入命令xxx后,弹出一个对话框,点击按钮后,在cad中自动画出了一个图形。

 

ps: 随着继续学习深入,其他的一些开发模式也会陆续更新~ to be continue~