Коротко об интеграции сторонних приложений в ANSYS Workbench.

Аватар пользователя dvolkind
1 2481

Коротко об интеграции сторонних приложений в ANSYS Workbench.

Ключевые слова: ANSYS, Workbench, External Connection, возможности, автоматизация, интеграция сторонних приложений.

В инженерной практике нередко встречаются задачи, требующие многократного повторения процедуры подготовки модели (построение геометрии, сетки, приложение граничных условий и т.д.) и отправки её на счёт – это могут быть как оптимизационные задачи, так и обыкновенные параметрические исследования. В подобных случаях преимущества среды интеграции ANSYS Workbench становятся очевидными – пользователь не касается вопросов сохранения и передачи файлов различных форматов, структуры каталогов и синхронизации запуска отдельных модулей. То, что когда-то делалось при помощи скриптов, теперь доступно любому начинающему пользователю, умеющему перетаскивать мышью различные системы анализа друг на друга. Удобно реализованный механизм параметризации тоже редко вызывает вопросы.
Но как быть, если процесс обновления модели требует запуска на определённых этапах сторонних приложений? Наиболее простой точкой входа для них служит модуль External Connection, на который пользователи редко обращают внимание, - а зря. Приведенная ниже информация познакомит вас с основными возможностями данного модуля.
Рассматриваемому модулю посвящена отдельная глава справочной документации (раздел по ANSYS Workbench), в которой даётся достаточно подробное описание и примеры применения. Чтобы не изобретать велосипед, в качестве общего описания работы модуля ниже я приведу свой слегка адаптированный перевод вступительной части:

******************************************************************************
Модуль расширения External Connection позволяет интегрировать небольшие сторонние приложения в схему проекта ANSYS Workbench. Он имеет следующие возможности в области автоматизации и пользовательской доработки:
· Создание пользовательских элементов интерфейса (например, кнопок в панели инструментов Workbench или дополнительных меню) и скриптов, которые вызываются этими элементами.
· Создание новых систем для облегчения интеграции сторонних приложений в схему проекта Workbench.
Модуль External Connection отображается в виде системы External Connection в панели инструментов External Connection Systems. Данная система имеет единственный компонент External Connection, являющийся связующим звеном для стороннего приложения.

Рис. 1: Ячейка системы External Connection в панели инструментов

После того, как вы перетащили систему External Connection в поле схемы проекта Workbench, компонент External Connection приобретает статус «требует участия», обозначаемый вопросительным знаком, пока вы не укажете конфигурационный файл компонента.

Рис. 2: Меню Read Configuration

На следующем рисунке изображено состояние системы после считывания конфигурационного файла SquaresConfig.xml[1],  который определяет параметры интеграции со сторонним приложением.   

Рис. 3: Пример – вид схемы проекта

На следующем рисунке показан пример добавления кнопки в панель инструментов.

Рис. 4: Пример пользовательской кнопки
 

Далее приведён пример системы, передающей сеточную модель из вышестоящей системы в систему Fluent.

Рис. 5: Передача сетки из Mesh во Fluent Setup через Mesher

******************************************************************************

Что это в итоге нам даёт? Правильно – возможность «прикрутить» собственное приложение или скрипт в Workbench. Вызываться это приложение будет либо при помощи кнопки в графическом интерфейсе, либо при обновлении соответствующей ячейки модуля External Connection.
 
В качестве стороннего приложения может использоваться исполняемый файл или скрипт на IronPython (которому, к слову, никто не запрещает запустить тот же исполняемый файл). На мой взгляд, сравнительно простые приложения удобнее всего писать на Python’е, т.к. такое решение будет работать как под Windows, так и под Linux. Кроме того, при внесении изменений не потребуется компиляция.
 
Теперь рассмотрим, что, собственно, требуется от пользователя для интеграции внешнего приложения. Основной документ, определяющий функционирование системы – это конфигурационный файл на языке XML. Данный файл считывается в момент инициализации системы и содержит следующую основную информацию:
 - названия различных элементов системы, в частности – имя ячейки, которое видит пользователь;
 - рабочая директория – здесь важно отметить, что с 15й версии в момент сохранения проекта всё её содержимое копируется в директорию проекта (для дефолтной системы - <имя проекта>_files/dp<номер расчётной точки>/Ex/Ext), и путь становится относительным, что удобно при перемещении проекта;
 - объявление входных и выходных параметров вместе с файлами, из которых их нужно считывать при обновлении, а также правилами считывания (например, искать параметр myPar1 в файле out.txt начиная с первой строки число, следующее за сочетанием символов “myPar1=“);
- имя исполняемого файла или скрипта;
- имя файла, в который будут писаться сообщения об ошибках.
 
Таким образом, для инициализации дефолтной системы нам как минимум нужен этот конфигурационный файл и исполняемый модуль. Под дефолтной системой я подразумеваю такую систему, которая получается путём считывания конфига в стандартный шаблон External Connection (тот, что по умолчанию висит последним в панели инструментов). Если же наша система, согласно конфигурации, должна будет получать входные или выходные параметры, то файлы с этими параметрами также должны существовать в рабочей директории в момент инициализации.
 
В определённых ситуациях дефолтной системы может оказаться недостаточно. Например, когда систему нужно соединить с существующим компонентом Workbench для того, чтобы она обновлялась строго до или после него, учитывая статус связанных ячеек. В таких случаях можно создать пользовательский шаблон системы и поместить его в директорию установки ANSYS, в результате чего он будет автоматически появляться в панели инструментов при каждой последующей загрузке Workbench’а. Для этого потребуется дополнительный конфиг для определения системы, в котором, в частности, нужно будет указать, с какими ячейками система сможет устанавливать связи и какими типами данных при этом она будет обмениваться.
 
Поясню, почему я обзываю «систему» в терминологии Workbench «шаблоном». Дело в том, что пользовательская система External Connection получает из конфигурационного файла только часть необходимых инструкций, в частности, касающихся её связей с другими приложениями. Остальные инструкции, такие как определение параметров, исполняемого модуля и т.д. определяются на уровне конфига компонента, точно так же, ка для дефолтной системы. То есть без дополнительного файла конфигурации пользовательская система может только присутствовать в схеме проекта и устанавливать связи, но не обновляться. Таким образом, термин «шаблон» мне представляется более подходящим.
 
На рисунке ниже приведён пример системы подобного типа, осуществляющей извлечение выходных параметров геометрической модели, импортируемой из Siemens NX. Обратите внимание, что для наглядности ячейки системы можно снабдить собственными графическими иконками, поместив соответствующие картинки в директорию установки и указав их в конфиге.

Рис. 6: Система, осуществляющая извлечение выходных параметров из модели NX: шаблон в панели инструментов (слева) и сконфигурированная система (справа)

Кнопки и меню графического интерфейса сами по себе не представляют особенного интереса, однако они, вероятнее всего, будут вызывать модули с графическим интерфейсом. Для создания графического интерфейса можно воспользоваться стандартной библиотекой Windows.Forms, либо Ansys.UI.Toolkit, которая «за кулисами» использует тот же Windows.Forms под Windows и Qt под Linux. Последнее решение, очевидно, будет более универсальным.
Здесь я сознательно не привожу примеров конфигурационных файлов или скриптов, поскольку весь необходимый синтаксис исчерпывающим образом документирован (кстати, с примерами). Надеюсь, что материал окажется для кого-то полезным.
Для того, чтобы научиться комфортно пользоваться рассмотренным функционалом, я рекомендую ознакомиться со следующими дополнительными источниками (помимо справочной документации):
- курс Scripting_Tools_All_Products с портала пользователей – здесь рассматриваются, в частности, вопросы написания кросс-платформенного интерфейса;
- курс ACT_Customization с портала пользователей – вопросы дружбы ANSYS'а с IronPython’ом;
- документация по Windows.Forms (https://msdn.microsoft.com/ru-ru/library/dd30h2yb(v=vs.110).aspx), особенно описание пространств имён;
- сайт http://www.voidspace.org.uk/ironpython/winforms/, который научит писать формы на основе Windows.Forms на Python’е.

[1] данный файл легко найти в справочной документации поисковым запросом "SquaresConfig.xml" (с кавычками!), а затем использовать его в качестве шаблона для собственных задач – прим. перев.

Комментарии

Аватар пользователя dvolkind

Забыл добавить, что для получения документации по пространству имён Ansys.UI.Toolkit и ему подобных нужно установить ANSYS SDK - документация появится в меню программ. Кроме того, полное описание будет доступно в контекстных меню Microsoft Visual Studio и при автозаполнении.

Добавить комментарий

Войдите или зарегистрируйтесь, чтобы отправлять комментарии