AutoCAD.Net自定义菜单及自动加载

嘎子 AutoCAD二次开发, C#, 未分类 2016-02-21 790 次浏览 , , 6条评论

首先要明确一点,在现阶段,.Net是无法添加自定义菜单的,所以只能借助其他方法。最常见的是通过COM的方式引入AcadApplication,从而调用菜单的相关功能。使用此类的时候,需要通过 添加引用->com->AutoCAD 2010 Type Library(或其它版本) 的方式引入Autodesk.AutoCAD.Interop这样一个命名空间。具体代码如下:

当然,如果仅仅这样,代码是不会看自动执行的。通过实现IExtensionApplication接口可以使在DLL加载和释放时自动执行一部分代码:

可以看出,IExtensionApplication接口共包含两个函数,分别在DLL载入和释放时执行。

这样就可以实现在DLL载入时自动出现菜单了,但学有一个问题,此时我们需要使用NETLOAD命令将DLL载入AutoCAD中,当然也有方法让CAD启动时自动载入DLL。


让DLL自动加载,常见的有两种方法,第一种是用Lisp命令,自己对Lisp并不是很懂,所以并没有试用过,不过把代码和方法分享给大家。

写一个lsp文件内容如下:

第一句表示让autocad加载指定的dll,第二句表示执行名为”showpalette”的命令。此处的命令既可以是AutoCAD自带命令也可以是自己编写的命令。

启动Autocad ,工具->Autocadlisp->加载应用程序 在弹出的窗体的启动组中添加上述lsp文件路经。

经过实际验证,因为有很多AutoCAD病毒是通过此方法执行的,所以某些杀毒软件会提示甚至报病毒。

方法二,通过注册表来实现自动加载:

写一个reg文件内容如下:

将以上内容复制到txt文件中,并重命名为XXX.reg,然后双击就能将以上内容导入到注册表中。这个注册码文件和上面Lisp代码的意思差不多。但注册表还有一个好处就是我们可以通过C#来对注册表进行更个性化的读写,如下文:

代码的意义在注释中已有说明,不再多说。


原创文章,转载请注明: 转载自TsonTec:测量解决方案提供者

本文链接地址: AutoCAD.Net自定义菜单及自动加载

相关主题

说点什么

6 评论 在 "AutoCAD.Net自定义菜单及自动加载"

提醒
avatar
排序:   最新 | 最旧 | 得票最多
杨红杰
游客

这种方法还是无法自动运行”AddMenu”自定义的命令,为什么呀,很急用

杨红杰
游客

‘[HKEY_LOCAL_MACHINE\Software\Autodesk\AutoCAD\R17.1\ACAD-6001:804\Applications/yds] ‘”DESCRIPTION”=”加载自定义dll文件” ‘”LOADCTRLS”=dword:0000000c ‘”MANAGED”=dword:00000001 ‘”LOADER”=”F://C#//autocad二次开发//练习//AcdNextool//AcdNextool//bin//Debug//AcdNextool.dll” ‘[HKEY_LOCAL_MACHINE/SOFTWARE/Autodesk/AutoCAD/R17.1/ACAD-6001:804/Applications/yd/Commands] ‘”AddMenu”=”AddMenu”

奇虎分享网
游客

过来看看你的博客,希望每天都更新一些文章。

中土生活红宝书
游客

无论是Lisp的方法还是用注册表的方法,除了加载DLL,都有执行命令的方法。如果仅仅想要自己加载菜单,不使用IExtensionApplication接口也可以。只需要在加载DLL后执行一个类似于ADDMENU的命令也可以。

wpDiscuz
回顶部