程序员开发实例大全宝库

网站首页 > 编程文章 正文

调试过程不重启CAD的解决方法-C#二次开发CAD(一)

zazugpt 2024-10-17 18:11:53 编程文章 17 ℃ 0 评论

众所周知,AutoCAD启动非常慢,在用C#调试过程中,每次修改代码都需要重新启动一次AutoCAD,用来加载DLL文件,否则就会重新生成失败。

在调试过程中,感觉到有一半的时间用在等待AutoCAD启动的过程。在B站和CSDN都看到了同一种解决方法,经过测试后,终于解决了不再重启AutoCAD的方法,现在把调试过程分享出来,供日后查询使用。

1,使用两个独立的应用程序

一个建立直接调用的DLL类库-LoadNET,另一个打开待调试的类库-Print。

2,添加引用

在LoadNET类库中,添加常用的三个常用的程序集引用:AcCoreMgd.dll、AcDbMgd.dll、AcMgd.dll

3,复制本地设置为false

如果创建了引用文件副本,当加载程序集文件到AutoCAD中时可能会引发意想不到的后果。

4,设置启动外部程序

右键点击项目名称,选择属性,找到调试,启动外部程序中输入CAD的可执行文件。

5,代码部分(下面代码非原创)

下面内容直接复制使用即可,只需要修改名称部分。

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;
//用到了System,System.IO,System.Reflection
namespace LoadNET
{
    public class LoadNET
    {
        private Action cmd;
        [CommandMethod("DDD")]
        public void ReloadX()
        {
            string dllName = "03-forms.dll";//生成的需要调用的文件名
            string className = "_03_Forms.Cmd";//空间名.类名
            string methodName = "Print";//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)
            {
                System.Windows.Forms.MessageBox.Show(ex.Message, "Tips");
            }
        }
    }
    public class CmdInfo
    {
        public string DllName { get; set; }
        public string ClassName { get; set; }
        public string MethodName { get; set; }
    }
}


6,重点修改内容

把下面三行代码中双引号中的内容,修改成自己的程序:

string dllName = "03-forms.dll";//将03-forms.dll修改为调试程序的文件名

string className = "_03_Forms.Cmd";//将_03_Forms.Cmd修改为调试程序的空间名.类名

string methodName = "Print";//将Print修改为调试程序中的方法名字符串,注意不是快捷键字符串

7,调试程序的修改内容

只需要把待调试程序Print的生成DLL的输出路径,修改为与直接调用LoadNET的DLL文件的路径一致即可。

8,开始使用

在LoadNET的程序中点击调试, 启动CAD,输入DDD快捷键,就能打开Print中的界面。如果需要修改代码,只需要在Print的应用程序中,重新生成即可马上使用,就让你心急也能吃上热豆腐了。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表