EaBIM一直以来积极响应国家“十二五”推进建筑业信息化的号召,对建筑领域的信息技术开展深入技术交流和探讨!致力于打造“BIM-建筑师-生态技术”三位一体综合资源交流共享平台,希望为BIM与可持续设计理念及技术的普及做出微小的贡献!!!

EaBIM

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
查看: 698|回复: 0
打印 上一主题 下一主题

[资料] 在AutoCAD中程序化加载.NET程序集的方法

[复制链接]

1514

主题

7465

帖子

1万

积分

admin

Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10

积分
12404

社区QQ达人

跳转到指定楼层
楼主
发表于 2014-1-8 14:43:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

用.NET程序加载.NET程序集,用到了微软的核心类库mscorlib中的System.Reflection命令空间。加载时只要一个函数Assembly.LoadFrom()可以了,试了下速度还是很快地。下面转一下Kean的测试代码(C#):
  1.    1 using Autodesk.AutoCAD.ApplicationServices;
  2.     2 using Autodesk.AutoCAD.EditorInput;
  3.     3 using Autodesk.AutoCAD.Runtime;
  4.     4 using System.Reflection;
  5.     5 namespace LoadModule
  6.     6 {
  7.     7     public class Commands
  8.     8     {
  9.     9         [CommandMethod("MNL")]
  10.    10         static public void MyNetLoad()
  11.    11         {
  12.    12             Document doc =
  13.    13               Application.DocumentManager.MdiActiveDocument;
  14.    14             Editor ed = doc.Editor;
  15.    15             PromptStringOptions pso =
  16.    16               new PromptStringOptions(
  17.    17                 "\n输入要加载的程序集全路径: "
  18.    18               );
  19.    19             pso.AllowSpaces = true;
  20.    20             PromptResult pr = ed.GetString(pso);
  21.    21             if (pr.Status != PromptStatus.OK)
  22.    22                 return;
  23.    23             try
  24.    24             {
  25.    25                 Assembly.LoadFrom(pr.StringResult);
  26.    26             }
  27.    27             catch (System.Exception ex)
  28.    28             {
  29.    29                 ed.WriteMessage(
  30.    30                   "\n无法加载程序集{0}: {1}",
  31.    31                   pr.StringResult,
  32.    32                   ex.Message
  33.    33                 );
  34.    34             }
  35.    35         }
  36.    36     }
  37.    37 }
复制代码
此方法给用户随时后台(不知不觉地)加载.NET程序集提供了一种可能,美中不足的是托管的程序集目前只能加载无法卸载,一次加载终身受用,直到你关闭AutoCAD为至,呵呵。

  Lisp也可以实现相似的功能,下一篇做详细介绍...
转自:http://www.lubanren.com/weblog/post/209.html

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 转播转播 分享分享 分享淘帖 支持支持 反对反对

相关帖子

工作时间:工作日的9:00-12:00/13:30-18:00,节假日不在线,请勿留言
*滑块验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|EaBIM网 ( 苏ICP备2020058923号-1  苏公网安备32011502011255号

GMT+8, 2024-11-16 13:00

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表