Работа с параметрамиАвтор: Виктор Чекалин
На форуме возникла небольшая дискуссия, на, казалось бы, простые вопросы по работе с параметрами. Решил немного внести ясность и разобрать по подробней как работать с параметрами элементов.
Работа с макросами - Изучение Revit API
Чтобы научиться писать нечто больше, чем в первом макросе, вам непременно нужно разбираться в Revit API. Лучший способ это сделать – через файл справки по Revit API. Файл справки можно найти в папке с установленным Revit SDK.
Работа с макросами в Revit - Выбор языка программирования
Итак, мы уже сделали первый шаг к тому, чтобы стать гуру в написании макросов. Следующий шаг – научиться писать код и использовать Revit API. Обучение программирование как таковому все же выходит за рамки данного руководства, но я укажу некоторые базовые аспекты, которое помогут вам в дальнейшем.
Работа с макросами в Revit - Первый макрос
Готовы начать писать макросы? Вы увидите, что это не сложный процесс.
Работа с макросами в Revit - Введение
Данное руководство написал Michael Kilkelly из компании Space Command. Michael выступал с соответствующим докладом на Autodesk University 2013 и провел похожи курсы в этом году.
Запись данных в ключевую спецификацию
Андрей Фазлеев поделился интересным решением по записи данных в ключевую спецификацию.
Далее с его слов:
Не так давно я писал о способе создания пользовательской таблицы
Задумался о том, как же теперь наполнить её через API.
Выбор листов для печати
Вопрос: Я работаю над разработкой надстройки, которая позволяет мне выбрать листы для последующей печати. Во вложении примеры файлов. Хотел бы услышать от экспертов предложения, как это можно реализовать.
Редактирование элемента в группе
Вопрос: У меня есть проблемка с редактированием параметра элемента, находящегося в группе, которая находится в нескольких местах проекта. Revit пишет вот такое сообщение:
В пользовательском интерфейсе для того, чтобы отредактировать параметр, я бы сначала выделил группу, нажал «Редактировать группу», сделал изменения в группе и нажал «Готово». Я конечно могу разгруппировать элементы, сделать изменения, затем сгруппировать их заново, с помощью API, но в этом случае я получу дублирующийся группы с различными названиями.
Параметры типа для системных семейств
Вопрос: Надеюсь кто-нибудь сможет мне помочь как получить параметры типа для системных семейств. Я могу получить параметры экземпляра, такие как Площадь или объем, но не могу, например, Ключевую пометку.
Создание рабочего набора
Вопрос: Я разрабатываю надстройку для Revit. Мое приложение создает документ в заданной директории по моему шаблону. Мне нужно создать новый проект с рабочим набором. В интерфейсе приложения пользователь должен выбрать специальность, путь для сохранения файла, название рабочего набора и нажать кнопочку «Создать файл». Приложение должно создать проект с рабочими наборами. Это возможно? Как это сделать? Спасибо.
Редактирование связанного файла
Вопрос: В своем коде я пытаюсь создать пространство внутри связанной модели. Но, получаю ошибку при вызове метода NewSpace:
Хотя я вызываю метод внутри транзакции главного документа и поэтому не пойму, почему появляется ошибка.
Преобразование координат листа в координаты модели
Вопрос: Вы отмечали, что в Revit API есть пробел, связанный с конвертацией между координатами модели и координатами листа. Это как раз то, с чем мы столкнулись.
Нам нужно получить границы геометрии элемента на листе.
В Revit 2016 этот пробел все еще существует? Есть ли какой-то способ обойти это ограничение?
Создание семейства в памяти
Вопрос: Когда создается новое семейство, то ему автоматически присваивается имя, которое можно увидеть в заголовке. Возможно ли изменить это имя и заголовок без сохранения файла? Я не хочу сохранять фал. Я просто хочу загрузить его сразу в другую модель.
Объединение геометрии стен и колонн
Я пытался найти в блоге пример использования объединения геометрии, но так и не смог. Собственно, вот он.
Перечисление элементов
Очень много людей используют FilteredElementCollector, например, вот так:
FilteredElementCollector collector= new FilteredElementCollector( doc );
collector.OfClass( typeof( Family ) ).ToElements();
IEnumerable<Family> nestedFamilies
= collector.ToElements().Cast<Family>();
String str = "";
foreach( Family f in nestedFamilies )
{
str = str + f.Name + "\n";
foreach( ElementId symbolId in
f.GetFamilySymbolIds() )
{
Element symbolElem = doc.GetElement(
symbolId );
str = str + " типоразмер: "
+ symbolElem.Name + "\n";
}
}
Создание крыши
Изначально вопрос бы задан на форуме Revit API и Stack Overflow:
Вопрос: У меня проблема с программным созданием крыши. Я знаю, как создавать лестницы, к примеру, используя CreateSketchedLanding с корректными параметрами. Но вот как воздать крышу с нуля, не пойму. Может кто-нибудь направить меня в нужное русло?
Чтение общей площади зоны здания и площади офисных зон
Небольшой пример того, как читать площадь зон, являющихся общей площадью здания и офисной зоной. Начнем с получение объектов класса Area (зона), используя FilteredElementCollector и фильтр SpatialElement. Затем, AreaScheme и, если требуется, ограничим по уровню, на котором располагается зона. В итоге отобразим общую площадь зон по зданию и площадь офисных зон.
Закрытие активного документа
На форуме один из пользователей говорит, что он хочет закрыть активный документ и заново его открыть.
О геометрии в Revit и грани цилиндров
Вопрос: При обходе по граням, представляющим границы цилиндра, я обнаружил, что цилиндр имеет 2 плоских грани (верх и низ цилиндра) и две цилиндрических грани (два полуцилиндра). Я проверил еще несколько различных закругленных поверхностей в Revit и заметил, что все они поделены на 2 или 4 полу- или четверть-цилиндра. Почему так?