创建Project
Civi3D (AutoCAD)二次开发的plugin,实际上很简单,只是一个普通的.NET Assembly DLL。因为需要调用AutoCAD以及Civil3D的.NET API,因此需要reference这些product的.NET API DLL。除此之外并没有什么特别的。
创建Project有几种方式:
第一种是最正统的方式,即使用Autodesk提供的AutoCAD 2017 DotNet Wizards,我们可以用http://usa.autodesk.com/adsk/servlet/index?id=1911627&siteID=123112 下载。
安装好这个Wizard之后,Visual Studio中会多出一种project type,如下图所示:
这个Wizard支持AutoCAD以及基于AutoCAD的各个产品,比如Civil3D,Map3D等。直接创建这种project之后,还需要选择一些要reference的DLL。
其中AutoCAD的三个DLL必须reference,分别是AcDbMgd,AcMgd和AcCoreMgd,而Civil3D的project需要另外reference两个DLL,分别是AecBaseMgd和AeccDbMgd。
第二种方式其实也很简单,只要你去创建一个普通的Windows Class Library project,然后reference一下上面提到的这些DLL(这些DLL都可以从Civil3D的安装目录下找到),并且设置一下“Copy Local”为False。
作为二次开发plugin,我们一般会定义一些command,来作为功能的入口。定义命令也很简单,只需要在类的函数前加上CommandMethod这个Attribute即可,例如
就定义了一个命令“MyGroup”。
第三种更简单的方式是,你预先定义好一个project template,把project里的.NET Framework已经需要reference的DLL都设置好,当需要创建一个新project的时候,直接把这个template project拷过来,改个名字就好了。这是最简单而且不容易出错的方式。后面我会创建好这些template projects并且上传到github。