AutoCAD .NET二次开发(一)

其他话不多说,直接进入主题,既然是二次开发,当然是用CAD平台已经封装好了很多类,我们需要熟悉和使用它们。常用的AutoCAD .NET API的四个主要DLL文件是:


名称


作用


备注


AcDbMgd.dll


处理图形文件中存储的对象

 

AcMgd.dll


处理AutoCAD应用程序和用户接口

 

AcCui.dll


处理自定义文件

 

AcCoreMgd.dll


处理编辑器、发布与打印、定义AutoLISP命令和函数


AutoCAD 2014版

我们现在不必去深究这些类库的构造,这四个引用 的位置可以在CAD的安装路径下找到,(<盘符>:\program Files\AutoCAD 2013),先来一个测试实例:

新建类库项目,添加AcDbMgd和AcMgd引用,将引用的"复制本地"属性设置为False

设置项目属性中"调试"启动外部CAD程序。

添加测试代码,新建一个DWG文件。

启动调用,程序将打开Cad2013,在命令行中输入"netload",加载生成的dll文件,输入命令"NEWDWG"进行测试。

在调试过程中遇到的主要问题有:

问题一:未能找到类型或命名空间名称"CommandMethod"(是否缺少 using 指令或程序集引用?)

解决:如果是13以上的版本,除了添加AcDbMgd和AcMgd引用外,还应添加accoremgd引用,然后就是using了。

问题二:特性"CommandMethod"对此声明类型无效。它只对"method"声明有效。

解决:CommandMethod语句之后的有效行必定要是一个函数。

问题三:程序集生成 -- 引用的程序集"accoremgd.dll"针对其他处理器

解决:操作系统版本问题,将目标平台改为x64即可。

问题四:netload加载时错误: 未能完成程序集的安装(hr = 0x8007000b)。探测终止。

解决:Framework平台是4.0,其中的Linq引用有问题,不用它,去掉即可。

时间: 2024-08-15 09:09:46

AutoCAD .NET二次开发(一)的相关文章

利用C#进行AUTOCAD的二次开发

众所周知,对AutoCAD进行二次开发用到的主要工具有:ObjectArx,VBA,VLisp.但它们的优缺点是显而易见的:ObjectArx功能强大,编程效率高,但它的缺点是编程者必须掌握VC++,而这门语言非常的难学;VBA和VLisp虽然简单易上手,但它们对于开发大型的程序好象无能为力.那究竟有没有一种语言能结合它们的优点而尽量避免它们的缺点呢? 回答是肯定的,那就是微软新推出的21世纪编程语言C#.关于C#的详细介绍,大家可以参考有关的文章. C#是通过AutoCAD ActiveX 这

AutoCAD C#二次开发

https://www.cnblogs.com/gisoracle/archive/2012/02/19/2357925.html using System; using System.Collections.Generic; using System.Linq; using System.Text; using Autodesk.AutoCAD.Runtime; using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD

AutoCAD .NET二次开发(四)

在CAD中,属性信息一般是以注记的形式存在,但当属性数据内容较多时,显示就成了问题.扩展属性(Xdata)可以解决这一问题,比如南方Cass中就利用了这一点.我们经常用Lisp来读取操作扩展属性. 查看实体属性信息: (entget(car(entsel))'("*")) 但我们为了方便与GIS交互,我们得在.NET中来读取.修改CAD文件中实体的扩展属性.本文先只讲解怎么读取扩展属性. 第一步,不管怎么样,都要先打开文件,获取文档,选择对象,获取实体.下面这段代码在测试中肯定会经常用

AutoCAD二次开发&mdash;&mdash;AutoCAD.NET API开发环境搭建

AutoCAD二次开发--AutoCAD.NET API开发环境搭建 AutoCAD二次开发--AutoCAD.NET API开发环境搭建 AutoCAD二次开发工具:1986年AutoLisp,1989年ADS,1990年DCL,1993年ADS-RX,1995年ObjectARX,1996年Active X Automation(COM),1997年VBA,1998年Visual Lisp,2006年.net API(DLL). 趋势和方向:AutoCAD.net API(AutoCAD20

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

学习AutoCAD二次开发已经有一段时间了,磕磕碰碰,十分的艰辛枯燥.但回想一下还是会有些小激动,嘿嘿!最近这段时间一直都有这么个想法,就是将我学习CAD二次开发的过程用文字的方式记录下来,形成系列,并定期更新.主要内容就是记录自己每天学习过程中所碰见的问题和感悟,并总结今天所学到的内容.目的一是激励自己坚持下去,看着自己一步一步的提高,多有成就感.还有就是和大家积极沟通,希望能够指正我的错误,减少我的弯路.再者就是望能给后面学习的人一点点借鉴经验,好吧其实还有点装B的心里.废话不多说就进入今天

AutoCAD二次开发

AutoCAD本身是功能强大.可配置性极高的软件,并且由于AutoCAD良好的软件架构,AutoCAD的二次开发能力也极强,几乎所有可见的软件功能都能在SDK内找到封装好的接口,由于AutoCAD SDK的向后兼容性极好,写出的程序几乎不用修改就可以适用于所有版本的AutoCAD. AutoCAD的第一代开发工具是AutoLISP,是AutoCAD定制的LISP语言,至今仍然是一个活跃的LISP分支,第二代开发工具是基于C语言的ADS,目前来看几乎被淘汰了,也是被AutoDesk公司标记为dep

.NET AutoCAD二次开发之路(一、直线篇)

我以前只有一点VB的基础,C语言也只是看过,学这个CAD二次开发,也是借工作之余研究下,我到现在已经从事机械行业5年了,中国的工业设计环境区别太大,各行各业的技术现状也不尽相同,但有一点是可以肯定的,那就是自动化,国外都在工业4.0了,我们还在互联网+,哎太out了,我也赶紧进修下,要不就淘汰了.所以我选择了CAD二次开发,主要还是跟专业接近,希望能越学越精吧,未来就让未来的我去面对! 今天主要总结下直线的创建,要想能在CAD中生成直线或者其他图形,都必须遵循几个步骤,那就是: 1.获取当前图形

C#/AutoCAD 2018/ObjectArx/二次开发添加圆对象的的例子(五)

1.创建一个图形对象的步骤如下见上一篇博客(三)2.添加删除实体的工具函数见上一篇博客(四) 3.添加圆的例子(完整源代码请加云幽学院免费课yunyun.ke.qq.com)   [CommandMethod("MKCircle")]        public void MKCircle()        {            //(1)获取当前活动图形数据库            Database db = HostApplicationServices.WorkingData

AutoCAD二次开发-使用ObjectARX向导创建应用程序(HelloWorld例子)

AutoCAD2007+vs2005 首先自己去网上搜索下载AutoCAD2007的ARX开发包. 解压后如下 打开后如下 classmap文件夹为C++类和.net类的框架图,是一个DWG文件. docs帮助文件 inc引用的头文件 lib引用的库文件 redistrib其他引用的库文件 samples例子 utils其他东西 打开utils 上面几个是头文件和库文件 ObjARXWiz这个文件夹是向导(2012以后的版本就没有了,要去官网单独下载,不和开发包在一起) 打开后如下 直接双击安装