网站首页 > 编程文章 正文
众所周知,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的应用程序中,重新生成即可马上使用,就让你心急也能吃上热豆腐了。
猜你喜欢
- 2024-10-17 CAD快捷键大全,强烈建议收藏(cad快捷键大全常用)
- 2024-10-17 如何用手机看UG、CAD装配图纸?推荐一个工具,编程达人必备
- 2024-10-17 CAD2023软件配置要求和教程链接(cad2020官方推荐配置)
- 2024-10-17 「各大顶尖设计公司CAD制图规范+图库」〖火柴设计联盟〗第1979期
- 2024-10-17 快来看看,你有没有使用AutoCAD的这些快捷键……
- 2024-10-17 常见的40张CAD平面练习图,用来练习UG3D软件的草图绘制
- 2024-10-17 弱电CAD不算CAD?学学操作,将手速发挥极致,让他人刮目相看
- 2024-10-17 苹果maccad设计绘图软件:AutoCAD(cad苹果mac版)
- 2024-10-17 最全CAD快捷键命令大全(图文版、文字版、键盘版)
- 2024-10-17 玩不转CAD 职场怎么混?autocad快捷键大全 收藏起来 玩转职场
你 发表评论:
欢迎- 05-09Spring Boot3 RESTful 接口参数校验,这篇吃透就够了!
- 05-09《Spring6》第02节:基于XML方式搭建Spring6框架开发环境
- 05-09MapStruct架构设计(mapstruct @mapping)
- 05-09分布式微服务架构组件(分布式微服务架构设计)
- 05-09Java Swing组件下的JButton实例(java swing 组件)
- 05-09java基础都在这了,小主们拿去吧(java基础是指什么)
- 05-09AOP的实现落地(拦截过滤),一切都要从Servlet说起
- 05-09【Spring Boot】WebSocket 的 6 种集成方式
- 最近发表
-
- Spring Boot3 RESTful 接口参数校验,这篇吃透就够了!
- 《Spring6》第02节:基于XML方式搭建Spring6框架开发环境
- MapStruct架构设计(mapstruct @mapping)
- 分布式微服务架构组件(分布式微服务架构设计)
- Java Swing组件下的JButton实例(java swing 组件)
- java基础都在这了,小主们拿去吧(java基础是指什么)
- AOP的实现落地(拦截过滤),一切都要从Servlet说起
- 【Spring Boot】WebSocket 的 6 种集成方式
- Java 中五种最常见加密算法:原理、应用与代码实现
- 用注解进行参数校验,spring validation介绍、使用、实现原理分析
- 标签列表
-
- spire.doc (59)
- system.data.oracleclient (61)
- 按键小精灵源码提取 (66)
- pyqt5designer教程 (65)
- 联想刷bios工具 (66)
- c#源码 (64)
- graphics.h头文件 (62)
- mysqldump下载 (66)
- sqljdbc4.jar下载 (56)
- libmp3lame (60)
- maven3.3.9 (63)
- 二调符号库 (57)
- 苹果ios字体下载 (56)
- git.exe下载 (68)
- diskgenius_winpe (72)
- pythoncrc16 (57)
- solidworks宏文件下载 (59)
- qt帮助文档中文版 (73)
- satacontroller (66)
- hgcad (64)
- bootimg.exe (69)
- android-gif-drawable (62)
- axure9元件库免费下载 (57)
- libmysqlclient.so.18 (58)
- springbootdemo (64)
本文暂时没有评论,来添加一个吧(●'◡'●)