欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > CAD二次开发(8)-探索实现不重启CAD进行热部署代码

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

2025/6/3 4:13:07 来源:https://blog.csdn.net/wu2374633583/article/details/139536245  浏览:    关键词: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中。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词