【问题标题】:What are the capabilities of .NET in AutoCad.NET 在 AutoCad 中有哪些功能
【发布时间】:2018-01-08 15:10:14
【问题描述】:

谁能描述一下您可以在 Autocad 中用 C# 创建什么? 我想改进设计办公室的工作,但我不知道我的选择是什么。

  • 我可以创建新对象吗?
  • 根据给定数据形成异常图形的叠加层
  • 其他

在网上我只找到了两个博客,里面有几年前的帖子。没有什么新鲜的。

谁能推荐一些有趣的文章、指南?

任何帮助都将有助于开始。我知道有文档,但我需要逐步解释一切是如何工作的。

【问题讨论】:

标签: autocad autocad-plugin objectarx


【解决方案1】:

你提到的都是可能的。 API 基础与 2007 版相同(自 2007 年以来进行了增量更新和一些二进制中断,但代码保持相似)。对于新开发,请使用您计划支持的最旧版本(最后一个二进制中断版本是 2013 年)

访问AutoCAD DevCenter并查看:

【讨论】:

    【解决方案2】:

    您绝对可以使用 AutoCAD .Net API 创建新对象,下面是一个示例 I wrote a while ago,它创建了一个多引线。

    .Net API 是 C++ ObjectARX API 的托管包装器,因此它涵盖了 C++ API 的大部分功能。它不能做的一件事是从本机类派生自定义类,例如不能通过 .Net 扩展示例 AcDbLine。要实现这一点,您需要使用 C++ API 并可以在 C++/CLI 中编写自定义 .Net 包装器以将其公开给 .Net,然后您将能够从 .Net 实例化您的自定义类,类似于内置类。

    但是,可以使用overrules 在 .Net 中直接修改内置实体的行为。

    如果您的插件只适用于 Windows,那么 .Net 是比 C++ 更方便的选择,并且更灵活地实现 UI。

    [CommandMethod("netTextMLeader")] 公共静态无效 netTextMLader() {

      Document doc = Application.DocumentManager.MdiActiveDocument;
    
      Database db = doc.Database;
    
      Editor ed = doc.Editor;
    
      using (Transaction Tx = db.TransactionManager.StartTransaction()) {
    
        BlockTable table = Tx.GetObject(
         db.BlockTableId,
         OpenMode.ForRead) as BlockTable;
    
    
        BlockTableRecord model = Tx.GetObject(
          table[BlockTableRecord.ModelSpace],
          OpenMode.ForWrite) as BlockTableRecord;
    
    
        MLeader leader = new MLeader();
    
        leader.SetDatabaseDefaults();
    
        leader.ContentType = ContentType.MTextContent;
    
    
        MText mText = new MText();
    
        mText.SetDatabaseDefaults();
    
        mText.Width = 100;
    
        mText.Height = 50;
    
        mText.SetContentsRtf("MLeader");
    
        mText.Location = new Point3d(4, 2, 0);
    
        leader.MText = mText;
    
        int idx = leader.AddLeaderLine(new Point3d(1, 1, 0));
    
        leader.AddFirstVertex(idx, new Point3d(0, 0, 0));
    
        model.AppendEntity(leader);
    
        Tx.AddNewlyCreatedDBObject(leader, true);
    
        Tx.Commit();
      }
    }
    

    【讨论】:

      【解决方案3】:

      使用 .Net 可以创建一个新对象吗? 答案是否定的。您需要为此使用 ObjectArx。但是,使用 .Net,您可以修改对象的外观。例如,您可以修改一条线,使其看起来像一个箭头。不仅是它的外观,还有它的行为方式。所以 .Net 有足够的灵活性,足以弥补创建新对象的需要。基本上有了 .Net,你就拥有了 windows 和 AutoCAD 的强大功能。

      .Net 样本的一个很好的资源是通过接口by Kean Walmsley。尝试浏览此博客,您将了解更多关于 AutoCAD 中 .Net 功能的信息,这比我所能描述的要多。

      【讨论】:

      猜你喜欢
      • 2010-09-05
      • 2011-02-09
      • 1970-01-01
      • 1970-01-01
      • 2021-07-24
      • 1970-01-01
      • 2011-06-09
      • 1970-01-01
      • 2014-03-17
      相关资源
      最近更新 更多