明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2825|回复: 3

[运行时] 后绑定AutoCadCom库的dll 提供测试 XP版本

[复制链接]
发表于 2015-4-9 21:20:23 | 显示全部楼层 |阅读模式
本帖最后由 雪山飞狐_lzh 于 2015-4-11 21:24 编辑



调用方式
  1.             MessageBox.Show("你安装了如下版本的AutoCAD\n" + string.Join("\n", AcadVersion.Versions.Select(v => v.ToString()).ToArray()));

  2.             if (!AcadWrapper.GetApp())
  3.                 AcadWrapper.OpenApp(AcadVersion.Versions[1]);

  4.             dynamic app = AcadWrapper.Application;
  5.             app.Visible = true;
  6.             var doc = app.ActiveDocument;

  7.             var res = doc.Utility.GetEntity();
  8.             if (res != null)
  9.             {
  10.                 var obj = res[1].asEntity.ObjectName;
  11.                 var pt = res[2];
  12.             }



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2015-4-9 21:35:44 | 显示全部楼层
同样也可以在.NetApi中调用 下面是加载cui文件的代码

  1.             AcadWrapper.GetApp(Application.AcadApplication);
  2.             var app = AcadWrapper.Application;
  3.             var groups = app.MenuGroups;
  4.             var cui = groups["TlsCad"];

  5.             if (cui == null)
  6.             {

  7.                 var files = AcadWrapper.Preferences.Files;
  8.                 var oldPath = files.SupportPath;
  9.                 if (!oldPath.ToLower().Contains(Path.ToLower()))
  10.                     files.SupportPath += ";" + Path;

  11.                 cui = groups.Load("TlsCad.cui");
  12.                 var menus = cui.Menus;
  13.                 foreach (var menu in menus)
  14.                     menus.InsertMenuInMenuBar(menu.Name, "");

  15.             }
发表于 2015-4-10 14:09:22 | 显示全部楼层
老大强悍!
 楼主| 发表于 2015-4-10 22:59:00 | 显示全部楼层
2015.4.10更新
说明:
AcadVersion为注册表查找已安装AutoCad的所有版本类,
由于手边没有XP以上版本,只能保证XP下运行正常
测试好了的话 我在适当的时候会放出源码
AcadWrapper类是对Acad的对象进行封装的反射类,
实际在.Net4.0,利用dynamic反射也许更好 但是有些Com库的函数可能会出现问题
那么可以使用下面的办法调用AcadWrapper进行混编
  1.         private void button1_Click(object sender, EventArgs e)
  2.         {
  3.             MessageBox.Show("你安装了如下版本的AutoCad\n" + string.Join("\n", AcadVersion.Versions.Select(v => v.ToString()).ToArray()));

  4.             if (!AcadWrapper.GetApp())
  5.                 AcadWrapper.OpenApp(AcadVersion.Versions[0]);

  6.             dynamic app = AcadWrapper.Application.Value;
  7.             app.Visible = true;
  8.             var doc = app.ActiveDocument;

  9.             var util = AcadWrapper.Wrapper(doc.Utility, "Utility");
  10.             var res = util.GetEntity();
  11.             if (res != null)
  12.             {
  13.                 var obj = res[1].asEntity;
  14.                 var pt = res[2];
  15.             }
  16.         }
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 10:48 , Processed in 0.164219 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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