Однолинейные схемы в Revit

    image
    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();
     }     
    

    Все, схема готова!
    • +5
    • 11.2k
    • 6
    Share post

    Similar posts

    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 6

      –1
      Revit — это вертикальное решение на базе автокада. Причем да — для архитектуры.

      Делать из BIM рисовалку электросхем — прикольно конечно. Но уж больно дорого. На голом Автокаде всё тоже самое будет работать быстрее, лучше, лицензия дешевле.
        +1
        Revit — это вертикальное решение на базе автокада.

        Вы ошибаетесь.
        Причем да — для архитектуры.

        Вы ошибаетесь.
          –1
          В линейке Autodesk произошли качественные изменения, и Revit вдруг обзавелся собственным ядром?

          А можно по подробнее?

          По поводу целесообразности, вопрос снимаю. Хотя всё равно не оставляет чувство, что пушкой по воробьям стреляют.
            +1
            В линейке Autodesk произошли качественные изменения, и Revit вдруг обзавелся собственным ядром?

            Ревит, изначально не проект автодеска, он был куплен. Соответственно у ребят, которые начали его делать, не было ядра автокада, т.о. у ревита с самого начала было собственное ядро.
            Подробнее тут https://ru.wikipedia.org/wiki/Revit

            А по поводу только архитектуры, то вот фрагмент оф. сайта поясняющий этот вопрос
            image
            0
            В линейке Autodesk произошли качественные изменения, и Revit вдруг обзавелся собственным ядром?

            А можно по подробнее?

            По поводу целесообразности, вопрос снимаю. Хотя всё равно не оставляет чувство, что пушкой по воробьям стреляют.
              +1
              Revit никогда не был на ядре Автокада.

              Даже сейчас, спустя более чем 10 лет после приобретения его Автодеском, двумерное черчение и оформление в нем сильно отстает от када.

              Изначально он был для архитектуры, потом разделили на три продукта:
              Achitecture, Structure, MEP (инженерные сети, в т.ч. электрика). Потом, года 4 назад, снова объединили в Revit Building.

        Only users with full accounts can post comments. Log in, please.