当前位置: 首页 > news >正文

CAD二次开发(8)-探索实现不重启CAD进行热部署代码

最近在研究CAD二次开发过程中,调试代码的过程中,需要频繁地重启CAD,非常浪费我们的开发时间,所以我就一直在想,怎么可以实现在不每次重启代码和CAD的情况下,实现代码的热部署效果。

我找到的方式,就是通过另外一个工具项目,实现对你需要调试的项目的反射,具体操作请看下面。

创建工具项目

在这里插入图片描述
引入CAD相关的包
在这里插入图片描述

反射代码


using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.DatabaseServices;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Reflection;namespace ribbon_test
{public class LoadX{private Action cmd;[CommandMethod("DD")]public void ReloadX(){string dllName = "E:\\cnet_project\\cad-demo\\bin\\Debug\\ribbon_test.dll";//生成的需要调用的文件名string className = "ribbon_test.Less02_创建对象";//空间名.类名string methodName = "CreatedLine";//method名var adapterFileInfo = new FileInfo(Assembly.GetExecutingAssembly().Location);var targetFilePath = Path.Combine(adapterFileInfo.DirectoryName,dllName);var targetAssembly = Assembly.Load(File.ReadAllBytes(targetFilePath));var targetType = targetAssembly.GetType(className);var targetMethod = targetType.GetMethod(methodName);var targetObject = Activator.CreateInstance(targetType);cmd = () => targetMethod.Invoke(targetObject,null);try{cmd?.Invoke();}catch (System.Exception ex){Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage(ex.Message);}}}public class CmdInfo{ public string DllName { get; set; }public string ClassName { get; set; }public string MethodName { get; set; }}
}

在里面 我们需要明确如下几个参数:
dllName :这是我们需要调试的项目构建的位置。
className :这是我们调试项目的类名称,注意要加上空间名称。
methodName :这是我们调试项目,要调试的方法名称。

要调试的项目

在这里插入图片描述
在这里插入图片描述

具体操作

  1. 我们首先启动工具项目,让工具项目联动启动CAD。
  2. 然后加载我们的工具项目dll。
  3. 然后输入工具命令,我的是DD。
    就可以看到如下提示:
    在这里插入图片描述
    表示要调试的项目命令加载成功。
  4. 如果我们调试代码有所修改,修改完后重新生成方案即可。
  5. 再一次输入工具命令,重新加载到CAD中。

相关文章:

  • 算法-分治策略
  • 如何复制文件描述符
  • 解决nvidia驱动和CUDA升级问题
  • for of 和 for in 的区别
  • 二轴机器人大米装箱机:技术创新引领智能包装新潮流
  • 微波电路S参数测量实验方案
  • pyqt5 tablewidget实现excel拖曳填充
  • 关于科技的总结与思考
  • swaggerHole:针对swaggerHub的公共API安全扫描工具
  • 【OPENMV】学习记录 (持续更新)
  • Go 实现的小型web server,可以通过调用api来控制和消耗 CPU 占比。通常用于测试系统负载和性能。
  • 电商API在维护数据安全与合规性中的重要性
  • 【Linux】Centos7升级内核的方法:yum更新(ELRepo)
  • 一键生成迷宫-Word插件-大珩助手新功能
  • RabbitMQ简单使用方法,以异步处理日志为例:
  • Google 是如何开发 Web 框架的
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • 2017-08-04 前端日报
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • gulp 教程
  • spring-boot List转Page
  • SQL 难点解决:记录的引用
  • vagrant 添加本地 box 安装 laravel homestead
  • 爱情 北京女病人
  • 浮动相关
  • 浮现式设计
  • 计算机常识 - 收藏集 - 掘金
  • 近期前端发展计划
  • 普通函数和构造函数的区别
  • 手写双向链表LinkedList的几个常用功能
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 听说你叫Java(二)–Servlet请求
  • 写给高年级小学生看的《Bash 指南》
  • 智能网联汽车信息安全
  • postgresql行列转换函数
  • #13 yum、编译安装与sed命令的使用
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (03)光刻——半导体电路的绘制
  • (52)只出现一次的数字III
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (强烈推荐)移动端音视频从零到上手(上)
  • (转)大型网站的系统架构
  • (转载)利用webkit抓取动态网页和链接
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • .java 9 找不到符号_java找不到符号
  • .NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化
  • .Net 应用中使用dot trace进行性能诊断
  • .NET/C# 编译期能确定的字符串会在字符串暂存池中不会被 GC 垃圾回收掉
  • .net实现头像缩放截取功能 -----转载自accp教程网
  • /dev下添加设备节点的方法步骤(通过device_create)