Создание приложения SwCSharpAddin



 

Добавление при сборке в среде разработки регистрируется в реестре операционной системы и изменяет некоторые ключи, поэтому для работы с добавлением необходимы права Администратора ОС. Запускаем Visual Studio 2010 под учётной записью с административными параметрами, выбирая пункт: Запуск от имени администратора (правая кнопка мыши по ярлыку). Либо изменив параметр Совместимость -> Уровень прав: (поставить галочку) Выполнять эту программу от имени администратора в свойствах ярлыка или самого приложения Visual Studio — devenv . exe):

 

Рис. 2. 1. Расположение исполняемого файла devenv . exe

 

Откроется Начальная страница:

 

Для начала, надо создать проект, для этого выполним последовательно: Файл -> Создать -> Проект… (также можно просто нажать сочетание клавиш Ctrl + Shift + N или пункт «Создать проект…» на Начальной странице):

 

Рис. 2. 2. Создание нового проекта

 

Выберем слева в пункте Установленные шаблоны язык Visual C #, далее найдём в списке SwCSharpAddin. Также здесь можно выбрать какой использовать «фреймворк» (набора компонентов для написания программ). В нашем случае выберем .NET Framework 4.

 

Рис. 2. 3. Окно создания нового проекта

 

В поле Имя вводим LWP 07 SW 02 — это название программы (выбрано по названию лабораторного практикума, номеру и названию работы). В поле Расположение указана конечная директория, где будет находиться весь проект. Выберем расположение удобное для быстрого поиска. В поле Имя решения вводится либо название программы «по умолчанию» из поля Имя автоматически, либо можно ввести своё собственное. Под этим именем будет создана конечная папка проекта (если Имя и Имя решения разные).

 

Рис. 2. 4. Вводим данные нового проекта приложений SwCSharpAddin

 

После нажатия клавиши ОК мы увидим сформированный проект и исходный код приложения SwCSharpAddin (не пустого изначально).

 

Рис. 2. 5. Обозреватель решений: состав проекта приложения SwCSharpAddin сформированного средой разработки

 

Теперь, можно откомпилировать созданную программу, нажав клавишу F 5 ( Отладка -> Начать отладку или нажав на иконку . Тем самым мы запускаем приложение в режиме отладки (и производим компиляцию debug-версии программы) (Debug выбрано изначально). После компиляции автоматически откроется окно Solidworks. Проверим подключение нашего добавления. Для этого откроем окно Добавления...:

Рис. 2. 6. Запуск приложения SwCSharpAddin по конфигурации Debug: проверка подключение добавления LWP 07 SW 02

 

Если добавление было успешно подключено (появилось в списке Другие добавления и стоят обе галочки слева и справа от имени добавления), то можно проверить его работу. По умолчанию, поставляемое добавление уже достаточно «навороченное» и представляет из себя полноценный пример демонстрирующий основные возможности добавлений в принципе. Потому, даже не внося изменений в исходный код, добавление обладает рядом интересных возможностей.

Создаём новую деталь (Файл -> Новый... или сочетание клавиш Ctrl+N):

 

Рис. 2. 7. Создание новой детали для проверки работы добавления

 

Теперь подключим его функционал. Вначале включим панель инструментов. Для этого нажмём ПКМ на свободном месте рядом с названием Деталь1:

 

Найдём в открывшемся списке C # Addin и нажмём:

 

И подключим широкую панель инструментов (Элементы, Эскиз, Анализировать и прочие). ПКМ по области надписей под широкой панелью инструментов:

 

Нажмём на C # Addin и сразу же перейдём на эту панель, в результате увидим следующее:

 

Нажмём Create cube, а затем на Show PMP и Flyout Tooltip:

 

Рис. 2. 8. Запуск приложения SwCSharpAddin по конфигурации Debug: демонстрация всех возможностей

 

Разбирать весь код добавления не имеет смысла. Код достаточно прост для понимания и внесения изменений. Весь проект изначально состоит из четырёх основных файлов кода *. cs, главных из которых два.

1. UserPMPage . cs отвечает за панель пользовательских элементов управления Solidworks (на рис. 2. 8 слева, панель Sample PMP). Этот файл отвечает за оформление панели (функция AddControls () реализует инициализацию конструктора). Разумеется, таких панелей может быть много. Событийные инструменты (функции для работы с пользовательскими элементами и событиями от них) такой панели описаны в PMPHandler . cs. Для каждой панели может быть своя событийная модель и свой обработчик событий.

2. SwAddin . cs отвечает за построение всего добавления. По сути является главным файлов с которым придётся работать большую часть времени. Содержит инициализацию всего меню и всех функций, которое это меню реализует. И файл который является фундаментом для всего добавления это: EventHandling . cs. Реализует событийную модель (обработку событий) для всего добавления.

 

В качестве примера работы с добавлением и кодом, сделаем клон панели Sample PMP (Property Manager Page). Для начала нам нужна копия файла UserPMPage . cs. Нажмём ПКМ в обозревателе решений на этот файл, далее Копировать (либо просто выделим его и нажмём сочетание клавиш Crtl+C). Далее выделим название нашего проекта, зелёное ( ) -> ПКМ и Вставить (Ctrl+V). Переименуем (ЛКМ по файлу в обозревателе и нажмём F 2) файл Копия UserPMPage . cs в UserPMPage 2. cs. Зайдём в файл. Найдём строчку:

 

public class UserPMPage

 

Заменим на:

 

public class UserPMPage2

 

Найдём:

 

   public UserPMPage(SwAddin addin)

 

Заменим:

   public UserPMPage2(SwAddin addin)

 

Открываем файл SwAddin.cs, находим:

 

   Description = "LWP07SW02 description",

   Title = "LWP07SW02",

 

Заменяем на:

 

   Description = "Лабораторная работа № 7, приложение-добавление для SolidWorks 2012: LWP07SW02.dll",

   Title = "Использование SwCSharpAddin (C#)",

 

Находим в этом же файле:

 

   #region Property Manager Variables

   UserPMPage ppage = null;

   #endregion

 

Заменяем на:

 

   #region Property Manager Variables

   UserPMPage ppage = null;

   // Клонируем панель элементов PMP

   UserPMPage2 ppage2 = null;

   #endregion

 

Находим:

 

       #region Setup Sample Property Manager

       AddPMP();

       #endregion

 

Заменяем на:

 

       #region Setup Sample Property Manager

       AddPMP();

       // Клонируем панель элементов PMP

       AddPMP2();

       #endregion

 

Находим:

 

       int cmdIndex0, cmdIndex1;

       string Title = "C# Addin", ToolTip = "C# Addin";

 

Заменяем на:

 

       int cmdIndex0, cmdIndex1, cmdIndex2;

      string Title = "Использование SwCSharpAddin (C#)", ToolTip = "LWP07SW02.dll: все возможности";

 

Находим:

 

       int[] knownIDs = new int[2] { mainItemID1, mainItemID2 };

 

Заменяем на:

 

       int[] knownIDs = new int[3] { mainItemID1, mainItemID2, mainItemID3 };

 

Находим:

 

       int menuToolbarOption = (int)(swCommandItemType_e.swMenuItem | swCommandItemType_e.swToolbarItem);

       cmdIndex0 = cmdGroup.AddCommandItem2("CreateCube", -1, "Create a cube", "Create cube", 0, "CreateCube", "", mainItemID1, menuToolbarOption);

       cmdIndex1 = cmdGroup.AddCommandItem2("Show PMP", -1, "Display sample property manager", "Show PMP", 2, "ShowPMP", "EnablePMP", mainItemID2, menuToolbarOption);

 

Заменяем на:

 

       int menuToolbarOption = (int)(swCommandItemType_e.swMenuItem | swCommandItemType_e.swToolbarItem);

       cmdIndex0 = cmdGroup.AddCommandItem2("CreateCube", -1, "Create a cube", "Create cube", 0, "CreateCube", "", mainItemID1, menuToolbarOption);

       cmdIndex1 = cmdGroup.AddCommandItem2("Show PMP", -1, "Display sample property manager", "Show PMP", 1, "ShowPMP", "EnablePMP", mainItemID2, menuToolbarOption);

       // Клонируем панель элементов PMP

       cmdIndex2 = cmdGroup.AddCommandItem2("Показать ещё одну PMP", -1, "Открыть ещё одну страницу с элементами", "Показать ещё одну PMP", 2, "ShowPMP2", "EnablePMP2", mainItemID3, menuToolbarOption);

 

Находим:

 

               int[] cmdIDs = new int[3];

               int[] TextType = new int[3];

 

               cmdIDs[0] = cmdGroup.get_CommandID(cmdIndex0);

 

               TextType[0] = (int)swCommandTabButtonTextDisplay_e.swCommandTabButton_TextHorizontal;

 

               cmdIDs[1] = cmdGroup.get_CommandID(cmdIndex1);

 

               TextType[1] = (int)swCommandTabButtonTextDisplay_e.swCommandTabButton_TextHorizontal;

 

               cmdIDs[2] = cmdGroup.ToolbarId;

 

               TextType[2] = (int)swCommandTabButtonTextDisplay_e.swCommandTabButton_TextHorizontal | (int)swCommandTabButtonFlyoutStyle_e.swCommandTabButton_ActionFlyout;

 

               bResult = cmdBox.AddCommands(cmdIDs, TextType);

 

Заменяем на:

 

               int[] cmdIDs = new int[4];

               int[] TextType = new int[4];

 

               cmdIDs[0] = cmdGroup.get_CommandID(cmdIndex0);

 

               TextType[0] = (int)swCommandTabButtonTextDisplay_e.swCommandTabButton_TextHorizontal;

 

               cmdIDs[1] = cmdGroup.get_CommandID(cmdIndex1);

 

               TextType[1] = (int)swCommandTabButtonTextDisplay_e.swCommandTabButton_TextHorizontal;

 

               cmdIDs[2] = cmdGroup.ToolbarId;

 

               TextType[2] = (int)swCommandTabButtonTextDisplay_e.swCommandTabButton_TextHorizontal | (int)swCommandTabButtonFlyoutStyle_e.swCommandTabButton_ActionFlyout;

 

               cmdIDs[3] = cmdGroup.get_CommandID(cmdIndex2);

 

               TextType[3] = (int)swCommandTabButtonTextDisplay_e.swCommandTabButton_TextHorizontal;

 

               bResult = cmdBox.AddCommands(cmdIDs, TextType);

 

Находим:

 

   public Boolean RemovePMP()

   {

       ppage = null;

       return true;

   }

 

Добавляем после:

   // Клонируем панель элементов PMP

   public Boolean AddPMP2()

   {

       ppage2 = new UserPMPage2(this);

       return true;

   }

 

   public Boolean RemovePMP2()

   {

       ppage2 = null;

       return true;

   }

 

Находим:

 

   public int EnablePMP()

   {

       if (iSwApp.ActiveDoc != null)

           return 1;

       else

           return 0;

   }

 

Добавляем после:

 

   // Клонируем панель элементов PMP

   public void ShowPMP2()

   {

       if (ppage2 != null)

           ppage2.Show();

   }

 

   public int EnablePMP2()

   {

       if (iSwApp.ActiveDoc != null)

           return 1;

       else

           return 0;

   }

 

Всё. Компилируем приложение (Debug) и запускаем. Результат показан на рисунке ниже:

 

Рис. 2. 9. Результат работы добавления с клонированной страницей PMP

 


Дата добавления: 2019-09-13; просмотров: 192; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!