【问题标题】:How to get a list of all elements in a revit with c#如何使用c#获取revit中所有元素的列表
【发布时间】:2015-11-18 00:05:57
【问题描述】:

我想添加一个插件,用于读取具有 RevitId 字符串的数据文件并绘制它们。

我不知道如何使用 C# 根据字符串 elementId 在 Revit 中查找给定元素。

UIApplication uiApp = commandData.Application;
 Document doc = uiApp.ActiveUIDocument.Document;

我知道这给了我一个文档,但我不知道如何获取所有 ID。我正在考虑使用一个 foreach 循环来检查元素 id 的字符串与文档中所有元素的字符串,直到找到匹配项。然后,我可以操纵它。

【问题讨论】:

    标签: c# revit revit-api


    【解决方案1】:

    一种方法是使用 FilteredElementCollector 遍历特定元素类型以获取其 elementId。

    FilteredElementCollector docCollector = new FilteredElementCollector(document).OfCategory(BuiltInCategory.OST_Walls);
    

    跟随(如你所建议):

    foreach(Element el in docCollector)
    {
    ElementId elID = el.Id;
    //....
    }
    

    修改版:

    List<ElementId> ids = new FilteredElementCollector(document).OfCategory(BuiltInCategory.OST_Walls).ToElementIds().ToList();
    

    跟随(如你所建议):

    foreach(ElementId elId in ids)
    {
    //....
    }
    

    如果您正在考虑遍历所有元素,我建议您查看来自The Building Coder: Do Not Filter For All Elements 的这篇博文

    【讨论】:

    • 您提出的建议非常昂贵 - 需要的时间比下面建议的要长得多 - 我建议按照 Darren 的建议进行。
    • 当然。要从 ElementId 获取元素,请使用下面的响应。但是,问题的第二部分询问如何获取所有 ElementId。我的回复展示了如何从特定类别中获取 ElementId。
    • OP 显然是个菜鸟。现在,他还明确表示他想要一个“循环检查元素 id 的字符串与文档中所有元素的字符串,直到找到匹配项”。这不需要循环。您可以执行 Daren 在下面建议的操作,如果 GetElement() 没有返回任何内容,则表示您的字符串 id 不存在于文档中。继续下一个。
    【解决方案2】:

    您可以使用Document.GetElement 方法通过ElementId 获取元素。您的问题的答案在一定程度上取决于您在字符串表示中是否有UniqueIdElementId。在这里查看一些澄清:https://boostyourbim.wordpress.com/2013/11/18/getting-an-element-from-a-string-id/

    假设您有一个ElementId(不是 GUID,只是一个数字),您可以这样做:

    int idInt = Convert.ToInt32(idAsString);
    ElementId id = new ElementId(idInt);
    Element eFromId = doc.GetElement(id);
    

    甚至更短:

    Element element = doc.GetElement(new ElementId(Convert.ToInt32(idAsString)));
    

    【讨论】:

      猜你喜欢
      • 2021-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      • 2020-11-03
      • 2018-11-05
      • 2010-12-01
      • 2018-04-21
      相关资源
      最近更新 更多