.NET AutoCAD二次开发之路(一、基础篇)

烈酒焚心 提交于 2020-01-23 07:43:15

学习AutoCAD二次开发已经有一段时间了,磕磕碰碰,十分的艰辛枯燥。但回想一下还是会有些小激动,嘿嘿!最近这段时间一直都有这么个想法,就是将我学习CAD二次开发的过程用文字的方式记录下来,形成系列,并定期更新。主要内容就是记录自己每天学习过程中所碰见的问题和感悟,并总结今天所学到的内容。目的一是激励自己坚持下去,看着自己一步一步的提高,多有成就感。还有就是和大家积极沟通,希望能够指正我的错误,减少我的弯路。再者就是望能给后面学习的人一点点借鉴经验,好吧其实还有点装B的心里。废话不多说就进入今天的正题:
⦁ 使用工具:Visual Studio 2013和AutoCAD2010
⦁ 学习工具:《AutoCAD VBA和VB.NET开发基础和实例教程》C#版、《深入浅出AutoCAD.NET二次开发》、《AutoCAD .net开发人员手册》和网络(目前)
⦁ 操作系统:Win10 64位
⦁ 开发语言:C#
⦁ 软件设置:
       1.打开Visual Studio 2013,新建一个【类库】项目;
       2.在软件右侧【解决方案资源管理器】(如果没有,在【视图】中选择第一个选项即可)的项目内找到“引用”,右击选择【添加引用】,然后选择【浏览】选项卡,接着找到CAD安装目录下的acdbmgd.dll和acmgd.dll这两个文件,【确定】;
       3.在“引用”中找到刚引用的两个文件acdbmgd.dll和acmgd.dll,右击选择属性,将他们【复制本地】的值设为“False”,双击即可更改。顾名思义,如果【复制本地】的值为“True”时,会将这两个文件复制到当前所创建项目下,会导致AutoCAD运行时发生未知错误(其实我也没试过),在【解决方案资源管理器】里可以包含多个类库文件,每个类库里也可以添加多个类文件(.cs)。每次添加新的【类库】时,都要引用acdbmgd.dll和acmgd.dll这两个文件。
       4.右击类库名,选择属性,将【应用程序】中“目标框架”里面的内容改为“.NET Framework 3.5”,将【生成】中“目标平台”改为“X64”(这个是根据操作系统来选择的,X86是32位,X64则为64位,貌似不改也可以)。

                                                    AutoCAD .NET与Visual Studio版本对应关系
AutoCAD版本 .NET版本 Visual Studio版本
2010-2011(R18.0-R18.1) 3.5 VS2008 SP1
2012(R18.2) 4 VS2010
2013(R19.0) 4 VS2010 SP1


      5.添加命名空间,目的是为了方便调用命名空间中的集成函数,刚看到这得时候也不是很理解,但到后面的具体实例,亲自动手实验了下,就明白了。前几天刚看了教学视频,其中有一句话对我影响很大,他是说不要心疼电脑的键盘,学习编程就要不断的敲击键盘,当你敲坏一个键盘的时候,你就入门了,当你敲得代码有10G的时侯,你就出师了。下面是常用的几个命名空间:
Autodesk.AutoCAD.DatabaseServices;命名空间中的类包括直线、圆、圆弧等,以及层、线型和样式等。
Autodesk.AutoCAD.Runtime;命名空间中的类提供了系统级别的功能,比如常用的CommandMethod属性。(其实我也没理解)
Autodesk.AutoCAD.ApplicationServices;命名空间中的类用来定义和注册新的AutoCAD命令。
Autodesk.AutoCAD.EditorInput;命名空间提供了与用户交互有关的类,比如提示用户输入等。通过这句话就能理解出命名空间的作用。
Autodesk.AutoCAD.Colors;命名空间提供了与颜色有关的类。
Autodesk.AutoCAD.Geometry;命名空间中的类被用来执行2D和3D的几何操作。
    6.要能使能在AutoCAD中能调用命令的方法(比如画直线的命令“L”),执行代码,就需要在类代码开头加入CommandMethod属性。

复制代码
public class Class1
{
  [CommandMethod("HW")]
  public void HW()
  {

  }
}
复制代码

 


    7.打开AutoCAD,输入NETLOAD,浏览项目目录...项目名称\bin\debug文件夹下的dll文件,然后输入相应命令即可。


感谢:《AutoCAD VBA和VB.NET开发基础和实例教程》C#版的作者才鸟,其中大部分知识都是学习这本书上的,再次感谢。我学的时候并没有挨着学习,而是根据具体例子来跳跃学习,具体实例会在今后的日记中说明。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!