Revit — программный комплекс, реализующий принцип информационного моделирования зданий. Изначально программа предназначалась для архитекторов. Теперь все больше компаний при устройстве на работу требуют от инженеров умения работы в Revit. Autodesk Revit предоставляет мощный .NET API, позволяющий разрабатывать собственные приложения для решения различных задач. В данной статье хочу поделиться опытом создания однолинейных схем в Revit.
Главными преимуществами Revit для инженера являются:
— работа с актуальными планировками;
— совместная работа нескольких инженеров в одном файле;
— контроль пересечения инженерных коммуникаций;
— обмен заданиями;
— создание автоматически обновляемых спецификаций.
Revit также позволяет проектировать системы электроснабжения и вести расчет нагрузок в табличном виде. Недостатком является то, что нельзя вести расчеты, производить выбор оборудования и оформлять схемы в соответствии с нормативными документами, действующими на территории РФ. Создание однолинейных схем довольно трудозатратная процедура, отнимающая массу времени.
Когда я работал в Autocad, я использовал для расчета таблицу Excel: заносил мощность подключенного оборудования, названия, место расположения, тип, длины и еще множество параметров, производил расчет, а затем чертил схемы с помощью плагина для Autocad.
Теперь, при работе с Revit, все эти данные можно получить из BIM модели. Например данный плагин получает следующую информацию:
— Номер выключателя;
— Электрические нагрузки;
— Напряжение;
— Количество полюсов;
— Коэффициент мощности;
— Тип кабеля;
— Классификацию электрических нагрузок;
— Сечение нейтрального проводника;
— Длину кабельной линии.
Остальная информация рассчитываются на основе полученных и введенных пользователем параметров.
Работа плагина состоит из трех этапов:
1) Получение необходимых данных из BIM-модели и загрузки в форму для редактирования;
2) Редактирование пользователем параметров;
3) Создание схемы.
Плагин можно загрузить по ссылке.
Чтобы извлечь параметры электрических систем, получаем доступ к активному документу:
UIApplication uiapp = commandData.Application;
UIDocument uidoc = uiapp.ActiveUIDocument;
Application app = uiapp.Application;
Document doc = doc.Document;
Далее извлекаем необходимые параметры из BIM-модели. В данном примере рассмотрим как получить параметры цепи (номер, коэффициент мощности, тип кабеля), а также материал жилы кабеля из настроек кабельных линий. Поиск нужных параметров ведется по ID с помощью списка BuiltInParameters. Такой способ поиска параметра не будет зависеть от локализации Revit.
//Выбираем электрические цепи, относящиеся к щиту "ЩС"
ParameterValueProvider provider
= new ParameterValueProvider(new ElementId((int)BuiltInParameter.RBS_ELEC_CIRCUIT_PANEL_PARAM));
FilterStringRule rule = new FilterStringRule(provider, new FilterStringEquals(), "ЩС", true);
ElementParameterFilter filter = new ElementParameterFilter(rule);
ICollection<Element> docCircuits =
(new FilteredElementCollector(doc))
.OfCategory(BuiltInCategory.OST_ElectricalCircuit)
.WherePasses(filter)
.ToArray();
foreach (Element docCircuit in docCircuits)
{
//Номер цепи
num = docCircuit.get_Parameter(BuiltInParameter.RBS_ELEC_CIRCUIT_NUMBER)?
.Element.Name;
//Коэффициент мощности
powerFactor =
docCircuit.get_Parameter(BuiltInParameter.RBS_ELEC_POWER_FACTOR)?
.AsValueString();
//Тип кабеля
cableType =
docCircuit.get_Parameter(BuiltInParameter.RBS_ELEC_CIRCUIT_WIRE_TYPE_PARAM)?
.AsValueString();
//Материал жилы
Element wireType = new FilteredElementCollector(doc)
.OfClass(typeof(WireType))
.FirstOrDefault<Element>(
e => e.Name.Equals(cableType));
string coreMaterial = wireType.get_Parameter(BuiltInParameter.RBS_WIRE_MATERIAL_PARAM)
.AsValueString();
}
После получения необходимых параметров можно приступать к созданию схемы. Создаем транзакцию и вставляем элементы схемы в файл. Кстати, единицы измерения — футы, поэтому при вставке элементов нужно не забывать про это.
using (Transaction tx = new Transaction(doc))
{
tx.Start("Создание однолинейной схемы");
double xCoord = 0;
// Вставляем отходящие линии
foreach (Circuit circuit in panel.circuits)
{
//Получаем семейство из активного документа по имени.
FamilySymbol lineSymbol = FilteredElementCollector(doc)
.OfClass(typeof(FamilySymbol))
.Where(q => q.Name == "SLD_АВ")
.First() as FamilySymbol;
//Переводим координаты точки вставки из миллиметров в футы
XYZ coords = new XYZ(xCoord, 0, 0).ToFeets();
//Вставляем семейство с именем SLD_АВ
FamilyInstance line = doc.Create.NewFamilyInstance(coords, lineSymbol, uidoc.ActiveView);
//Получаем все параметры семейства
ParameterSet parametersLineOut = line.Parameters;
//Записываем значение в параметр семейства
foreach (Parameter param in parametersLineOut)
{
switch (param.Definition.Name)
{
case "Номер группы": param.Set(circuit.number); break;
case "Тип кабеля": param.Set(circuit.cableType); break;
case "Коэффициент мощности": param.Set(circuit.powerFactor); break;
}
}
xCoord = xCoord + 25;
}
tx.Commit();
}
Все, схема готова!
Поделиться с друзьями
MikhailKh
Revit — это вертикальное решение на базе автокада. Причем да — для архитектуры.
Делать из BIM рисовалку электросхем — прикольно конечно. Но уж больно дорого. На голом Автокаде всё тоже самое будет работать быстрее, лучше, лицензия дешевле.
BoxaShu
Вы ошибаетесь.
Вы ошибаетесь.
MikhailKh
В линейке Autodesk произошли качественные изменения, и Revit вдруг обзавелся собственным ядром?
А можно по подробнее?
По поводу целесообразности, вопрос снимаю. Хотя всё равно не оставляет чувство, что пушкой по воробьям стреляют.
BoxaShu
Ревит, изначально не проект автодеска, он был куплен. Соответственно у ребят, которые начали его делать, не было ядра автокада, т.о. у ревита с самого начала было собственное ядро.
Подробнее тут https://ru.wikipedia.org/wiki/Revit
А по поводу только архитектуры, то вот фрагмент оф. сайта поясняющий этот вопрос
MikhailKh
В линейке Autodesk произошли качественные изменения, и Revit вдруг обзавелся собственным ядром?
А можно по подробнее?
По поводу целесообразности, вопрос снимаю. Хотя всё равно не оставляет чувство, что пушкой по воробьям стреляют.
Bumbum
Revit никогда не был на ядре Автокада.
Даже сейчас, спустя более чем 10 лет после приобретения его Автодеском, двумерное черчение и оформление в нем сильно отстает от када.
Изначально он был для архитектуры, потом разделили на три продукта:
Achitecture, Structure, MEP (инженерные сети, в т.ч. электрика). Потом, года 4 назад, снова объединили в Revit Building.