- PVSM.RU - https://www.pvsm.ru -
Revit — программный комплекс, реализующий принцип информационного моделирования зданий. Изначально программа предназначалась для архитекторов. Теперь все больше компаний при устройстве на работу требуют от инженеров умения работы в Revit. Autodesk Revit предоставляет мощный .NET API, позволяющий разрабатывать собственные приложения для решения различных задач. В данной статье хочу поделиться опытом создания однолинейных схем в Revit.
Главными преимуществами Revit для инженера являются:
— работа с актуальными планировками;
— совместная работа нескольких инженеров в одном файле;
— контроль пересечения инженерных коммуникаций;
— обмен заданиями;
— создание автоматически обновляемых спецификаций.
Revit также позволяет проектировать системы электроснабжения и вести расчет нагрузок в табличном виде. Недостатком является то, что нельзя вести расчеты, производить выбор оборудования и оформлять схемы в соответствии с нормативными документами, действующими на территории РФ. Создание однолинейных схем довольно трудозатратная процедура, отнимающая массу времени.
Когда я работал в Autocad, я использовал для расчета таблицу Excel: заносил мощность подключенного оборудования, названия, место расположения, тип, длины и еще множество параметров, производил расчет, а затем чертил схемы с помощью плагина для Autocad [1].
Теперь, при работе с Revit, все эти данные можно получить из BIM модели. Например данный плагин получает следующую информацию:
— Номер выключателя;
— Электрические нагрузки;
— Напряжение;
— Количество полюсов;
— Коэффициент мощности;
— Тип кабеля;
— Классификацию электрических нагрузок;
— Сечение нейтрального проводника;
— Длину кабельной линии.
Остальная информация рассчитываются на основе полученных и введенных пользователем параметров.
Работа плагина состоит из трех этапов:
1) Получение необходимых данных из BIM-модели и загрузки в форму для редактирования;
2) Редактирование пользователем параметров;
3) Создание схемы.
Плагин можно загрузить по ссылке [2].
Чтобы извлечь параметры электрических систем, получаем доступ к активному документу:
UIApplication uiapp = commandData.Application;
UIDocument uidoc = uiapp.ActiveUIDocument;
Application app = uiapp.Application;
Document doc = doc.Document;
Далее извлекаем необходимые параметры из BIM-модели. В данном примере рассмотрим как получить параметры цепи (номер, коэффициент мощности, тип кабеля), а также материал жилы кабеля из настроек кабельных линий. Поиск нужных параметров ведется по ID с помощью списка BuiltInParameters [3]. Такой способ поиска параметра не будет зависеть от локализации 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();
}
Все, схема готова!
Автор: Тимур
Источник [4]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/c-2/257123
Ссылки в тексте:
[1] плагина для Autocad: http://www.bimelectro.ru/p/sld-avtocad.html
[2] ссылке: http://www.bimelectro.ru/p/sld-revit.html
[3] BuiltInParameters: http://www.revitapidocs.com/2017.1/fb011c91-be7e-f737-28c7-3f1e1917a0e0.htm
[4] Источник: https://habrahabr.ru/post/330128/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best
Нажмите здесь для печати.