Пошагово рассмотрим последовательность действий для создания простого плагина, который будет выводить на экран количество выбранных в модели объектов. В данном посте будет разработан плагин с использованием библиотек .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 элемент.