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

相关推荐

  1. cad开发autolisp---目录

    2024-06-08 04:50:01       40 阅读
  2. 【高阶CAD开发】文稿

    2024-06-08 04:50:01       14 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-08 04:50:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-08 04:50:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-08 04:50:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-08 04:50:01       18 阅读

热门阅读

  1. 进位(bit)

    2024-06-08 04:50:01       8 阅读
  2. 如何在Python中创建和使用自定义模块

    2024-06-08 04:50:01       11 阅读
  3. 局域网、城域网、广域网的ip

    2024-06-08 04:50:01       9 阅读
  4. SpringMVC:@RequestMapping注解

    2024-06-08 04:50:01       8 阅读
  5. 【嵌入式 - 关于MCU的内存分配】

    2024-06-08 04:50:01       9 阅读
  6. Android面试题汇总-Handler

    2024-06-08 04:50:01       11 阅读
  7. Mybatis面试系列五

    2024-06-08 04:50:01       9 阅读
  8. Vue3响应式基础——ref()和reactive()

    2024-06-08 04:50:01       7 阅读
  9. Vue封装localStorage设置过期时间

    2024-06-08 04:50:01       8 阅读
  10. 使用 Ant Design Vue 实现动态表头与数据填充

    2024-06-08 04:50:01       9 阅读
  11. learn-vue中template根节点元素Div

    2024-06-08 04:50:01       8 阅读
  12. 2024全国高考作文题解读(文心一言 4.0版本)

    2024-06-08 04:50:01       11 阅读
  13. el-select中下拉数据太多,页面卡顿

    2024-06-08 04:50:01       10 阅读
  14. SEO 中域权限和页面权限之间的区别

    2024-06-08 04:50:01       7 阅读
  15. 如何不用命令创建用户

    2024-06-08 04:50:01       8 阅读