Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторная работа №1

.docx
Скачиваний:
70
Добавлен:
23.03.2016
Размер:
4.2 Mб
Скачать

Лабораторная работа №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 необходимо выполнить следующую инструкцию:

  1. Открыть папку “vs_files”, которая находится в папке установленного NX. По умолчанию путь к ней: C:\Program Files\UGS\NX7.5\UGOPEN\vs_files

  2. Скопировать содержимое папки “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), прежде чем кривая замкнется, а полученная «осциллограмма» напоминает сеть, наброшенную на некий трехмерный объект.

Алгоритм работы приложения по построению параметрической кривой:

  1. Запрос параметров кривой (габариты прямоугольной области, в которую будет вписана кривая, глубина гравировки, максимальное значение параметра!);

  2. Вывод на экран габаритного прямоугольника и изменение масштаба изображения (Fit);

  3. Расчет в цикле с заданным шагом по параметру 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