[Из песочницы] Расширение функционала EPLAN. Создание простого Add-Ina на C#

Расширяем функционал EPLAN при помощи Add-Inов на C#


0d28720e4f264fe49570d839b95150ea.jpgEPLAN — это платформа для сквозного проектирования, охватывающая следующие отрасли: электротехника, КИПиА, гидравлика/пневматика и механика (проектирование шкафов и жгутов). Благодаря открытой архитектуре и стандартным интеграционным модулям EPLAN может быть экономически эффективно интегрирован с большим спектром сторонних решений: системами механического проектирования, ERP и PDM системами, системами проектирования зданий, промышленных производств и кораблей.
Применение EPLAN
• Автомобилестроение
• Машиностроение
• Металлургия
• Химическая и фармацевтическая промышленность
• Пищевая промышленность
• Добыча нефти и газа
• Трубопроводный транспорт
• Нефте- и газо-переработка
• Производство тепла и электроэнергии
• Передача и распределение электроэнергии
• Железнодорожный транспорт
• Водоснабжение и водоотведение
• Станкостроение
• Легкая промышленность
• Автоматизация зданийОсновные модули платформы
• EPLAN Electric P8 — Модульное и масштабируемое решение для электротехнического проектирования, автоматического создания проектной и рабочей документации.
• EPLAN Fluid — Программное обеспечение для проектирования пневмо/гидроавтоматики, систем смазки и охлаждения и автоматического создания соответствующей проектной и рабочей документации
• EPLAN ProPanel — 3D проектирование электротехнических шкафов с передачей данных в производство. Виртуальное трехмерное моделирование, создание двух- и трех- мерных чертежей, трехмерное изображение проводных и маршрутных схем, наличие шаблонов для работы сверлильного оборудования и интеграция со станками ЧПУ
• EPLAN PrePlanning — программное обеспечение для предварительного (эскизного) проектирования объектов и генерации проектной документации.
• EPLAN Engineering Center — Решение для функционального проектирования. В данном модуле пользователь задет граничные параметры проекта, а само проектирование осуществляется системой автоматически по определенным правилам.Про расширение функционала
EPLAN — гибкая платформа, позволяющая расширять функционал с помощью скриптов и Add-Inов. Рассмотрим только Add-Inы, поскольку скрипты (сценарии) дают гораздо меньшую свободу действий.

Add-In — это надстройка, дополняющая и расширяющая базовый функционал, предлагаемый EPLAN. Add-In создается при помощи API EPLAN, который, в свою очередь, использует dotNET и поддерживает 3 языка программирования: Visual Basic, C++ и C#. Порядок создания Add-Inов одинаков для всех вышеуказанных языков. Информация по API EPLAN находится в справочнике EPLAN API-Support (в формате *.chm), поставляемом вместе с документацией.

Процесс создания Add-Ina
Рассмотрим непосредственно процесс создания Add-Inов.

1. Для начала, так как используется среда dotNET, создаем проект Class Library в MS Visual Studio.
2. Далее подключаем к проекту библиотеки EPLAN API.

d5ceb513242e4d52857dee7cc47bcf48.JPG

3. Пишем код инициализации Add-Inа
Для регистрации и инициализации Add-Ina, наш класс должен наследовать интерфейс IEplAddIn (подробнее в EPLAN API-Support). Создадим пункт меню в Главном Меню EPLAN и добавим в него одно действие (Action).

using Eplan.EplApi.ApplicationFramework;
using Eplan.EplApi.Gui;

namespace Test
{
    public class AddInModule:IEplAddIn
    {
        public bool OnRegister(ref bool bLoadOnStart)
        {
            bLoadOnStart = true;
            return true;
        }

        public bool OnUnregister()
        {
            return true;
        }

        public bool OnInit()
        {
            return true;
        }

        public bool OnInitGui()
        {
            Menu OurMenu = new Menu();
            OurMenu.AddMainMenu("Тест", Menu.MainMenuName.eMainMenuUtilities, "Информация по проекту", "ActionTest",
                "Имя проекта, фирмы и дата создания", 1);
            return true;
        }

        public bool OnExit()
        {
            return true;
        }
    }
}



Методы OnRegister и OnUnregister вызываются по одному разу, при первом подключении и удалении Add-Ina соответственно.
Метод OnExit вызывается при закрытии EPLANa.
Метод OnInit вызывается при загрузке EPLANa для инициализации Add-Ina.
Метод OnInitGui вызывается при загрузке EPLANa для инициализации Add-Ina и пользовательского интерфейса.

4. Пишем код действия (Action), который будет в нашем меню. Действие (Action) должно наследовать интерфейс IEplAction (подробнее в EPLAN API-Support).

using System;
using System.Windows.Forms;
using Eplan.EplApi.ApplicationFramework;
using Eplan.EplApi.DataModel;
using Eplan.EplApi.HEServices;

namespace Test.Action_test
{
    public class Action_Test:IEplAction
    {
        public bool OnRegister(ref string Name, ref int Ordinal)
        {
            Name = "ActionTest";
            Ordinal = 20;
            return true;
        }

        public bool Execute(ActionCallingContext oActionCallingContext)
        {
            SelectionSet Set = new SelectionSet();
            Project CurrentProject = Set.GetCurrentProject(true);
            string ProjectName = CurrentProject.ProjectName;
            string ProjectCompanyName = CurrentProject.Properties.PROJ_COMPANYNAME;
            DateTime ProjectCreationDate = CurrentProject.Properties.PROJ_CREATIONDATE;
            MessageBox.Show("Название проекта: " + ProjectName + "\n" + "Название фирмы: " + ProjectCompanyName +
                            "\n" + "Дата создания проекта: " + ProjectCreationDate.ToShortDateString());
            return true;
        }

        public void GetActionProperties(ref ActionProperties actionProperties)
        {
        }
    }
} 



Метод OnRegister регистрирует наш Action под указанным именем.
Метод Execute выполняются при вызове Actiona из платформы EPLAN. В данном случае метод Execute выбирает текущий проект, считывает из него три поля, а именно, название проекта, название фирмы и дату создания, и затем выводит их в MessageBox.
Метод GetActionProperties возвращает описание нашего Actiona (только для документирования).

5. Имя скомпилированной DLL-библиотеки должно соответствовать следующему правилу:

Eplan.EplAddIn.XXXX.dll
где XXXX — это имя вашего Add-Ina

Подключение Add-Ina
К платформе Add-In подключается следующим образом:

1. Выполняем «Сервисные программы»
— «API-AddIns…»

c582bdb6f7f4450296490a5634fcf40f.jpg

2. Жмем на кнопку «Загрузить»

e8b7222a59f34c07b1793166ee7c2984.jpg

3. В открывшемся окне выбираем Add-In и нажимаем «Открыть»

e606adba5ee24d9d9403efa6e92fac6e.jpg

4. Кликаем на кнопку «ОК». Add-In загружен и готов к работе.

3f67c7a916c84b208bd33e888f66217c.jpg
При загрузке Add-In инициализируется пункт меню «Тест», раскрыв который мы видим наше действие (Action), описанное в Action_Test.

Посмотрим на результат работы Add-Ina:
3eeeab397fac408fa1897d503d3af3ed.jpg

Нажимаем на пункт меню «Тест» — «Информация по проекту»

b49c7fc86c3943898ea7ef3367a14f31.jpg

Платформа EPLAN предоставляет большой базовый функционал. Однако иногда требуются действия, не входящие в него. В простейших случаях можно создавать и подключать скрипты (сценарии), но если требуется глубокий доступ к данным, необходимо воспользоваться API, создавать и использовать Add-Inы.

Полезные ссылки
1. EPLAN в России
2. Форум АСУ ТП

© Habrahabr.ru