.NET中AutoCad的功能是什么?

时间:2017-10-13 07:40:49

标签: autocad autocad-plugin objectarx

任何人都可以在Autocad中描述您可以在C#中创建的内容吗? 我想改进设计室的工作,但我不知道我的选择是什么。

  • 我可以创建新对象吗?
  • 基于给定数据形成等效绘图的叠加
  • 其他

在网上,我发现只有两个博客上有几年前的帖子。没有什么新东西。

任何人都可以推荐任何有趣的文章,指南吗?

任何帮助都将有助于您开始使用。我知道有文档但我需要一步一步解释一切如何运作。

3 个答案:

答案 0 :(得分:3)

你提到的是可能的。自2007版本以来,API基础知识是相同的(从那时起增量更新和一些二进制中断,但代码仍然相似)。对于新开发,请使用您计划支持的最旧版本(最后一个二进制中断版本是2013)

访问AutoCAD DevCenter并检查:

答案 1 :(得分:0)

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

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

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

如果您的插件只能在Windows上运行,那么.Net是比C ++更方便的选择,并且更灵活地实现UI。

[CommandMethod(" netTextMLeader&#34)]     public static void netTextMLeader(){

  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();
  }
}

答案 2 :(得分:-2)

使用.Net可以创建一个新对象吗? 答案是否定的。您需要使用ObjectArx。但是,使用.Net,您可以修改对象的外观。例如,您可以将线条修改为箭头。不仅看起来如何,而且表现如何。因此.Net中有足够的灵活性足以弥补创建新对象的需要。基本上使用.Net,你就拥有了windows和autocad的强大功能。

.Net示例的良好资源是通过接口by Kean Walmsley。尝试浏览此博客,您将了解有关AutoCAD中.Net功能的更多信息,而不是我能够描述的内容。