CAD二次开发 插件初始化接口IExtensionApplication
前言:在实际项目开发中,我们总会遇到一些问题。比如说在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相关推荐
- 关于C#对AutoCad2007二次开发插件工作总结
上次写关于cad二次开发插件的文章,还是在插件的开发过程中,今天写的是功能已经基本开发完毕,用户开始使用的这样一个节点,进行一个小小的总结吧 此次开发插件,主要分了几个大的功能点,功能点的是来自于用户 ...
- CAD二次开发--像纬地与CASS程序一样双击桌面图标实现插件的自动挂载(不用netload也不用进入后输入挂载命令)
先说一下我为什么要写这个文章,首先这一块我自己研究并查找了很久,始终没有很好的办法.二是网络上很多办法鱼龙混杂,要不很复杂,要不现在就已经过时了,总之不能解决问题.干脆自己写一下,防止遗忘! 要明白C ...
- cad二次开发——自动运行dll,加载菜单(收集)
1.自动加载dll的方法(个人觉得下面第4个方法会更方便) cad加载dll_实现CAD插件启动自动加载的三种方法_weixin_39774556的博客-CSDN博客从网上或者别处淘来的CAD插件,效 ...
- c# cad二次开发 通过选择txt文件将自动转换成多段线
c# cad二次开发 通过选择txt文件将自动转换成多段线,txt样式如下 using System; using System.Collections.Generic; using System.T ...
- c#CAD二次开发全套视频目录
本人非专业编程人员,设计院画图民工一名.自学CAD编程,也写了一些小程序!初期学习lisp编程语言,基本了解CAD各中开发模块,写过一些程序!前段时间自学C#CAD二次开发,遍布网上无教学视频.经过自 ...
- cad二次开发 java_关于CAD二次开发,你究竟知道多少?
原标题:关于CAD二次开发,你究竟知道多少? 一.CAD二次开发,应用广泛,机械工程类比较明显! 二.开发语言:Lisp: Autodesk Lisp ObjectARX: VC++ ActiveX: ...
- cad二次开发程序的绿色安装
此问题的引入是因为一个cad二次开发软件,客户要求做成绿色安装.何为绿色安装呢?软件包copy到一台电脑上(已安装CAD),双击exe,打开的界面包含自定义的菜单.菜单的图标能正确显示.每个功能能使用 ...
- C#之CAD二次开发 (11) 文本对象
# 0. 前言 在CAD中文本对象的处理算是一个很重要的内容了,实际工作中也会遇到很多需要批量处理CAD中文本对象的情况 之前就遇到一个批量一对一替换文本的情况,那个实例代码后面也会贴出来,一个小小的 ...
- 基于C#的中望CAD二次开发学习笔记(1)环境测试
目录 前言 一.ZRXSDK的安装使用 二.创建项目 三.编写环境测试代码 四.在ZWCAD中测试 参考资料 总结 前言 作为一个设计院搬砖人,和各种CAD打交道是必不可少的.当然,其中最为正统的是A ...
最新文章
- jupyter 多个python版本
- 从Tensorflow代码中理解LSTM网络
- 【视频】详解Scala中的类及与Java的详细区别
- ES5-11原型与原型链深入、对象继承
- Shell脚本案例:批量新增用户
- python学什么版本2020年_2020年了居然还有人在学Python?学python有什么用?
- K8S Calico
- 【转】ABP源码分析三十九:ABP.Hangfire
- 天猫京东618下单金额近万亿;苹果或选择印度组装新款iPhone SE;Adobe将于12月31日终止支持Flash| 极客头条...
- 【CVRP】基于matlab遗传算法求解带容量的车辆路径规划问题【含Matlab源码 1280期】
- 快逸报表数据库密码加密解决方案
- vs2012c语言参考手册,visualstudio2012教程
- 计算机导论第二版清华大学答案,计算机导论(第2版)课后习题答案【清华大学出版社】(13页)-原创力文档...
- PE恢复linux主引导记录,Linux中系统排错及引导恢复
- MAC配置IOS、Android真机以及appium环境配置,最新版(一)
- 不可错过的《一步一步学Spring Boot》视频教程
- 身为码农,为12306说两句公道话:
- 台式计算机usb接口无反应6,教你电脑usb接口不能用的解决方法
- 参加PHPCONChina 2016大会
- tomcat配置manger账户和host-manager账户的方法详细图解
热门文章
- 华为CC 华为平台,录音.v3 文件转.wav
- 鸿蒙智慧屏系统安装包,鸿蒙系统的电视怎么安装第三方软件,荣耀智慧屏X1装软件教程...
- 技本功丨知否知否,Redux源码竟如此意味深长(下集) 1
- 《潜伏》搞笑台词大盘点:让你笑到喷饭
- while函数用法 matlab,Matlab(七)while循环的使用
- RIoT控制:了解和管理风险和物联网
- Java序列化(Serializable)与反序列化
- Python 应用发布/打包技术
- 浅析C语言文件操作 fopen fclose
- Nature综述:Rob Knight等大佬手把手教你开展菌群研究