CAD这个软件对于建筑或者船舶等工程行业的人应该不陌生,大量的图纸需要用CAD进行绘制。CAD的功能基本上很全面,覆盖了所有能用到的功能。但是在具体到某项工作时,有可能仍会有一定的力不从心,结合最近做的一个合并图纸并批量打印的小项目,简单谈谈应用C#.NET对CAD进行二次开发时的一些经验与收获,与大家共勉,这部分内容就先简单介绍一下基本操作。
该示例所应用的是CAD2019(版本的不同导致基于不同版本开发的程序不能直接使用),win10系统,VS2013。
1、创建项目
打开VS2013,点击文件-新建-项目,选择类库,命名为Demo(自己随意),点击确定。
然后右键点击引用-添加引用-浏览。打开CAD安装路径,在根目录下找到以下dll文件:accoremgd.dll,AcCui.dll,acdbmgd.dll,acmgd.dll,AcWindows,AdWindows,Autodesk.AutoCAD.Interop以及Autodesk.AutoCAD.Interop.Common;同样地再次点击引用-添加引用-COM,选择如下图所示的两个类型库。注意:不同版本的CAD对应的类型库的名称也是不一样的。
添加完成后,将添加的这些dll的属性里的复制本地改为False。这是因为如果选择True,那么在生成解决方案时这些dll都会被保存在下来,导致文件夹类文件太多,更重要的一点是,由于版本的问题以及CAD安装路径的不一样,在别的电脑上修改代码时需要重新添加引用。
二、修改配置
右键点击项目-属性-应用程序,将目标框架修改为.NET Framework 4.7(对不同版本的CAD二次开发目标框架也不一样,比如CAD2017需要的框架为.NET Framework 4.5);
点击生成,将目标平台改为x64;
调试-启动操作-启动外部程序,选择CAD安装目录下的acad.exe启动文件。
这样基本的环境配置就完成了,接下来,就开始完成代码的部分。
三、代码编写
现在切换页面到新建的类,将类名重命名为CADTest(可选),在最上面添加using引用CAD的方法;
添加这些引用的作用就是为了简化代码,不然用到CAD的某些方法就要写到上述的语句,就比如:不添加引用:Autodesk.AutoCAD.ApplicationServices.Document doc ; 添加引用:Document doc1;这两句效果是一样的,都是为了声明Document。
先写一个简单的测试程序,在CAD中弹出对话框“Hello World”,继续添加如下代码:
这时会发现打出MessageBox会提示报错,这就需要右键引用-添加引用-程序集-框架,找到System.Windows.Forms,点击确定。然后在代码上方添加 “using System.Windows.Forms;”。
注:图片中的“Autodesk.AutoCAD.ApplicationServices.Application”本来可以添加到using的部分来减少后续相关代码的编写,但是由于“System.Windows.Forms”也有一个“System.Windows.Forms.Application”会引起冲突,所以这里就没有简写。
上述代码完成后,点击启动,会自动打开CAD程序。然后在命令行输入netload后回车,用以加载编写好的dll程序。选择该项目目录X:\Demo\Demo\bin\Debug,选择该dll文件点击打开,然后选择始终加载或者加载一次。这样就把程序加载到了CAD中。
然后在命令行中输入命令helloworld,点回车,就会弹出对话框,显示“Hello World!”注:输入的命令helloworld,与代码中[CommandMethod("HelloWorld")]引号内的内容有关,如果写成[CommandMethod("Test")],那么就在命令行中输入test来启动程序。输入时大小写不影响。
这就是用C#对CAD进行二次开发时的一些基本操作,后续会对其进行进一步的扩展。