乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 74|回复: 3

后绑定AutoCadCom库的dll 提供测试 XP版本

[复制链接]

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2015-4-9 21:20:00 | 显示全部楼层 |阅读模式

kbhwvjvftda.jpg

kbhwvjvftda.jpg


调用方式
  1.             MessageBox.Show("你安装了如下版本的\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.             }

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2015-4-9 21:35:00 | 显示全部楼层
同样也可以在.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.             }
回复

使用道具 举报

32

主题

140

帖子

5

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
268
发表于 2015-4-10 14:09:00 | 显示全部楼层
老大强悍!
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 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.         }
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-6-28 19:17 , Processed in 0.256167 second(s), 65 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表