Лабораторная работа №1
.docxЛабораторная работа №1
РАЗРАБОТКА ПРИЛОЖЕНИЙ В NX 7.5
Для разработки прикладных пользовательских программ для NX 7.5 SIEMENS рекомендует использовать среду разработку Microsoft Visual Studio 2008. Допускается (но при этом не гарантируется работоспособность) использование более поздних версий.
В составе установленного NX 7.5 присутствуют файлы мастеров для Visual Studio 2008, которые позволяют создавать под него прикладные программы. Поддерживаются 3 языка: C++, C#, Visual Basic. Для получения доступа к мастерам Visual Studio необходимо выполнить следующую инструкцию:
-
Открыть папку “vs_files”, которая находится в папке установленного NX. По умолчанию путь к ней: C:\Program Files\UGS\NX7.5\UGOPEN\vs_files
-
Скопировать содержимое папки “vs_files” в рабочий каталог Visual Studio. Путь к каталогу по умолчанию: C:\Program Files\Microsoft Visual Studio 9.0. В процессе копирования необходимо подтвердить желание при копировании заменить папки и файлы с совпадающими именами. Внимание: в процессе копирования Visual Studio должна быть выгружена из памяти.
При запуске Visual Studio после выполнения представленной выше инструкции в диалоге создания проектов будут включены соответствующие мастера (3 штуки: по одному для каждого языка). Рассмотрим работу с мастером под C# .
В качестве типа проектов выберете C# (рис. 1.1). В открывшемся справа меню выберете NX7 Open C# Wizard. Далее задайте имя и расположение проекта, затем нажмите кнопку ОК.
Рисунок 1.1 - Мастер создания проекта
В открывшемся окне мастера нажмите кнопку Next. В следующем диалоговом окне (рис. 1.2) предлагается выбрать тип создаваемого приложения и типы используемых API. Выберем An internal application that can be activated from an NX session (DLL), что соответствует созданию прикладной подпрограммы в виде динамической библиотеки. В пункте “Use APIs” установите галочки напротив двух предлагаемых вариантов. Нажмите кнопку Next.
Рисунок 1.2 - Настройка типа приложения и используемых API
В открывшемся диалоговом окне (рис. 1.3) необходимо выбрать опции загрузки и выгрузки разрабатываемой библиотеки. Выберем в качестве опции загрузки “Explicitly (Main)”, что соответствует загрузке приложения через вызываемый пользователем диалог. Также доступны следующие варианты: при загрузке NX и согласно установленному событию. В качестве опции выгрузки выберем “Automatically, when the application completes”. В данном случае библиотека будет выгружена вместе с NX. Другие доступные варианты позволяют выгружать библиотеку по завершению работы NX или через специальный диалог.
По завершению настройки нажмите кнопку Finish, после чего среда разработки автоматически переместит вас в окно написания программного кода.
Рисунок 1.3 - Настройка загрузки и выгрузки библиотеки
Найдите следующую процедуру:
//-----------------------------------------------------------
//Explicit Activation
//This entry point is used to activate the application explicitly
//-----------------------------------------------------------
public static int Main(string[] args)
{
int retValue = 0;
try
{
theProgram = new Program();
//TODO: Add your application code here
theProgram.Dispose();
}
catch (NXOpen.NXException ex)
{
// ---- Enter your exception handling code here -
}
return retValue;
}
Вместо строки комментария “//TODO: Add your application code here” введите программный код разрабатываемого приложения.
В качестве первой программы предлагается вывести типовое сообщение NX. Для этого введите следующую строку:
UI.GetUI().NXMessageBox.Show("Message",XMessageBox.DialogType.Information, " NXOpen/API");
Здесь “Message” – заголовок сообщения, NXMessageBox.DialogType.Information – тип окна сообщения (в данном случае информационный), “Изучаем NXOpen/API” – текст сообщения.
Далее необходимо изменить исходящий путь для сборки программы. Зайдите в настройки проекта. Выберите вкладку “Build”. И выберите пусть для сохранения файлов. Пример: “D:\NXProject\”.
Далее необходимо откомпилировать проект. Для этого можно воспользоваться клавишей F6. Если все проделано верно в окне ошибок и предупреждений будет выведено сообщение о 0 ошибок. Вероятно вам будет сделано несколько предупреждений. Обычно они не препятствуют нормальной работе приложения, однако рекомендуется тщательно с ними ознакомиться и по возможности их устранить.
Результатом компиляции является файл с расширением “.dll” и именем, которое Вы задали при создании проекта. Файл следует искать в каталоге “Debug”, который в свою очередь лежит в папке “Bin”.
Пример пути:
C:\Projects\MyProject\MyProject \bin\Debug.
Внимание: NX 7.5 не поддерживает работу с кириллическими файловыми именами, поэтому все пути и имена, с которыми работает NX должны быть выполнены исключительно латиницей.
Для запуска библиотеки необходимо загрузить NX, после чего в главном меню выбрать последовательность команд Файл – Выполнить – NX функция пользователя или воспользоваться сочетанием клавиш Ctrl-U. В запустившемся диалоге открытия файла следует указать требуемую библиотеку и нажать ОК.
Внимание: в NX 7.5 существует понятие “Роль”. В зависимости от выбора роли интерфейс пользователя системы значительно изменяется. Возможность запуска пользовательских прикладных подпрограмм доступна не во всех ролях. Рекомендуем выбирать роль “Расширенные с полным меню”.
Результат выполнения созданной ранее библиотеки показан на рисунке 1.4.
Рисунок 1.4 - Результат работы учебной библиотеки
Более сложный вариант создание программы для замысловатой кривой, заданной параметрическим способом (х = x(t), у = y(t)). Формулы, определяющие эту кривую, позаимствованы из рубрики «Занимательный Компьютер» журнала Scientific American (№ 3, 1985). Кривая задается достаточно простыми формулами в полярной форме:
x = sin(0.99t) - 0.7cos(3.01t);
у = cos(l.0lt) + 0.l sin(15.03t),
где переменная t - угол по отношению к положительному направлению оси X, радиус-вектор совершает 100 полных оборотов (что соответствует значению t=36000), прежде чем кривая замкнется, а полученная «осциллограмма» напоминает сеть, наброшенную на некий трехмерный объект.
Алгоритм работы приложения по построению параметрической кривой:
-
Запрос параметров кривой (габариты прямоугольной области, в которую будет вписана кривая, глубина гравировки, максимальное значение параметра!);
-
Вывод на экран габаритного прямоугольника и изменение масштаба изображения (Fit);
-
Расчет в цикле с заданным шагом по параметру t всех точек кривой, соединение точек отрезками прямых, вывод информации в CLS-файл.
Для упрощения приложения предположим, что оно запускается после создания пользователем нового файла модели Unigraphics.
Прежде всего создадим новый файл модели детали (part), в котором будет создаваться кривая. Пример создание нового файла выглядит следующим образом:
FileNew fileNew1;
fileNew1 = theSession.Parts.FileNew();
fileNew1.TemplateFileName = "model-plain-1-mm-template.prt";
fileNew1.Application = FileNewApplication.Modeling;
fileNew1.Units = NXOpen.Part.Units.Millimeters;
fileNew1.NewFileName = "C:\\Program Files\\UGS\\NX 7.5\\UGII\\model1.prt";
fileNew1.MasterFileName = "";
fileNew1.UseBlankTemplate = false;
fileNew1.MakeDisplayedPart = true;
NXObject nXObject1;
nXObject1 = fileNew1.Commit();
Part workPart = theSession.Parts.Work;
Part displayPart = theSession.Parts.Display;
theSession.DeleteUndoMark(markId2, null);
fileNew1.Destroy();
Для создания меню ввода параметров кривой используем встроенный инструмент NX “Разработчик блока UI”.
В разделе “Block Catalog” Вы можете найти раздел “Кол-во”.
Перетащите компонент “Двойной точности” на экран 5 раз подряд
В итоге у Вас должно получиться меню следующего вида:
Зайдите в Меню настроек и задайте имя и значение каждому блоку согласно таблице
Group |
Maximum Value |
Minimum Value |
Label |
Value |
Double0 |
100000 |
0 |
Ширина |
200 |
Double01 |
100000 |
0 |
Высота |
100 |
Double02 |
100000 |
0 |
Z гравировки |
0.1 |
Double03 |
100000 |
0 |
t max |
3600 |
Double04 |
100000 |
0 |
Delta t |
1 |
Переключение между блоками осуществляется в меню “Блоки”
Задайте имя «Меню кривой» для Вашей формы.
Далее перейдите в раздел «Генерация кода» и правой кнопкой мыши переключите язык программирования на «C#»
В результате Вы должны получить следующую форму
Сохраните меню в папку с Вашим проектом с именем «Curve».
Автоматически создадуться файлы «Curve.cs» и «Curve.dlx». Файл «Curve.dlx» всегда должен сопровождать сборку проекта.
Теперь Вам необходимо добавить меню в проект. Для этого правой кнопкой мыш щелкните по проекту и выберите пункт «Existing Item». Найдите файл «Curve.cs» и добавте его в проект.
Для построения линий в NX используется следующий код:
UFCurve.Line line1 = new UFCurve.Line(); // объвление и инициализация экземпляра линии;
line1.start_point = new double[3]; // инициализация начальной точки линии;
line1.end_point = new double[3]; // инициализация конечной точки линии;
//начальные координаты линии;
line1.start_point[0] = 1;
line1.start_point[1] = 1;
line1.start_point[2] = 1;
//конечные координаты линии;
line1.end_point[0] = 2;
line1.end_point[0] = 2;
line1.end_point[0] = 2;
Tag[] objarray1 = new Tag[7];
//создание линии
theUfSession.Curve.CreateLine(ref line1, out objarray1[0]);
Теперь в классе Program (файл «Program.cs») необходимо создать статический метод «RunAlgorithm»:
//объвление функции
static public void RunAlgorithm(double W, double H, double Z_eng, double t_max, double delta_t)
{
double t = 0;
// объвление экземпляра линии
UFCurve.Line line1 = new UFCurve.Line();
line1.start_point = new double[3];
line1.end_point = new double[3];
// формулы нахождения начальной точки линии для X,Y,Z координат
line1.start_point[0] = (W / 3.4) * (Math.Sin(0.99 * t) - 0.7 * Math.Cos(3.01 * t));
line1.start_point[1] = (W / 2.2) * (Math.Cos(1.01 * t) - 0.1 * Math.Cos(15.03 * t));
line1.start_point[2] = 0.0;
Tag[] objarray1 = new Tag[7];
//Цикл для создания последовательности линий согласно уравнению кривой
for (t = delta_t; t < t_max; t = t + delta_t)
{
// формулы нахождения конечных точек линии
line1.end_point[0] = (W / 3.4) * (Math.Sin(0.99 * (t * Math.PI / 180)) - 0.7 * Math.Cos(3.01 * (t * Math.PI / 180)));
line1.end_point[1] = (W / 2.2) * (Math.Sin(1.01 * (t * Math.PI / 180)) - 0.1 * Math.Cos(15.03 * (t * Math.PI / 180)));
line1.end_point[2] = 0.0;
// создание линии
theUfSession.Curve.CreateLine(ref line1, out objarray1[0]);
// присваение значений координат конечной точки текущей линии начальной точке следующей линии.
line1.start_point[0] = line1.end_point[0];
line1.start_point[1] = line1.end_point[1];
line1.start_point[2] = line1.end_point[2];
}
}
Далее необходимо создать вызов метода «RunAlgorithm» из созданного Вами меню в NX “Разработчик блока UI”. Для этого зайдите в файл «Curve.cs» Вашего проекта. Найдите констрруктор «Curve()» и измените строку
theDialogName = "Curve.dlx";
на
theDialogName = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\\Curve.dlx";
Данное дествие позволит Вам производить поиск меню «Curve.dlx» в директории запуска сборки программы.
Теперь найдите метод «ok_cb()», который будет вызывается при нажатии кнопки «ОК» в созданном Вами меню, и добвте код вызова метода «RunAlgorithm».
Program.RunAlgorithm(Convert.ToDouble(double0.GetProperties().GetDouble("Value")),
Convert.ToDouble(double01.GetProperties().GetDouble("Value")),
Convert.ToDouble(double02.GetProperties().GetDouble("Value")),
Convert.ToDouble(double03.GetProperties().GetDouble("Value")),
Convert.ToDouble(double04.GetProperties().GetDouble("Value")));
Вызов меню будет осуществлять из файла Program.cs. Вернитесь в метод Main() и удалите строку вывода первого сообщения.
UI.GetUI().NXMessageBox.Show("Message",XMessageBox.DialogType.Information, " NXOpen/API");
Вместо нее ведите строку создания экземпляра Вашего меню.
Curve newobject = new Curve();
newobject.Show();
Теперь запустите сборку проекта (F6) в Visual Studio 2008. Скопируйте файл «Curve.dlx» в сборку проекта (Выбранный ранее путь «D:\NXProject\».)
Запустите проект в NX сочетанеием клавиш «Ctrl+U», вызвав Ваш «.dll»-файл сборки проекта.
Должно выйти меню ввода параметров:
Нажмите «Ок». На экране должна появиться кривая
Индивидуальное задание:
Задайте собственное уравнение построения кривой и отобразите ее в CAD-системе NX