Каждый элемент в модели 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.
Параметр должен быть создан через «Параметры проекта», текстовый, по экземпляру, с опцией «может изменяться по экземплярам группы».
Макрос обрабатывает все элементы, видимые на текущем виде.
Как подключить макрос.

