【问题标题】:Revit API: Is SetLayerSelection the best solution?Revit API:SetLayerSelection 是最佳解决方案吗?
【发布时间】:2020-11-23 17:49:50
【问题描述】:

我们公司有数百个旧版 AutoCAD 细节可供选择以导入 Revit。我们正在使用 Revit 2021 和 C# (Visual Studio 2019) 来访问 Revit API。我们已经有了创建绘图视图和导入 DWG 文件的代码。我们仍然需要弄清楚的是如何不导入某些图层(即 Defpoints),以及如何在每个图层的基础上更改线图形(颜色和/或线宽)。通常这是通过 Revit 中的 VG Overrides 对话框完成的,但我们希望在导入过程中以编程方式完成。以下哪项是最佳做法?

解决方案 #1:仅导入“可见”图层。这是我们当前的但不太理想的解决方案,需要在导入之前手动关闭图层。

DWGImportOptions options = new DWGImportOptions
{
VisibleLayersOnly = true,
};
doc.Import(@detailfilename, options, detailview, out elemId);

解决方案 #2:使用 DWGImportOptions 类下的 SetLayerSelection 方法。这要求将 ICollection 对象传递给包含要导入的图层的方法。 如何将 DWG 文件中的图层读取到 ICollection 对象中? 非常感谢您提供 sn-p 代码。

解决方案 #3:我们没有想到的其他方法。

提前感谢您的帮助和专业知识。代码片段将不胜感激。

【问题讨论】:

    标签: c# revit-api


    【解决方案1】:

    事实上,生成要导入的图层列表的选择方法是实现一个 AutoCAD.NET 应用程序,该应用程序读取每个 DWG 文件中的现有图层并根据给定规则处理它们。

    因为无论如何这都需要 AutoCAD.NET,所以我会全力以赴并在该应用程序中实现 DWG 文件的完整预处理,这样在 Revit API 中剩下的就是你已经完成的工作了。

    当然只有我个人的 2c。

    【讨论】:

      【解决方案2】:

      谢谢杰里米·塔米克。我很好奇是否可以使用您 2013 年 4 月 12 日博客文章中的代码。我按如下方式修改了该代码,但 Open 命令引发异常:“方法在 MDI 模式下不可用。使用 Documents 集合的 Open 方法”。有什么想法吗?非常感谢。

      [TransactionAttribute(TransactionMode.Manual)]
      public class OpenDWG : IExternalCommand
      {
          public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
          {
              Autodesk.AutoCAD.Interop.AcadApplication app = new Autodesk.AutoCAD.Interop.AcadApplication();
              Autodesk.AutoCAD.Interop.AcadDocument adoc = app.Documents.Application.ActiveDocument;
      
              string pfile = "C:\\Testfile.dwg";
              adoc.Open(pfile); //this command throws an exception
      
              //add more code here to turn off unwanted layers
      
              adoc.Save();
      
              app.Quit();
      
              return Result.Succeeded;
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2017-07-19
        • 1970-01-01
        • 2016-09-10
        • 2020-04-12
        • 2023-03-13
        • 2012-04-22
        • 2014-09-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多