乐筑天下

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

在Autocad 2018中运行此c#2013例程

[复制链接]

68

主题

179

帖子

6

银币

后起之秀

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

铜币
451
发表于 2019-3-26 20:30:47 | 显示全部楼层 |阅读模式
如何在CIVIL 3D或AUTOCAD中运行此c#2013例程
  1. /*
  2. * © Andrey Bushman, 2013
  3. * AutoCAD 2014 x64 Enu
  4. *
  5. * AutoCAD references:
  6. *
  7. * AcCoreMgd.dll
  8. * AcDbMgd.dll
  9. * AcMgd.dll
  10. * Interop.ACSMCOMPONENTS19Lib.dll
  11. */
  12. using System;
  13. using System.Collections.Generic;
  14. using System.Linq;
  15. using System.Text;
  16. using cad = Autodesk.AutoCAD.ApplicationServices.Application;
  17. using App = Autodesk.AutoCAD.ApplicationServices;
  18. using Db = Autodesk.AutoCAD.DatabaseServices;
  19. using Ed = Autodesk.AutoCAD.EditorInput;
  20. using Rtm = Autodesk.AutoCAD.Runtime;
  21. using Comp = ACSMCOMPONENTS19Lib;
  22. [assembly: Rtm.CommandClass(typeof(Bushman.AutoCAD.SheetSetEditor.Commands))]
  23. namespace Bushman.AutoCAD.SheetSetEditor {
  24.     public class Commands {
  25.         const String ns = "bush"; // namespace
  26.         [Rtm.CommandMethod(ns, "test", Rtm.CommandFlags.Modal)]
  27.         public void Renumber() {
  28.             App.Document doc = cad.DocumentManager.MdiActiveDocument;
  29.             Db.Database db = doc.Database;
  30.             Ed.Editor ed = doc.Editor;
  31.             Comp.AcSmSheetSetMgr mng = new Comp.AcSmSheetSetMgr();
  32.             Comp.IAcSmEnumDatabase enumerator = mng.GetDatabaseEnumerator();
  33.             Comp.AcSmDatabase smDb = null;
  34.             while ((smDb = enumerator.Next()) != null) {
  35.                 String fname = smDb.GetFileName();
  36.                 Comp.AcSmSheetSet sheetset = smDb.GetSheetSet();
  37.                 String name = sheetset.GetName();
  38.                 String descr = sheetset.GetDesc();
  39.                 ed.WriteMessage("\nSheet Set: {0}\n", name);
  40.                 Comp.IAcSmEnumComponent encomp = sheetset.GetSheetEnumerator();
  41.                 Comp.IAcSmComponent component = null;
  42.                 while ((component = encomp.Next()) != null) {
  43.                     ProcessElement(ed, component, 0);
  44.                 }
  45.                 encomp.Reset();
  46.             }
  47.             enumerator.Reset();
  48.         }
  49.         // Recursive processing of the elements
  50.         void ProcessElement(Ed.Editor ed, Comp.IAcSmComponent component, Int32 level) {
  51.             ed.WriteMessage("\t{0}{1} (Subset)\n", new String('\t', level), component.GetName());
  52.             Array array = null;
  53.             component.GetDirectlyOwnedObjects(out array);
  54.             if (array != null) {
  55.                 Int32 sheet_number = 0;
  56.                 foreach (var item in array) {
  57.                     if (item is Comp.IAcSmSubset) {
  58.                         ProcessElement(ed, (Comp.IAcSmSubset)item, level + 1);
  59.                     }
  60.                     else if (item is Comp.IAcSmSheet) {
  61.                         Comp.IAcSmSheet sheet = (Comp.IAcSmSheet)item;
  62.                         ed.WriteMessage("\t\t{0}{1} (Sheet)", new String('\t', level), sheet.GetName());
  63.                         sheet.SetNumber(sheet_number.ToString()); // I get an exception here!
  64.                         ++sheet_number;
  65.                     }
  66.                     else if (item is Comp.IAcSmPersist) {
  67.                         Comp.IAcSmPersist persist = (Comp.IAcSmPersist)item;
  68.                         ed.WriteMessage("\t\t{0}Additional info: {1}", new String('\t', level), persist.GetTypeName());
  69.                     }
  70.                     else {
  71.                         ed.WriteMessage("\t\t{0}Unknown object: {1}", new String('\t', level), item.GetType().ToString());
  72.                     }
  73.                     ed.WriteMessage("\n");
  74.                 }
  75.             }
  76.         }
  77.     }
  78. }

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

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

使用道具 举报

57

主题

559

帖子

13

银币

中流砥柱

Rank: 25

铜币
786
发表于 2019-3-26 22:01:43 | 显示全部楼层
哪个AutoCAD版本
它需要在Visual Studio中编译,并引用合适的库以匹配AutoCAD版本
DUH:只需重新阅读标题
回复

使用道具 举报

68

主题

179

帖子

6

银币

后起之秀

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

铜币
451
发表于 2019-4-1 22:31:21 | 显示全部楼层

对于autocad 2018- 2019- 2020
,我已经尝试过了,但我在尝试构建时总是有错误。
我需要一个特殊的指南来构建autocad 2018-2019-2020?
回复

使用道具 举报

4

主题

219

帖子

4

银币

后起之秀

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

铜币
238
发表于 2019-4-2 11:02:42 | 显示全部楼层
由于代码主要是关于通过其COM API的Sheet Set。因此,它与AutoCAD API本身没有什么关系。就构建错误而言,您确实应该包含有关错误是什么的更多详细信息,或者附上图片以显示错误。
但是,我想错误很可能来自COM API参考“AcSmComponents2x.tlb”,其中2x可能是21、22、23,具体取决于AutoCAD版本。因此,检查VS项目中的“参考”以确保您有正确的版本Sheet Set COM API库参考,对应于您的AutoCAD版本(对于AutoCAD2018,它是22),除了正确的AutoCAD版本。NET API参考,当然。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-2-4 08:40 , Processed in 0.145266 second(s), 60 queries .

© 2020-2025 乐筑天下

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