前言:在实际项目开发中,我们总会遇到一些问题。比如说在CAD打开之前,修改注册表的内容,或者解决CAD在没有完全加载想要的dll情况下,功能运行报错的bug。因此,下面和大家介绍一下IExtensionApplication接口

IExtensionApplication接口

namespace Autodesk.AutoCAD.Runtime
{public interface IExtensionApplication{void Initialize();void Terminate();}
}

Initialize()

在插件载入时,先运行当前方法

Terminate()

在CAD关闭的时候,运行当前方法

因此我们可以继承这个结构,实现我们自己想定义的方法

使用案例(一)自动运行Ribbon的命令

创建Ribbon方法

具体可以查看上一篇博客,这里就不继续赘述了

public class RibbonCmd{[CommandMethod("RibbonCmd")]public void Ribbon(){...定义按钮代码}}

定义IExtensionApplication接口类

public class App : IExtensionApplication{public void Initialize(){Document acdDoc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;acdDoc.SendStringToExecute("RibbonCmd\n", true, false, false);}public void Terminate(){}}

这里需要注意的点是,方法后面一定加 “\n” 模拟点击enter键,这样子才能运行命令

使用案例(二)自动加载dll

背景

经常在使用一些自己定义的dll文件,或者公用比较多的类库时。总会出现自己想要的dll没有给CAD自动加载进来,这样子我们需要手动去添加对应的dll到CAD的运行环境下,以避免出来未找到相关程序的bug

定义IExtensionApplication接口类

 public class App : IExtensionApplication{public void Initialize(){AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;}private Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args){AssemblyName assemblyName = new AssemblyName(args.Name);string filePath = Path.Combine(Path.GetDirectoryName(typeof(App).Assembly.Location), string.Format("{0}.dll", assemblyName.Name));return File.Exists(filePath) ? Assembly.LoadFrom(filePath) : null;}public void Terminate(){}}

AssemblyResolve事件

当对某个程序集解析失败的时候,运行当前事件。
因此,相关dll加载出错时,会进来当前命令中,指定相关路径再加载一次dll文件

最后

上面只是简单的介绍两种常使用的方法,还有很多广阔的领域可供大家去探索。也可以在这边注入一些服务,修改CAD系统的一些操作。大致的分享就到这里了,大家多多点赞多多支持~~~

CAD二次开发 插件初始化接口IExtensionApplication相关推荐

  1. 关于C#对AutoCad2007二次开发插件工作总结

    上次写关于cad二次开发插件的文章,还是在插件的开发过程中,今天写的是功能已经基本开发完毕,用户开始使用的这样一个节点,进行一个小小的总结吧 此次开发插件,主要分了几个大的功能点,功能点的是来自于用户 ...

  2. CAD二次开发--像纬地与CASS程序一样双击桌面图标实现插件的自动挂载(不用netload也不用进入后输入挂载命令)

    先说一下我为什么要写这个文章,首先这一块我自己研究并查找了很久,始终没有很好的办法.二是网络上很多办法鱼龙混杂,要不很复杂,要不现在就已经过时了,总之不能解决问题.干脆自己写一下,防止遗忘! 要明白C ...

  3. cad二次开发——自动运行dll,加载菜单(收集)

    1.自动加载dll的方法(个人觉得下面第4个方法会更方便) cad加载dll_实现CAD插件启动自动加载的三种方法_weixin_39774556的博客-CSDN博客从网上或者别处淘来的CAD插件,效 ...

  4. c# cad二次开发 通过选择txt文件将自动转换成多段线

    c# cad二次开发 通过选择txt文件将自动转换成多段线,txt样式如下 using System; using System.Collections.Generic; using System.T ...

  5. c#CAD二次开发全套视频目录

    本人非专业编程人员,设计院画图民工一名.自学CAD编程,也写了一些小程序!初期学习lisp编程语言,基本了解CAD各中开发模块,写过一些程序!前段时间自学C#CAD二次开发,遍布网上无教学视频.经过自 ...

  6. cad二次开发 java_关于CAD二次开发,你究竟知道多少?

    原标题:关于CAD二次开发,你究竟知道多少? 一.CAD二次开发,应用广泛,机械工程类比较明显! 二.开发语言:Lisp: Autodesk Lisp ObjectARX: VC++ ActiveX: ...

  7. cad二次开发程序的绿色安装

    此问题的引入是因为一个cad二次开发软件,客户要求做成绿色安装.何为绿色安装呢?软件包copy到一台电脑上(已安装CAD),双击exe,打开的界面包含自定义的菜单.菜单的图标能正确显示.每个功能能使用 ...

  8. C#之CAD二次开发 (11) 文本对象

    # 0. 前言 在CAD中文本对象的处理算是一个很重要的内容了,实际工作中也会遇到很多需要批量处理CAD中文本对象的情况 之前就遇到一个批量一对一替换文本的情况,那个实例代码后面也会贴出来,一个小小的 ...

  9. 基于C#的中望CAD二次开发学习笔记(1)环境测试

    目录 前言 一.ZRXSDK的安装使用 二.创建项目 三.编写环境测试代码 四.在ZWCAD中测试 参考资料 总结 前言 作为一个设计院搬砖人,和各种CAD打交道是必不可少的.当然,其中最为正统的是A ...

最新文章

  1. jupyter 多个python版本
  2. 从Tensorflow代码中理解LSTM网络
  3. 【视频】详解Scala中的类及与Java的详细区别
  4. ES5-11原型与原型链深入、对象继承
  5. Shell脚本案例:批量新增用户
  6. python学什么版本2020年_2020年了居然还有人在学Python?学python有什么用?
  7. K8S Calico
  8. 【转】ABP源码分析三十九:ABP.Hangfire
  9. 天猫京东618下单金额近万亿;苹果或选择印度组装新款iPhone SE;Adobe将于12月31日终止支持Flash| 极客头条...
  10. 【CVRP】基于matlab遗传算法求解带容量的车辆路径规划问题【含Matlab源码 1280期】
  11. 快逸报表数据库密码加密解决方案
  12. vs2012c语言参考手册,visualstudio2012教程
  13. 计算机导论第二版清华大学答案,计算机导论(第2版)课后习题答案【清华大学出版社】(13页)-原创力文档...
  14. PE恢复linux主引导记录,Linux中系统排错及引导恢复
  15. MAC配置IOS、Android真机以及appium环境配置,最新版(一)
  16. 不可错过的《一步一步学Spring Boot》视频教程
  17. 身为码农,为12306说两句公道话:
  18. 台式计算机usb接口无反应6,教你电脑usb接口不能用的解决方法
  19. 参加PHPCONChina 2016大会
  20. tomcat配置manger账户和host-manager账户的方法详细图解

热门文章

  1. 华为CC 华为平台,录音.v3 文件转.wav
  2. 鸿蒙智慧屏系统安装包,鸿蒙系统的电视怎么安装第三方软件,荣耀智慧屏X1装软件教程...
  3. 技本功丨知否知否,Redux源码竟如此意味深长(下集) 1
  4. 《潜伏》搞笑台词大盘点:让你笑到喷饭
  5. while函数用法 matlab,Matlab(七)while循环的使用
  6. RIoT控制:了解和管理风险和物联网
  7. Java序列化(Serializable)与反序列化
  8. Python 应用发布/打包技术
  9. 浅析C语言文件操作 fopen fclose
  10. Nature综述:Rob Knight等大佬手把手教你开展菌群研究