C# 如何使用c获取revit中所有图元的列表#

C# 如何使用c获取revit中所有图元的列表#,c#,revit,revit-api,C#,Revit,Revit Api,我想添加一个插件,它读入一个包含一系列revitid的数据文件并绘制它们 我不知道如何使用C#在Revit中基于字符串elementId查找给定图元 我知道这给了我一份文件,但我不知道;我不知道如何获得所有的ID。我在考虑使用foreach循环来检查文档中元素id的字符串与all的字符串,直到找到匹配为止。然后,我可以对它进行操作。一种方法是使用FilterDeleteCollector迭代特定的元素类型以获取它们的elementId FilteredElementCollector docCo

我想添加一个插件,它读入一个包含一系列revitid的数据文件并绘制它们

我不知道如何使用C#在Revit中基于字符串elementId查找给定图元


我知道这给了我一份文件,但我不知道;我不知道如何获得所有的ID。我在考虑使用foreach循环来检查文档中元素id的字符串与all的字符串,直到找到匹配为止。然后,我可以对它进行操作。

一种方法是使用FilterDeleteCollector迭代特定的元素类型以获取它们的elementId

FilteredElementCollector docCollector = new FilteredElementCollector(document).OfCategory(BuiltInCategory.OST_Walls);
接着是(如你所建议的):

修改版本:

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

如果您正在考虑遍历所有元素,我建议您从

查看这篇博文,其中一种方法是使用FilterDeleteCollector遍历特定的元素类型以获取它们的elementId

FilteredElementCollector docCollector = new FilteredElementCollector(document).OfCategory(BuiltInCategory.OST_Walls);
接着是(如你所建议的):

修改版本:

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

如果您正在考虑遍历所有元素,我建议您从

查看这篇博文,您可以使用
Document.GetElement
方法通过元素的
ElementId
获取元素。您的问题的答案有点取决于字符串表示形式中是否有
UniqueId
ElementId
。请查看此处以了解一些说明:

假设您有一个
元素ID
(不是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)));

您可以使用
Document.GetElement
方法通过元素的
ElementId
获取元素。您的问题的答案有点取决于字符串表示形式中是否有
UniqueId
ElementId
。请查看此处以了解一些说明:

假设您有一个
元素ID
(不是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)));

你的建议非常昂贵——比下面的建议要花费更长的时间——我建议你按照达伦下面的建议去做。绝对。要从ElementId获取元素,请使用下面的响应。然而,问题的第二部分询问如何获取所有的ElementId。我的回答显示了如何从特定类别中获取ElementId。OP显然是一个noob。现在,他还明确表示,他需要一个“循环,将元素id的字符串与文档中所有元素的字符串进行检查,直到找到匹配项为止”。这不需要循环。如果GetElement()不返回任何表示文档中不存在字符串id的内容,则可以执行Daren在下面建议的操作。继续下一个问题。你的建议非常昂贵——比下面的建议要花费更长的时间——我建议你按照达伦下面的建议去做。绝对。要从ElementId获取元素,请使用下面的响应。然而,问题的第二部分询问如何获取所有的ElementId。我的回答显示了如何从特定类别中获取ElementId。OP显然是一个noob。现在,他还明确表示,他需要一个“循环,将元素id的字符串与文档中所有元素的字符串进行检查,直到找到匹配项为止”。这不需要循环。如果GetElement()不返回任何表示文档中不存在字符串id的内容,则可以执行Daren在下面建议的操作。继续下一个。