К основному контенту

Непоследний обзор Renga API

Сегодня мы с вами поговорим об API. Оригинал статьи опубликован на Хабре, но нам кажется, что продублировать информацию в нашем блоге будет не лишним.
Renga активно разрабатывается, в ней есть инструменты для архитекторов, конструкторов КЖ и КМ, инженеров ВК, ОВ, ЭО и ЭС. С каждой версией система наращивает функциональность. Вместе с этим растет и меняется, становится все более востребованным API. Ведь в Renga можно создать информационную модель здания, но нельзя (и не планируется) получить красивый рендер, смету на строительство или расчет трубопроводов. Конечно, можно экспортировать модель из Renga, но, чтобы обойтись без посредников и избежать возможно неверной интерпретации данных при экспорте/импорте, лучше действовать через API.
Изначально, когда встал вопрос о создании API Renga (после выпуска первой версии Renga Architecture), мы ориентировались только на C++ API, исходя из требований, которые у нас появились на тот момент.
По мере развития Renga мы стали получать вопросы от разработчиков о том, можно ли писать на C# и других языках под Renga и какие версии Visual Studio поддерживаются.
Тогда, проанализировав доступность API для пользователей, мы задумались о смене технологии.
Дело в том, что C++ API довольно “жесткое”. Оно сильно зависит от компилятора, т.е. если SDK собрано компилятором Visual Studio, то вероятно вы не сможете компилировать под него с помощью, например, gcc, поскольку name mangling не стандартизован, могут быть различия в реализации виртуальных таблиц, шаблонов и т.п.
В самой Visual Studio тоже могут быть различия в настройках компиляции и поддержке стандарта от версии к версии.
В целом с этим можно было бы жить, например, используя по минимуму виртуальные функции (и как следствие наследование), не используя шаблоны и зафиксировав на определенный промежуток времени используемый стандарт и среду разработки.
Кроме того, мы могли бы создать несколько версий API для разных сред и/или версий системы.
Но все-таки мы решили, посмотреть в другую сторону. И после исследований выбрали COM.
Этот стандарт разработан в далеком 1993 году, то есть он не просто стар, а суперстар) Но он позволил нам предоставить пользователям единое API, используя которое можно писать плагины на C++, C# или другом COM-совместимом языке, кроме того через COM API можно обращаться к Renga из сторонних приложений, в том числе написанных на языках с динамической типизацией, например, на Python.


Надо сказать, что в справке Renga API подробно расписано, как приступить к работе, что и как можно сделать с его помощью. Но мы все-таки расскажем, что вам нужно, чтобы написать расширение для Renga.
Итак, для написания расширения для Renga на любом языке вам понадобятся:
  1. Renga и понимание того, что именно вы хотите автоматизировать при работе с системой.
  2. Renga Software Development Kit.
  3. Microsoft Visual Studio. Любая версия младше 2012.
  4. Знание основ программирования.
Мы надеемся, что читатели блога знакомы с Renga достаточно хорошо. Поэтому пункт ознакомления с системой мы опустим, но уточним какие требования сейчас может удовлетворить API.
С помощью Renga API можно:
  • выбирать объекты в модели и обрабатывать событие выбора объектов в Renga;
  • получать и изменять параметры объектов,
  • получать материалы и расчетные характеристики объектов;
  • создавать и назначать свойства объектов;
  • добавлять команды на Основную панель, на панель Действия, в контекстное меню и т.д.;
  • получать данные, необходимые для рендеринга модели;
  • управлять видимостью объектов и визуальным стилем в 3D Виде и на планах уровней;
  • импортировать и экспортировать модель в формат IFC;
  • экспортировать чертежи в форматы DWG/DXF;
  • создавать, открывать, закрывать или сохранять файл проекта,
  • получать геометрию армирования, аналитические кривые стержней в объектах с армированием и отдельных арматурных изделиях.
  • получать геометрию трасс.
На данный момент вы не сможете создать из API новый объект, это есть в планах, но не на ближайший выпуск.
Надо отметить, что Renga API расширяется по запросу пользователей, и если в этом списке вы не увидели возможности автоматизации, которая нужна вам, обратитесь к нам и мы обсудим вашу идею.
Если бы мы продолжили работу только над C++ API набор возможностей скорее всего был бы таким же, но мы практически уверены, что не все расширения Renga появились бы на свет. Кстати, список известных нам расширений вы можете посмотреть на сайте.
Теперь давайте посмотрим, что в итоге мы предлагаем своим пользователям в плане API. Чтобы получить Renga SDK, вам нужно просто его скачать. А чтобы им воспользоваться вы можете изучить и использовать примеры, которые есть в архиве.


В SDK есть примеры для написания расширений на C++ и C#, а также примеры подключения к Renga на Python. В справке Renga API в разделах How To перечислены примеры, в которых применены приемы из этого раздела.
Примеры плагинов C++ и C# демонстрируют почти все возможности API, в примерах на Python вы найдёте, как с его помощью создать пользовательское свойство в Renga из стороннего приложения, а также как автоматизировать открытие, сохранение и закрытие проекта Renga с помощью скрипта.
В настоящее время Renga может загружать плагины из двоичных DLL-библиотек C ++ и сборок .NET, а с помощью динамически типизированных языков, таких как Python, VBScript, 1С и других можно обращаться из сторонних программ к Renga API для получения необходимых данных.
В общем, мы довольны переходом на COM API и возможностями, которые он открыл для наших пользователей.
Любое расширение Renga, которое вызывается из Renga, должно состоять из бинарного файла плагина и xml-файла с расширением .rndesc, со следующим содержанием:
<RengaPlugin>
    <Name>MyPlugin</Name>
    <Version>1.0</Version>
    <Vendor>Vendor name</Vendor>
    <Copyright>Copyright text</Copyright>
    <RequiredAPIVersion>2.3</RequiredAPIVersion>
  <!-- Тип расширения cpp, net -->
<PluginType>Plugin Type</PluginType> <PluginFilename>MyPlugin.dll</PluginFilename> <Vendor>Vendor</Vendor> </RengaPlugin>
Чтобы подключить расширение к Renga вам нужно установить или скопировать его в папку установки Renga\Plugins. Информация, которая содержится в файле .rndesc отображается во вкладке Расширения окна Настроек Renga.
Мы уверены, что вооружившись полученными знаниями, и своими знаниями программирования, написать расширение для Renga под силу любому разработчику. Но если у вас есть идея расширения Renga, а с ее реализацией возникли проблемы, пишите на форуме или регистрируйте запрос в ServiceDesk. Мы будем рады вопросам!

Комментарии

Популярные сообщения из этого блога

Под крышей дома моего....

Крыша - это главный атрибут любого дома, а особенно частного загородного дома, коттеджа. Она не только призвана защищать его от дождя, снега и палящего солнца, но и является украшением дома и улицы, притягивает взгляд соседей и прохожих. В Renga Architecture инструмент Крыша позволяет строить самые разные модели крыши с помощью небольшого набора команд, но с первого взгляда не всегда ясно, как сделать её той или иной формы. Поэтому мы, Арина Соболева (инженер тех.поддержки) и Анастасия Тян (технический писатель), решили рассказать о разных тонкостях и нюансах работы с этим инструментом на примере нескольких загородных домов -  от простого к сложному. Проще всего в Renga Architecture создать четырехскатную вальмовую крышу. Здесь не надо менять никаких параметров, крыша строится по точкам, непрерывно (Рисунок 1). Рисунок 1 Чтобы её создать, один раз задаем Параметры сегмента (Рисунок 2) и указываем 4 точки по углам здания на 3D Виде. Построение крыши всегда

Освой электрику в Renga

Добрый день! Принципы проектирования всех инженерных систем в Renga одинаковы, однако каждая из них достойна отдельного внимания. В этой заметке мы расскажем и наглядно покажем на примере однокомнатной квартиры, как проектировать электрику в Renga. Надеемся, что вы попробуете повторить приведенную ниже инструкцию и это поможет вам оценить возможности Renga. Начинаем проектирование электрики с установки осветительных приборов, выключателей и розеток. Их можно размещать только на стенах, перекрытиях, колоннах и балках. Также хорошо, если перед проектированием электрики в модели расставлена мебель, если речь идет о жилых помещениях, или оборудование в промышленных. Модель квартиры, в которой будет происходить дальнейшая работа, уже подготовлена. Итак, скачайте проект, в котором расставлена мебель, и приступим. Откройте проект в Renga MEP. Щелкните правой кнопкой мыши на пустом месте и выберите Режим измерения > Кубический . Это необходимо, так как расставлять осветительные при

Renga в реальных примерах

Сегодня хотим поговорить о примерах проектов, выполненных в Renga. Когда присматриваешься к новой программе, всегда хочется знать, на что она способна, а наши системы довольно молодые, найти в открытом доступе модели и чертежи, выполненные в ней, не просто. Быть может, даже не все текущие пользователи Renga знают, что в поставке есть примеры таких проектов. Они лежат в папке Samples, которую можно найти в папке установки программы. Если вы уже установили Renga, но еще не видели этих проектов, рекомендуем заглянуть в эту папочку. Помимо этих примеров на сайте Grabcad.com есть пара десятков небольших проектов, выполненных нами в процессе работы над Renga. Там выложены проекты разной степени проработанности и детализации, но тем не менее они наглядно демонстрируют возможности Renga. Найти их можно по запросу renga в поиске grabcad.com . Все модели можно скачать в формате rnp, открыть в Renga и посмотреть, как они сделаны. Тем, кто совсем не знаком с работой в Renga, но собирается п