
- •Минобрнауки россии
- •1. Вводная часть
- •2. Знакомство со средой разработки на примере создания простого консольного приложения
- •3. Модификация консольного приложения
- •4. Публикация
- •5. О приложении к Лабораторной работе № 1
- •2. Лабораторная работа № 2: Создание простого приложения Windows Forms Лабораторная работа № 2: Создание простого приложения Windows Forms
- •1. Вводная часть
- •2. Создание простого приложения Windows Forms
- •3. Модификация приложения Windows Forms
- •4. Завершающая часть
- •5. О приложении к Лабораторной работе № 2
- •3. Лабораторная работа № 3: Windows Forms и использование некоторых элементов управления Лабораторная работа № 3: Windows Forms и использование некоторых элементов управления
- •1. Вводная часть
- •2. Создание приложения Windows Forms
- •3. Модификация приложения Windows Forms
- •4. Модификация приложения Windows Forms: элемент управления MenuStrip
- •5. Модификация приложения Windows Forms: элемент управления Button
- •6. Модификация приложения Windows Forms: элемент управления ToolTip
- •7. Модификация приложения Windows Forms: элемент управления ComboBox
- •8. Модификация приложения Windows Forms: элемент управления WebBrowser
- •9. Модификация приложения Windows Forms: добавляем исходный код
- •10. Завершающая часть
- •11. О приложение к Лабораторной работе № 3
- •4. Лабораторная работа № 4: Windows Forms — работа с формами Лабораторная работа № 4: Windows Forms — работа с формами
- •1. Вводная часть
- •2. Создание приложения Windows Forms
- •3. Модификация приложения Windows Forms
- •4. Модификация приложения Windows Forms: добавление новой формы
- •5. Модификация приложения Windows Forms: динамическое связывание параметров двух форм и передача параметра через прямой доступ к элементу формы
- •6. Модификация приложения Windows Forms: динамическое связывание параметров двух форм и передача параметра через передачу метода в конструктор формы
- •7. Модификация приложения Windows Forms: динамическое связывание параметров двух форм и передача параметра через класс делегата
- •8. Модификация приложения Windows Forms: динамическое связывание параметров двух форм и передача параметра через свойства
- •9. Завершающая часть
- •2. Создание приложения Windows Forms
- •3. Модификация приложения Windows Forms
- •4. Модификация приложения Windows Forms: динамическое добавление и уничтожение элемента управления
- •5. Модификация приложения Windows Forms: стандартные диалоговые окна
- •6. Модификация приложения Windows Forms: открытие файла, сохранение файла и работа с текстом
- •7. Модификация приложения Windows Forms: прочее
- •8. Завершающая часть
- •9. О приложении к Лабораторной работе № 5
- •6. Лабораторная работа № 6: SolidWorks — работа с SolidWorks Лабораторная работа № 6: SolidWorks — работа с SolidWorks
- •1. Вводная часть
- •2. Создание приложения Windows Forms
- •3. Модификация приложения Windows Forms: eDrawings 2012
- •4. Модификация приложения Windows Forms: организация работы с SolidWorks через приложение
- •5. Завершающая часть
- •6. О приложении к Лабораторной работе № 6
- •1. Вводная часть
- •2. Создание приложения SwCSharpAddin
- •3. Модификация приложения SwCSharpAddin: макрос отрисовки болта
- •4. Модификация приложения SwCSharpAddin: построение через шаблон детали
- •5. Завершающая часть
- •6. О приложении к Лабораторной работе № 7
- •8. Лабораторная работа № 8: Создание простого приложения Windows Foundation Presentation Лабораторная работа № 8: Создание простого приложения Windows Foundation Presentation
- •1. Вводная часть
- •2. Создание приложения Windows Foundation Presentation
- •3. Модификация приложения Windows Foundation Presentation
- •4. Модификация приложения Windows Foundation Presentation: добавление нового элемента из библиотеки компонентов wpf
- •5. Модификация приложения Windows Forms: расширение функциональности приложения и работа с оформление
- •6. Модификация приложения Windows Foundation Presentation: различные возможности wpf
- •7. Модификация приложения Windows Foundation Presentation: немного о стилях и шаблонах
- •8. Завершающая часть
- •9. О приложении к Лабораторной работе № 8
- •9. Лабораторная работа № 9: Создание приложения-презентации Windows Foundation Presentation Лабораторная работа № 9: Создание приложения-презентации Windows Foundation Presentation
- •1. Вводная часть
- •2. Создание приложения Windows Foundation Presentation
- •3. Модификация приложения Windows Foundation Presentation
- •4. Модификация приложения Windows Foundation Presentation: работа с решением в Expression Blend
- •5. Завершающая часть
- •2. Создание приложения Windows Forms
- •3. Модификация приложения Windows Forms: odbc
- •4. Модификация приложения Windows Forms: ole
- •5. Модификация приложения Windows Forms: xml
- •6. Завершающая часть
- •7. О приложении к Лабораторной работе № 10
- •11. Лабораторная работа № 11: Динамическая связь приложений через библиотеку классов Лабораторная работа № 11: Динамическая связь приложений через библиотеку классов
- •1. Вводная часть
- •2. Удалённый объект: создание библиотеки классов удалённого объекта
- •3. Клиент: создание приложения Windows Forms
- •4. Сервер: создание консольного приложения
- •5. Завершающая часть
- •6. О приложении к Лабораторной работе № 11
- •12. Лабораторная работа № 12: Автоматизация Microsoft Office Word Лабораторная работа № 12: Автоматизация Microsoft Office Word
- •1. Вводная часть
- •2. Создание приложения Windows Forms
- •3. Модификация приложения Windows Forms: создание и заполнение нового документа Microsoft Word
- •4. Модификация приложения Windows Forms: работа с шаблонами
- •5. Завершающая часть
- •6. О приложении к Лабораторной работе № 12
- •13. Лабораторная работа № 13: Автоматизация Microsoft Office Excel Лабораторная работа № 13: Автоматизация Microsoft Office Excel
- •1. Вводная часть
- •2. Создание приложения Windows Forms
- •3. Модификация приложения Windows Forms: создание и заполнение нового документа Microsoft Excel
- •4. Модификация приложения Windows Forms: чтение данных с документа Microsoft Excel
- •5. Модификация приложения Windows Forms: прочие возможности Microsoft Excel
- •6. Завершающая часть
- •7. О приложении к Лабораторной работе № 13
- •14. Лабораторная работа № 14: Простой растровый редактор Лабораторная работа № 14: Простой растровый редактор
- •1. Вводная часть
- •2. Создание приложения Windows Forms
- •3. Модификация приложения Windows Forms: подготовка интерфейса редактора
- •4. Модификация приложения Windows Forms: функциональность растрового редактора
- •5. Завершающая часть
- •6. О приложении к Лабораторной работе № 14
- •15. Лабораторная работа № 15: Векторный редактор изображений Лабораторная работа № 15: Векторный редактор изображений
- •1. Вводная часть
- •2. Создание решения, приложения Windows Forms и библиотеки классов
- •3. Модификация приложения Windows Forms: подготовка интерфейса редактора и добавление файлов ресурсов
- •4. О будущей функциональности векторного редактора изображений
- •5. Модификация приложения Windows Forms: подготовка библиотеки классов
- •6. Модификация приложения Windows Forms: функциональность векторного редактора
- •7. Завершающая часть
- •8. О приложении к Лабораторной работе № 15
- •16. Лабораторная работа № 16: Windows Communication Foundation Лабораторная работа № 16: Windows Communication Foundation
- •1. Вводная часть
- •2. Создание приложения wcf:
- •3. Модификация приложения wcf: приложение-клиент для wcf-службы
- •4. Создание приложения Windows Forms: сервер чата на wcf
- •5. Создание приложения Windows Forms: клиент чата на wcf
- •6. Завершающая часть
- •7. О приложении к Лабораторной работе № 16
- •17. Лабораторная работа № 17: Знакомство с Silverlight Лабораторная работа № 17: Знакомство с Silverlight
- •1. Вводная часть
- •2. Создание приложения Silverlight:
- •3. Модификация приложения Silverlight: первые шаги и полноэкранный режим
- •4. Модификация приложения Silverlight: простой проигрыватель mp3-файлов
- •5. Модификация приложения Silverlight: работа с анимацией
- •6. Завершающая часть
- •7. О приложении к Лабораторной работе № 17
- •18. Лабораторная работа № 18: Знакомство с asp.Net Лабораторная работа № 18: Знакомство с asp.Net
- •1. Вводная часть
- •2. Создание веб-приложения asp.Net
- •3. Модификация веб-приложения asp.Net: реализация различной функциональности
- •4. Модификация веб-приложения asp.Net: ajax
- •5. Завершающая часть
- •6. О приложении к Лабораторной работе № 18
- •1. Вводная часть
- •2. Создание приложения Windows Forms
- •3. Модификация приложения Windows Forms: подготовка интерфейса и добавление TabControl
- •4. Модификация приложения Windows Forms: вкладка «Просто фон!»
- •5. Модификация приложения Windows Forms: вкладка «Объекты и градиент»
- •6. Модификация приложения Windows Forms: вкладка «Мой монитор сломался!»
- •7. Модификация приложения Windows Forms: вкладка «Векторные часы»
- •8. Модификация приложения Windows Forms: вкладка «Огонь!!!»
- •9. Модификация приложения Windows Forms: вкладка «Дождик»
- •10. Завершающая часть
- •11. О приложении к Лабораторной работе № 19
- •1. Вводная часть
- •2. Основные положения при работе с f#
- •3. Создание приложения «Учебник по f#»
- •4. Создание консольного приложения
- •5. О приложении к Лабораторной работе № 21
- •22. Лабораторная работа № 22: Различные примеры на f# Лабораторная работа № 22: Различные примеры на f#
- •1. Вводная часть
- •2. Создание приложения «Приложение f#»
- •3. Модификация приложения f#: match
- •4. Модификация приложения f#: создание форм и рисование объектов на форме
- •5. Модификация приложения f#: работа с базой данных Microsoft Access
- •6. О приложении к Лабораторной работе № 22
- •23. Дополнительная лабораторная работа № 1
- •24. Дополнительная лабораторная работа № 2
- •25. Дополнительная лабораторная работа № 3
- •1. Вводная часть
- •2. Создание приложения Windows Foundation Presentation
- •3. Модификация приложения Windows Foundation Presentation: добавление ресурсов
- •4. Модификация приложения Windows Foundation Presentation: добавление исходного кода
- •5. Модификация приложения Windows Foundation Presentation: оформление элемента ListBox
- •6. Завершающая часть
- •7. О приложении к данной работе
3. Модификация приложения SwCSharpAddin: макрос отрисовки болта
Итак. Обеспечим новую функциональность для нашего добавления. Пусть есть макрос для отрисовки шестигранного болта с фиксированными размерами. Обеспечим изменение размеров в форме, загружающейся до отрисовки болта. Форма будет запрашивать у пользователя три параметра, по которым строится болт: шаг по спирали, высота спирали и радиус стержня с резьбой. Построение детали болта начнётся после нажатия на кнопку Создать болт (макрос) в нашем добавлении.
Для начала организуем в добавлении две новые кнопки. Одна для вышеописанного макроса, вторая же для будущей функциональности. Нарисуем эти кнопки открыв в обозревателе решений файлы ToolbarLarge.bmp и ToolbarSmall.bmp.
В ToolbarLarge.bmp нарисуем:
В ToolbarSmall.bmp нарисуем:
Теперь добавим обработчики для новых кнопок. Откроем файл SwAddin.cs. Найдём:
public const int mainCmdGroupID = 5;
public const int mainItemID1 = 0;
public const int mainItemID2 = 1;
public const int mainItemID3 = 2;
Добавим после:
public const int mainItemID4 = 3;
public const int mainItemID5 = 4;
Найдём:
int cmdIndex0, cmdIndex1, cmdIndex2;
Изменим на:
int cmdIndex0, cmdIndex1, cmdIndex2, cmdIndex3, cmdIndex4;
Найдём:
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);
Добавим после:
cmdIndex3 = cmdGroup.AddCommandItem2("UsingMacro", -1, "Создать болт при помощи макроса", "Создать болт (макрос)", 3, "UsingMacro", "", mainItemID4, menuToolbarOption);
cmdIndex4 = cmdGroup.AddCommandItem2("UsingTemp", -1, "Создать болт с использованием шаблона", "Создать болт (шаблон)", 4, "UsingTemp", "", mainItemID5, menuToolbarOption);
Найдём:
int[] knownIDs = new int[3] { mainItemID1, mainItemID2, mainItemID3 };
Изменим на:
int[] knownIDs = new int[5] { mainItemID1, mainItemID2, mainItemID3, mainItemID4, mainItemID5 };
Найдём:
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);
Изменим на:
int[] cmdIDs = new int[6];
int[] TextType = new int[6];
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;
cmdIDs[4] = cmdGroup.get_CommandID(cmdIndex3);
TextType[4] = (int)swCommandTabButtonTextDisplay_e.swCommandTabButton_TextHorizontal;
cmdIDs[5] = cmdGroup.get_CommandID(cmdIndex4);
TextType[5] = (int)swCommandTabButtonTextDisplay_e.swCommandTabButton_TextHorizontal;
bResult = cmdBox.AddCommands(cmdIDs, TextType);
Найдём:
public void CreateCube()
{
Добавим до:
public void UsingMacro()
{
string partTemplate = iSwApp.GetUserPreferenceStringValue((int)swUserPreferenceStringValue_e.swDefaultTemplatePart);
if ((partTemplate != null) && (partTemplate != ""))
{
IModelDoc2 swDoc = (IModelDoc2)iSwApp.NewDocument(partTemplate, (int)swDwgPaperSizes_e.swDwgPaperA2size, 0.0, 0.0);
// Начало макроса
bool boolstatus = false;
// Спираль: часть 1
double C = 1 / 1000.0;
double Height, Pitch, Radius;
// Загружаем форму LWP07Macro
LWP07Macro Macro = new LWP07Macro();
Macro.Text = "Использование SwCSharpAddin (C#) :: Выбор размеров шестигранного болта (макрос)";
Macro.ShowDialog();
Height = Macro.H * C;
Pitch = Macro.P * C;
Radius = Macro.R * C;
Macro.Dispose();
// Начало первого эскиза. Создаём круг для спирали
boolstatus = swDoc.Extension.SelectByID2("Сверху", "PLANE", 0, 0, 0, false, 0, null, 0);
swDoc.SketchManager.InsertSketch(true);
swDoc.ClearSelection2(true);
SketchSegment skSegment = null;
skSegment = ((SketchSegment)(swDoc.SketchManager.CreateCircleByRadius(0, 0, 0, Radius)));
swDoc.InsertHelix(false, true, false, true, 2, Height, Pitch, 0, 0, (double)Math.PI);
boolstatus = swDoc.SelectedFeatureProperties(0, 0, 0, 0, 0, 0, 0, true, false, "Спираль1");
swDoc.ClearSelection2(true);
boolstatus = swDoc.Extension.SelectByID2("", "SKETCH", 0, 0, -Radius, false, 0, null, 0);
boolstatus = swDoc.SelectedFeatureProperties(0, 0, 0, 0, 0, 0, 0, true, false, "Эскиз1");
swDoc.ClearSelection2(true);
// Спираль: часть 2
// create reference plane
swDoc.ViewRotateplusx(); swDoc.ViewRotateplusx(); swDoc.ViewRotateplusx();
//boolstatus = swDoc.Extension.SelectByID2("", "POINTREF", 0, 0, -Radius, false, 0, null, 0); // Выбираем конечную точку
boolstatus = swDoc.Extension.SelectByID2("Спираль1", "REFERENCECURVES", 0, 0, 0, false, 0, null, 0); // Выбираем всё
boolstatus = swDoc.Extension.SelectByID2("", "POINTREF", 0, 0, -Radius, true, 1, null, 0);
swDoc.ViewRotateminusy();
RefPlane myRefPlane = null;
myRefPlane = ((RefPlane)(swDoc.FeatureManager.InsertRefPlane(2, 0, 4, 1, 0, 0)));
//swDoc.ClearSelection2(true);
boolstatus = swDoc.Extension.SelectByID2("", "PLANE", 0, 0, -Radius, false, 0, null, 0);
boolstatus = swDoc.SelectedFeatureProperties(0, 0, 0, 0, 0, 0, 0, true, false, "Плоскость1"); // Изменяем имя
swDoc.BlankRefGeom(); // Скрываем Плоскость1
swDoc.ShowNamedView2("*Изометрия", -1);
swDoc.ViewZoomtofit2();
// Эскиз2: треугольник/резьба формы
boolstatus = swDoc.Extension.SelectByID2("Справа", "PLANE", 0, 0, 0, false, 0, null, 0);
swDoc.SketchManager.InsertSketch(true);
swDoc.ShowNamedView2("*Normal To", 0);
swDoc.ViewRotateminusx();
swDoc.ViewTranslateminusx();
swDoc.ClearSelection2(true);
double x, y, z, dx, dy;
//x = .049903; y = -.001803; z = 0; // Старые координаты. Те что удалось установить вручную изначально
x = y = z = 0;
dx = dy = Radius / 10.0 + Pitch / 4.0;
skSegment = ((SketchSegment)(swDoc.SketchManager.CreateLine(x, y, z, x, y + dy, z)));
skSegment = ((SketchSegment)(swDoc.SketchManager.CreateLine(x, y + dy, z, x + dx, y + dy, z))); // Горизонталь
skSegment = ((SketchSegment)(swDoc.SketchManager.CreateLine(x + dx, y + dy, z, x, y, z)));
swDoc.ClearSelection2(true);
//boolstatus = swDoc.Extension.SelectByID2("", "SKETCHSEGMENT", x+dx/2.0, y+dy, z, false, 0, null, 0);
//swDoc.SketchAddConstraints("sgHORIZONTAL2D"); // Больше не нужно
//swDoc.ClearSelection2(true);
//swDoc.ViewRotateminusx(); // Тоже не нужно
swDoc.SetPickMode();
boolstatus = swDoc.Extension.SelectByID2("Точка1", "SKETCHPOINT", x, y, z, false, 0, null, 0);
boolstatus = swDoc.Extension.SelectByID2("Спираль1", "REFERENCECURVES", 0, 0, 0, true, 1, null, 0);
swDoc.SketchAddConstraints("sgATPIERCE");
swDoc.ClearSelection2(true);
boolstatus = swDoc.Extension.SelectByID2("Точка1", "SKETCHPOINT", x, y, z, false, 0, null, 0);
swDoc.SketchConstraintsDel(0, "sgCOINCIDENT"); // Автоматически "совпадающие"
swDoc.SketchManager.InsertSketch(true);
// Перемещаем Эскиз2 на Плоскость1
boolstatus = swDoc.Extension.SelectByID2("Эскиз2", "SKETCH", 0, 0, 0, false, 0, null, 0);
boolstatus = swDoc.Extension.SelectByID2("Справа", "PLANE", 0, 0, 0, true, 0, null, 0);
boolstatus = swDoc.DeSelectByID("Справа", "PLANE", 0, 0, 0);
boolstatus = swDoc.Extension.SelectByID2("Эскиз2", "SKETCH", 0, 0, 0, false, 0, null, 0);
boolstatus = swDoc.Extension.SelectByID2("Плоскость1", "PLANE", 0, 0, 0, true, 0, null, 0);
boolstatus = swDoc.ChangeSketchPlane();
boolstatus = swDoc.EditRebuild3();
swDoc.SetPickMode();
swDoc.ClearSelection2(true);
swDoc.ViewZoomtofit2();
// Делаем резьбу; 1: эскиз пути, 2: маршрут спирали, 4: выполняем
//boolstatus = swDoc.Extension.SelectByID2("Эскиз2", "SKETCH", 0.005135831118, -0.0038831893819, 0, true, 1, null, 0);
boolstatus = swDoc.Extension.SelectByID2("Эскиз2", "SKETCH", 0, 0, 0, true, 1, null, 0);
boolstatus = swDoc.Extension.SelectByID2("Спираль1", "REFERENCECURVES", 0, 0, 0, true, 4, null, 0);
Feature myFeature = null;
myFeature = ((Feature)(swDoc.FeatureManager.InsertProtrusionSwept3(false, false, 0, false, false, 0, 0, false, 0, 0, 0, 0, true, true, true, 0, true)));
// Снимаем выделение, скрываем окружность (созданную вначале), меняем положение камеры (вид)
swDoc.ClearSelection2(true);
boolstatus = swDoc.Extension.SelectByID2("Эскиз1", "SKETCH", 0, 0, 0, false, 0, null, 0);
swDoc.BlankSketch();
swDoc.ClearSelection2(true);
swDoc.ShowNamedView2("*Изометрия", -1);
swDoc.ViewZoomtofit2();
// Спираль: часть 3
// Вытягивание
double Height2 = Height + Radius / 4.0 + dx * 1.5;
boolstatus = swDoc.Extension.SelectByID2("Эскиз1", "SKETCH", 0, 0, 0, false, 0, null, 0);
myFeature = ((Feature)(swDoc.FeatureManager.FeatureExtrusion2(true, false, false, 0, 0, Height2, 0.00254, false, false, false, false, 0.01745329251994, 0.01745329251994, false, false, false, false, true, true, true, 0, 0, false)));
swDoc.ISelectionManager.EnableContourSelection = false;
swDoc.ClearSelection2(true);
// Вырезаем вытягивание (наверх)
//boolstatus = swDoc.Extension.SelectByID2("", "FACE", 0, Height2, 0, false, 0, null, 0);
//swDoc.SketchManager.InsertSketch(true);
//swDoc.ClearSelection2(true);
//skSegment = ((SketchSegment)(swDoc.SketchManager.CreateCircleByRadius(0, 0, 0, Radius + c)));
//swDoc.SketchManager.InsertSketch(true);
//swDoc.ClearSelection2(true);
//boolstatus = swDoc.Extension.SelectByID2("Sketch3", "SKETCH", 0, 0, 0, false, 0, null, 0);
//myFeature = ((Feature)(swDoc.FeatureManager.FeatureCut(true, false, true, 0, 0, c, 0.0508, false, false, false, false, 0.01745329251994, 0.01745329251994, false, false, false, false, false, true, true)));
//swDoc.ISelectionManager.EnableContourSelection = false;
//swDoc.ClearSelection2(true);
// Шляпка болта
double extrHeight = Radius + c / 4;
boolstatus = swDoc.Extension.SelectByID2("", "FACE", 0, Height2, 0, false, 0, null, 0);
swDoc.SketchManager.InsertSketch(true);
//skSegment = ((SketchSegment)(swDoc.SketchManager.CreateCircleByRadius(0, 0, 0, Radius*1.5))); // Созданём полигон (6 граней) вместо окружности
Array vSkLines = null;
vSkLines = ((Array)(swDoc.SketchManager.CreatePolygon(0, 0, 0, -Radius * 2, 0, 0, 6, true)));
swDoc.SketchManager.InsertSketch(true);
swDoc.ClearSelection2(true);
boolstatus = swDoc.Extension.SelectByID2("Эскиз3", "SKETCH", 0, Height2, 0, false, 0, null, 0);
myFeature = ((Feature)(swDoc.FeatureManager.FeatureExtrusion2(true, false, false, 0, 0, extrHeight, 0.00254, false, false, false, false, 0.01745329251994, 0.01745329251994, false, false, false, false, true, true, true, 0, 0, false)));
swDoc.ISelectionManager.EnableContourSelection = false;
swDoc.ClearSelection2(true);
// Кромки
boolstatus = swDoc.Extension.SelectByID2("", "FACE", 0, Height2 + extrHeight, 0, false, 0, null, 0);
swDoc.ViewRotateplusx();
swDoc.ViewRotateplusx();
swDoc.ViewRotateplusx();
swDoc.ViewRotateplusx();
boolstatus = swDoc.Extension.SelectByID2("", "FACE", Radius * 1.5, Height2, 0, true, 1, null, 0);
//boolstatus = swDoc.Extension.SelectByID2("", "FACE", 0, 0, 0, true, 2, null, 0);
Array radiiArray3 = null;
double[] radiis3 = new double[1];
Array setBackArray3 = null;
double[] setBacks3 = new double[0];
Array pointArray3 = null;
double[] points3 = new double[0];
radiiArray3 = radiis3;
setBackArray3 = setBacks3;
pointArray3 = points3;
myFeature = ((Feature)(swDoc.FeatureManager.FeatureFillet(195, Radius * 2.0 / 25.0, 0, 0, radiiArray3, setBackArray3, pointArray3)));
swDoc.ClearSelection2(true);
boolstatus = swDoc.Extension.SelectByID2("", "FACE", 0, 0, 0, false, 0, null, 0);
myFeature = ((Feature)(swDoc.FeatureManager.FeatureFillet(195, Radius * 2.0 / 25.0, 0, 0, radiiArray3, setBackArray3, pointArray3)));
// Завершающий вид на деталь
swDoc.ShowNamedView2("*Изометрия", -1);
swDoc.ViewZoomtofit2();
// Конец макроса
}
else
{
System.Windows.Forms.MessageBox.Show("Нет части доступных шаблонов. Пожалуйста, проверьте ваши настройки чтобы убедиться, что часть шаблонов выбрана или недостающие шаблоны.");
}
}
public void UsingTemp()
{
// Пока пусто
}
Добавим недостающую форму для работы кода макроса. Нажмём ПКМ на названии проекта в обозревателе решений, далее в раскрывающемся списке Добавить -> Создать элемент... (Ctrl+Shift+A). Выберем в открывшемся окне Форма Windows Forms. В поле Имя внизу окна вписываем LWP07Macro.cs, далее жмём ОК.
Задаём следующие параметры формы на панели Свойства:
Text: |
Использование SwCSharpAddin (C#) :: Ввод размеров болта для макроса |
Size: |
600; 100 |
FormBorderStyle: |
FixedDialog |
MaximizeBox: |
False |
Рис. 3. 1. Модифицированная форма LWP07Macro
Добавим
на нашу форму ToolTip
().
Параметры добавленного элемента всплывающей подсказки таковы:
(Name): |
Hint |
Слева направо установим три TextBox со следующими параметрами:
(Name): |
TBHeight |
Text: |
75 |
ToolTip на Hint: |
Высота спирали |
(Name): |
TBRadius |
Text: |
10 |
ToolTip на Hint: |
Радиус стержня |
(Name): |
TBPitch |
Text: |
3 |
ToolTip на Hint: |
Шаг спирали |
Добавим над каждым TextBox слева направо по элементу Label. Свойства Text каждого текстового элемента будут соответственно H, R и P.
Установим на форме в правом нижнем углу кнопку Button. Параметры кнопки будут следующими:
(Name): |
B_OK |
Text: |
Размер выбран |
Size: |
100; 23 |
Рис. 3. 2. Модифицированная форма LWP07Macro
Двойным щелчком по кнопке B_OK создаём событие Click, код такой:
double.TryParse(TBHeight.Text, out H);
double.TryParse(TBRadius.Text, out R);
double.TryParse(TBPitch.Text, out P);
if (H > 0 && R > 0 && P > 0)
Close();
else
{
MessageBox.Show("Ошибка ввода размеров: нужно ввести все неотрицательные числа в поля формы.\n\nРазмеры по умолчанию:\nH: 75 мм.\nR: 10 мм.\nP: 3 мм.", "Использование SwCSharpAddin (C#) :: Ввод размеров болта для макроса");
}
Добавим после строчки:
public partial class LWP07Macro : Form
{
Код:
public double H, R, P;
Компилируем приложение (Debug) и запускаем. Загружаем новую деталь (или непосредственно панель инструментов) и нажимаем на кнопку в нашем добавлении с буквой «М». Результат работы показан ниже (Рис. 3. 3):
Рис. 3. 3. Результат построение шестигранного болта при помощи макроса