Пошагово рассмотрим последовательность действий для создания простого плагина, который будет выводить на экран количество выбранных в модели объектов. В данном посте будет разработан плагин с использованием библиотек .Net, а именно языка С#, но также возможна разработка с использованием С++, подробный синтаксис доступных команд описан в документе "C:\Program Files\Lira Soft\Lira10.12\LiraAPI\LiraAPIHelp.pdf".
Для добавления расширения ПК ЛИРА 10.12 потребуется выполнить два действия:
а. Разработать расширение dll, опираясь на возможности API ПК Лира.
б. Зарегистрировать разработанное расширение в среде ПК ЛИРА 10.12.
а. Разработка пользовательского расширения
Создаем новый проект в SharpDevelop (или любой другой среде, например, в Microsoft Visual Studio) – библиотека классов C#, .NET Framework 4.5. В свойствах проекта указываем работу с 64-разрядными системами.
Для корректной работы плагина в проект необходимо добавить минимальный набор ссылок: System, System.Data, System.Windows.Forms и библиотеки Лира "..\Lira Soft\Lira10.12\bin64\FEModel.dll", "..\Lira Soft\Lira10.12\bin64\LiraAPI.dll".

Реализуем в проекте класс TestClass наследованный от интерфейса ILiraAPI, который описан в LiraAPI.dll. Внутри данного класса мы выстраиваем основную логику программы. Далее будет приведен код программы с необходимыми комментариями.

Код |
---|
public class ClassStress : ILiraAPI //класс наследованный от ILiraAPI { LiraAPI.ReturnCodes LiraAPI.ILiraAPI.ExecuteProgram_Result(IResultLiraAPI result, int nodesCount, int elemCount, List<List<FEModel.Results_Key>> allLoadCases, FEModel.Results_Key loadCase) { //nodesCount и elemCount – количество узлов и элементов в расчетной схеме //loadCase - информация о текущем загружении //allLoadCases - информация обо всех доступных в задаче загружениях //result - объект, позволяющий получить таблицы результатов расчета List<int> elementArray = new List<int>(); //массив индексов узлов или элементов (начиная от 0) for (int i = 0; i < elemCount; i++) {elementArray.Add(i);} List<FEModel.Results_Key> pKeyArr = new List<Results_Key>(); //объект, описывающий загружение pKeyArr.Add(loadCase); FEModel.e_Results_ColumnType[] pColumnArr = null; //имена столбцов таблицы результатов string[] pNameColumns = null; //названия столбцов таблицы результатов //получение таблицы результатов allElements, в данном случае RTT_ELEMENTS, которая содержит информацию об элементах, номер, тип, сечение и т.д. Подробную информацию о доступных типах таблиц вы можете найти в файле LiraAPIHelp.pdf, который копируется на жесткий диск в папку [INSTALLDIR] + "\\LiraAPI" в момент установки ПК ЛИРА 10.12 System.Data.DataTable allElements = result.get_TableResult(e_Results_TableType.RTT_ELEMENTS, elementArray, pKeyArr, ref pColumnArr, ref pNameColumns); int count=0; //счетчик отмеченных элементов //перебираем элементы в полученной таблице результатов allElements foreach (System.Data.DataRow currentElement in allElements.Rows) { //проверка – является ли текущий элемент отмеченным. Информацию по названию столбцов в текущей таблице результатов вы можете просмотреть в режиме отладки, например, для таблицы элементов на иллюстрации: |

Код |
---|
if ((bool)currentElement[16] == true){ count++; //если текущий элемент является выбранным, то увеличиваем значение счетчика } } MessageBox.Show("Отмечено элементов: "+count.ToString()); //выводим сообщение return ReturnCodes.RC_OK; } } |
Запускаем проект на выполнение, в результате чего в папке проекта будет скомпилирована библиотека test.dll – пользовательское расширение. Размещаем библиотеку по следующему пути "C:\Users\User1\AppData\Roaming\Lira Soft\Lira10.12\Addins\test.dll".
б. Регистрация пользовательского расширения
На следующем этапе нам необходимо зарегистрировать созданное нами расширение в ПК Лира, чтобы его можно было запустить на выполнение.
При первом запуске ЛИРА 10.12 создает файл с глобальными настройками:
[ApplicationData]+"\\Lira Soft\\Lira10.12\\VariableEnvironment_x86.xml"
[ApplicationData]+"\\Lira Soft\\Lira10.12\\VariableEnvironment_x64.xml"
Среди прочих настроек в этом файле есть параметр AddinsPath, содержащий путь к папке, в которой должны находиться xml-файлы регистрации расширений. По умолчанию это [ApplicationData]+"\\Lira Soft\\Lira10.12\\Addins".
На примере нашего расширения файл регистрации расширения ([ApplicationData]+"\\Lira Soft\\Lira10.12\\Addins\\test.xml") должен иметь следующую структуру:
Код |
---|
<?xml version="1.0" encoding="utf-8"?> <LiraAddIns> <AddIn Type="PROLONGATION"> <AssemblyPath>"C:\Users\User1\AppData\Roaming\Lira Soft\Lira10.12\Addins\test.dll"</AssemblyPath> <CommandName>Количество выбранных</CommandName> <CommandDescription>Выводит количество отмеченных элементов</CommandDescription> <ImagePath> </ImagePath> <Vendor>ЛИРА Софт</Vendor> <VendorDescription> ЛИРА Софт </VendorDescription> </AddIn> </LiraAddIns> |
AddIn содержит атрибут Type, который может принимать одно из трех значений: PRIME, PROLONGATION или ALL. Этот атрибут указывает, в каком режиме будет доступна команда этого расширения: в режиме редактирования исходных данных, в режиме анализа результатов расчета или в обоих режимах. В текущей версии доступно только значение PROLONGATION.
AssemblyPath — абсолютный путь к файлу расширения *.dll.
ImagePath — абсолютный путь к файлу, содержащему изображение для иконки в меню
(стандартный размер Width=24, Height=20).
CommandName — имя команды в меню ЛИРА 10.12.
Vendor и VendorDescription — информация о разработчике расширения.
При запуске ЛИРА 10.12 добавляет пункт меню для каждого найденного и удачно прочитанного xml-файла регистрации расширений.
Для тестирования разработанного расширения мы выбираем один элемент в расчетной схеме и запускаем наш плагин на вкладке «Расширения», запуск необходимо выполнять в режиме просмотра результатов. В результате работы получим на экране сообщение о том, что в схеме отмечен 1 элемент.