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中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/688537.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】进程2——管理概念,进程概念

1.什么是管理? 那在还没有学习进程之前,就问大家,操作系统是怎么管理进行进程管理的呢? 很简单,先把进程描述起来,再把进程组织起来! 我们拿大学为例子 最典型的管理者——校长最典型的被管理…

java线程变量共享

在Java中,线程变量共享可以通过几种方式实现: 1.实例变量:如果一个实例变量被多个线程共享,你需要确保适当的同步,以避免竞态条件。你可以使用synchronized关键字或者Lock接口来保护共享变量。 2.静态变量:…

【vuex小试牛刀】

了解vuex核心概念请移步 https://vuex.vuejs.org/zh/ # 一、初始vuex # 1.1 vuex是什么 就是把需要共享的变量全部存储在一个对象里面,然后将这个对象放在顶层组件中供其他组件使用 父子组件通信时,我们通常会采用 props emit 这种方式。但当通信双方不…

高考志愿填报有哪些技巧和方法

一年一度高考季,又高考志愿填报的时侯了。高考志愿填报的时侯,需要考虑的因素比较多,有的同学觉是离家越远越好,要放飞自我,家长再也管不了我了。有的同学觉得专业比学校牌子重要,只要报个好专业&#xff0…

ros2笔记

Ros2 hello world ccreate packagehelloworld.cpp hello world pythonhelloworld.py file explainros2 cmdcreatebuildfindruninstall interfacesmsg filesrv fileaction file Topic hello world c mkdir -p {your workspace name}/src cd {your workspace name} #进入工作空间…

linux 服务器上离线安装 node nvm

因为是离线环境 如果你是可以访问外网的 下面内容仅供参考 也可以继续按步骤来 node 安装路径 Node.js — Download Node.js nvm 安装路径 Tags nvm-sh/nvm GitHub 后来发现 nvm安装后 nvm use 版本号 报错 让我去nvm install 版本 我是内网环境 install不了 下面 你要 把安…

Java——面向对象进阶(一)

前言 面向对象进阶(一):static,继承,this和super关键字 文章目录 一、static1.1 静态变量1.2 静态方法1.3 静态变量和静态方法在内存中 二、继承2.1 概念2.2 继承的特点和能继承什么2.3 继承中的重写2.4 this和super关键字 一、static 在 Jav…

Isaac Lab CartPole实验(摄像头版本)

Isaac Lab安装可以看这个教程:http://t.csdnimg.cn/SN7duhttp://t.csdnimg.cn/SN7du 1. 问题定义与建模 问题描述:CartPole问题是一个经典的强化学习问题,cartpole 由 cart和pole构成,其中一个小车(Cart)上…

上市公司绿色并购数据+do文件(1996-2024.4)

数据简介:手工搜集重污染上市公司的并购公告,采用内容分析法,对每次并购的背景和目的,主并企业和标的企业经营范围以及该次并购对主并企业带来的影响进行综合分析,逐一判断该项并购事件是否为绿色并购 时间跨度&#…

幽门螺杆菌感染关联和有哪些自然战斗者

谷禾健康 幽门螺杆菌(helicobacterpylori,H.pylori)是革兰氏阴性,螺旋形,微需氧细菌,是一种独特的,能持续定植于人类胃粘膜并能引起胃感染的细菌。 世界上有超过一半的人感染了幽门螺杆菌,但很多没有临床症…

问题:新零售是以消费者体验为中心的数据驱动的泛零售形态,是基于大数据的“人货场“重构 #其他#知识分享

问题:新零售是以消费者体验为中心的数据驱动的泛零售形态,是基于大数据的"人货场"重构 参考答案如图所示

stdlib.h: No such file or directory

Qt报错: error: stdlib.h: No such file or directory #include_next <stdl 报错, 其他博主的解决方法: Qt报错: error: stdlib.h: No such file or directory #include_next <stdl_qt5.15 无法打开包括文件“stdlib.h” no suc…

临床应用的深度学习在视网膜疾病的诊断和转诊中的应用| 文献速递-视觉通用模型与疾病诊断

Title 题目 Clinically applicable deep learning for diagnosis and referral in retinal disease 临床应用的深度学习在视网膜疾病的诊断和转诊中的应用 01 文献速递介绍 诊断成像的数量和复杂性正在以比人类专家可用性更快的速度增加。人工智能在分类一些常见疾病的二…

【数据结构】图论入门

引入 数据的逻辑结构: 集合:数据元素间除“同属于一个集合”外,无其他关系线性结构:一个对多个,例如:线性表、栈、队列树形结构:一个对多个,例如:树图形结构&#xff1…

C++基础编程100题-005 OpenJudge-1.3-03 计算(a+b)/c的值

更多资源请关注纽扣编程微信公众号 http://noi.openjudge.cn/ch0103/03/ 描述 给定3个整数a、b、c&#xff0c;计算表达式(ab)/c的值&#xff0c;/是整除运算。 输入 输入仅一行&#xff0c;包括三个整数a、b、c, 数与数之间以一个空格分开。(&#xff0d;10,000 < a,…

创新指南 | 5个行之有效的初创企业增长策略

本文探讨了五种初创企业实现快速增长的有效策略&#xff1a;利用网络效应通过激励和资本化用户增长&#xff1b;通过持续提供高质量内容建立信任和权威的内容营销&#xff1b;利用简单有效的推荐计划扩展用户群&#xff1b;采用敏捷开发方法快速适应市场变化和客户反馈&#xf…

Flink中因java的泛型擦除导致的报错及解决

【报错】 Exception in thread "main" org.apache.flink.api.common.functions.InvalidTypesException: The return type of function Custom Source could not be determined automatically, due to type erasure. You can give type information hints by using th…

【Stable Diffusion】(基础篇二)—— Stable Diffusion图形界面介绍和基本使用流程

本系列笔记主要参考B站nenly同学的视频教程&#xff0c;传送门&#xff1a;B站第一套系统的AI绘画课&#xff01;零基础学会Stable Diffusion&#xff0c;这绝对是你看过的最容易上手的AI绘画教程 | SD WebUI 保姆级攻略_哔哩哔哩_bilibili 在上一篇博客中&#xff0c;我们成功…

【红黑树变色+旋转】

文章目录 一. 红黑树规则二. 情况一叔叔存在且为红情况二.变色旋旋 一. 红黑树规则 对于红黑树&#xff0c;进行变色旋转处理&#xff0c;终究都是为了维持颜色以下几条规则&#xff0c;只有颜色和规则维持住了&#xff0c;红黑树就维持住了最长路径的长度不超过最短路径的两倍…

MySQL之查询性能优化(十)

查询性能优化 MySQL查询优化器的局限性 松散索引扫描 由于历史原因&#xff0c;MySQL并不支持松散索引扫描&#xff0c;也就无法按照不连续的方式扫描一个索引。通常&#xff0c;MySQL的索引扫描需要先定义一个起点和终点&#xff0c;即使需要的数据只是这段索引中很少数的几…