【问题标题】:How to Get all opened AutoCad documents(drawings) using .NET如何使用 .NET 获取所有打开的 AutoCad 文档(图纸)
【发布时间】:2012-06-02 18:00:44
【问题描述】:

我正在使用 AutoCAD 2012 和 .NET API。有人可以帮我如何遍历所有打开文档的文档对象吗?我正在尝试执行以下代码之类的操作..我在 Autodesk 论坛上也有这个问题..但不确定它的活跃程度:)

public void GetDocNames()
        {
            DocumentCollection docs = Application.DocumentManager;

            for (int i = 0; i < docs.Count; i++)
            {
                AcadDocument doc = docs[i];
                Debug.Print(doc.Name);
            }
        }

【问题讨论】:

    标签: c# vb.net autocad autodesk objectarx


    【解决方案1】:

    VB.NET 版本:

    Private Sub getAcadDocNames()
        'collection of all opened documents
        Dim AcadDocs As DocumentCollection = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager 
    
        For Each doc As Document In AcadDocs
            Debug.Print(doc.Name)
        Next doc
    End Sub
    

    请注意,如果您还导入了 System.Windows.Forms(也有一个 Application 命名空间),您可能希望完全限定 DocumentManager 属性的路径(就像我在这里所做的那样)。

    【讨论】:

      【解决方案2】:

      您已经标记了 C# 和 VB.NET。 C#版本如下:

      public void GetDocNames()
      {
        DocumentCollection docs = Application.DocumentManager;
      
        foreach (Document doc in docs)
        {
          Application.ShowAlertDialog(doc.Name);
        }
      }
      

      【讨论】:

      • 所以如果我想激活第三个文档,我必须在这个 foreach 循环中循环所有文档?在 VBA 时代,我们可以使用 Documents(2).Activate
      • @vinayan 我不知道从集合中间提取单个文档的方法。也许您可以提供有关您正在执行的操作的更多详细信息?如果您只在一个文档上执行它,那么您可以在 AutoCAD 中选择它并使用DocumentCollection.MdiActiveDocument 从集合中返回正确的文档。
      • 我试图让用户从一张图纸中选择一个实体..然后程序将自动切换到另一张图纸并提示用户从该图纸中选择一个实体..几何第一个对象将被第二个对象替换..感谢您的回答..我认为我仍然可以通过循环来做到这一点..
      • 为此使用 Linq:Document document = Application.DocumentManager.OfType&lt;Document&gt;().ToArray()[2];
      猜你喜欢
      • 2013-10-15
      • 2017-04-25
      • 1970-01-01
      • 2014-08-14
      • 1970-01-01
      • 2022-06-29
      • 1970-01-01
      • 2020-04-26
      • 1970-01-01
      相关资源
      最近更新 更多