Каждый элемент в модели Revit имеет уникальный числовой идентификатор — ID. Revit позволяет показать ID выбранного элемента, а также найти элемент в модели по его ID.
ID много где используется, например, выводится в отчетах об ошибках или пересечениях:
ID элемента недоступен непосредственно в свойствах элемента, но бывает задача, например, вывести его в марку или спецификацию.
Для решения этой задачи написал небольшой макрос:
public void CopyIdToSharedParameter() { string paramName = "Марка"; Document doc = this.ActiveUIDocument.Document; View activeView = this.ActiveUIDocument.ActiveView; List<Element> elems = new FilteredElementCollector(doc, activeView.Id) .WhereElementIsNotElementType() .ToElements() .ToList(); int count = 0, err = 0; using(Transaction t = new Transaction(doc)) { t.Start("ID в общий параметр для " + elems.Count.ToString() + " элементов"); foreach(Element elem in elems) { if (elem is Group) continue; try { string id = elem.Id.IntegerValue.ToString(); elem.LookupParameter(paramName).Set(id); count++; } catch {err++ ;} } t.Commit(); } TaskDialog.Show("Отчет", "Успешно обработано: " + count + ", ошибок: " + err); }
В начале в кавычках укажите имя параметра, в который будет записан ID.
Параметр должен быть создан через «Параметры проекта», текстовый, по экземпляру, с опцией «может изменяться по экземплярам группы».
Макрос обрабатывает все элементы, видимые на текущем виде.
Как подключить макрос.