cad中netload 不能加载

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cad中netload 不能加载相关的知识,希望对你有一定的参考价值。

错误详细信息: System.IO.FileLoadException: 未能加载文件或程序集“file:///C:\Program Files\Autodesk\AutoCAD 2013\DgnLsPurge.dll”或它的某一个依赖项。不支持操作。 (异常来自 HRESULT:0x80131515)
文件名:“file:///C:\Program Files\Autodesk\AutoCAD 2013\DgnLsPurge.dll” ---> System.NotSupportedException: 尝试从一个网络位置加载程序集,在早期版本的 .NET Framework 中,这会导致对该程序集进行沙盒处理。此发行版的 .NET Framework 默认情况下不启用 CAS 策略,因此,此加载可能会很危险。如果此加载不是要对程序集进行沙盒处理,请启用 loadFromRemoteSources 开关。有关详细信息,请参见 http://go.microsoft.com/fwlink/?LinkId=155569。
在 System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
在 System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
在 System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
在 System.Reflection.RuntimeAssembly.InternalLoadFrom(String assemblyFile, Evidence securityEvidence, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm, Boolean forIntrospection, Boolean suppressSecurityChecks, StackCrawlMark& stackMark)
在 System.Reflection.Assembly.LoadFrom(String assemblyFile)
在 Autodesk.AutoCAD.Runtime.ExtensionLoader.Load(String fileName)
在 loadmgd()

1、首先打开CAD软件后,点击管理选项卡按钮。

2、然后就能在这里点击-加载应用程序按钮。

3、此时可以在这里看到加载卸载应用程序窗口。

4、就可以在这里选择文件类型程序。

5、在这里就可以看到已加载的应用程序。

6、最后,根据自己的需求选中文件后点击加载按钮就可以载入。

参考技术A

你试下这个方法,找到这个文件(右键+属性+解锁),注意在红色方框内会提出一行文字,大致的意思是系统组止了该文件运行,点解锁了关掉CAD从开应该可以运行了。我也是遇到线型无法删除造成CAD文件过大,补丁能够运行了,但是问题还是无法清理线型。

参考技术B 在cad的安装目录里acad.exe.config; AdMigrator.exe.config这两个文件,用txt打开,添加:

<runtime>
<loadFromRemoteSources enabled="true"/>
</runtime>
参考技术C 在runtime中增加<runtime><loadFromRemoteSources enabled="true" /></runtime> 参考技术D 不知道你的CAD什么版本的,重新安装下CAD软件,安装的时候注意留意这个插件安装有没有报错.NET Framework

CAD 二次开发 -- 自动加载开发的DLL

CAD二次开发可以采用写扩展DLL的方式实现。该DLL的函数可以被CAD调用。

但是调用前,必须用命令netload 将该dll加载到CAD。

其实可以修改注册表,当CAD软件启动后,自动加载扩展DLL。

为此,我写了一个函数,很方便的修改注册表,达到自动加载dll的目的!

该函数支持各个版本cad。

 1 //strCadRegKey = "HLD_CAD_Import"; //唯一注册标识 可用公司名称和程序名称
 2 //strDll dll文件路径
 3 private bool WriteRegistryKey(string strDll,string strCadRegKey)
 4         {
 5             try
 6             {
 7                 RegistryKey localMachine = Registry.LocalMachine;
 8                 RegistryKey SOFTWARE = localMachine.OpenSubKey("SOFTWARE", true);
 9                 RegistryKey Autodesk = SOFTWARE.OpenSubKey("Autodesk", true);
10                 RegistryKey AutoCAD = Autodesk.OpenSubKey("AutoCAD", true);
11 
12                 int result = 0;
13                 foreach (string subDir in GetRegSubDir(AutoCAD, "R"))
14                 {
15                     try
16                     {
17                         RegistryKey CadVersion = AutoCAD.OpenSubKey(subDir, true);
18 
19                         string AcadVersion = GetRegSubDir(CadVersion, "ACAD-").FirstOrDefault();
20                         RegistryKey ACAD = CadVersion.OpenSubKey(AcadVersion, true);
21 
22                         RegistryKey Applications = ACAD.OpenSubKey("Applications", true);
23 
24                         //删除旧有记录
25                         try
26                         {
27                             Applications.DeleteSubKeyTree(strCadRegKey);
28                         }
29                         catch (Exception ex)
30                         { }
31 
32                         RegistryKey MXCAD = Applications.CreateSubKey(strCadRegKey);
33                         MXCAD.SetValue("LOADCTRLS", 0x02);
34                         MXCAD.SetValue("LOADER", strDll);
35                         MXCAD.SetValue("MANAGED", 0x01);
36                         result++;
37                     }
38                     catch (Exception ex)
39                     {
40                         if (showMessage)
41                             System.Windows.Forms.MessageBox.Show(string.Format("注册时出错!{0}", ex.Message));
42                     }
43                 }
44 
45                 if (result > 0 && showMessage)
46                     System.Windows.Forms.MessageBox.Show(string.Format("注册成功!"));
47                 return true;
48             }
49             catch (Exception ex)
50             {
51               
52                 return false;
53             }
54         }

技术交流联系qq 13712486

以上是关于cad中netload 不能加载的主要内容,如果未能解决你的问题,请参考以下文章

c#打开cad更新的同时更新dll

CAD 二次开发 -- 自动加载开发的DLL

CAD 二次开发 -- 自动加载开发的DLL

自动加载简介

CAD中能不能测量CAD图纸的面积?

不能拖动cad 文件到程序窗口打开