Рис. 1.1. Мастер создания проекта
Воткрывшемся окне нажмем кнопку Next. В следующем окне (рис. 1.2) выбираем тип создаваемого приложения и типы используемых API. Выберем «An internal application that can be activated from an NX session» (DLL), что соответствует созданию прикладной подпрограммы в виде динамической библиотеки. В пункте «UseAPIs» установим галочки напротив двух предлагаемых вариантов и нажмем кнопку Next.
Воткрывшемся окне (рис. 1.3) выберем опции загрузки
ивыгрузки разрабатываемой библиотеки. Выберем в качестве опции загрузки «Explicitly (Main)». В качестве опции выгрузки выберем «Automatically, when the application completes». В данном случае библиотека будет выгружена вместе с NX. Другие варианты позволяют выгружать библиотеку после завершения ее работы или через специальный диалог.
После завершения настройки нажмем кнопку Finish, после чего откроется окно написания программного кода.
10
Рис. 1.2. Выбор типа создаваемого приложения и типа используемых API
Рис. 1.3. Настройка загрузки и выгрузки библиотеки
11
В Visual Studio найдите процедуру Main, являющуюся точкой входа запускаемого приложения: //-----------------------------------------------------------
//Explicit Activation
//This entry point is used to activate the application explicitly //-----------------------------------------------------------
public static int Main(string[] args)
{
intretValue = 0; try
{
theProgram = new Program(); //TODO: Add your application code here theProgram.Dispose();
}
catch(NXOpen.NXExceptionex)
{
// ---- Enter your exception handling code here -
}
Return retValue;
}
Вместо строки «//TODO: Add your application code here»
вводится программный код вашего приложения.
Приступим к созданию примитива «отрезок». Рассматриваемая библиотека начинается со следующей конструкции:
Tag UFPart1; String name1 = "1"; Int units1 = 1;
theUfSession.Part.New(name1, units1, out UFPart1);
Первые три строки текста применяются для описания переменных. В данном контексте переменная UFPart1 является деталью (создается новый проект), ее тип задается как тэг (типовой объект NX). name1 - строковая переменная, которая задает имя файла детали. units1 – переменная
12
целочисленного типа, определяющая тип системы мер (1 – метрическая система, 2 – английская). Четвертая строка отвечает за создание новой детали. Переменные name1 и units1 для нее являются входными, а UFPart1 выходными данными.
В последующем блоке описываются 2 однотипные переменные, соответствующие конечным точкам отрезка. double[] l1_endpt1 = { 0, 0, 0.00 };
double[] l1_endpt2 = { -100, 0, 0.00 };
Тип переменных – массив вещественных чисел. Заполнение массивов осуществляется тройками чисел, являющимися координатами точек в 3D пространстве; координаты указываются в порядке X, Y, Z. Так как эскиз плоский, координата по третьей оси (Z) постоянна (в данном случае равна 0).
Последующий блок создает новую структуру. UFCurve.Line l1 = new UFCurve.Line();
Структура l1 относится к специальному типу NX, соответствующему такому объекту, как отрезок. В последующем фрагменте программного кода задаются конечные точки отрезка.
l1.start_point = new double[3]; l1.start_point[0] = l1_endpt1[0]; l1.start_point[1] = l1_endpt1[1]; l1.start_point[2] = l1_endpt1[2]; l1.end_point = new double[3]; l1.end_point[0] = l1_endpt2[0]; l1.end_point[1] = l1_endpt2[1]; l1.end_point[2] = l1_endpt2[2];
Первая строка создает массивы вещественных чисел, в которые будут записываться тройки координат точек отрезка. Строки 2 – 4 задают координаты по X, Y, Z начальных точек отрезков. Строки 6 – 8 задают конечные точки отрезков.
13
Текст, приведенный ниже, отвечает за создание отрезка в 3D-пространстве.
Tag[] objarray = new Tag[1]; theUfSession.Curve.CreateLine(ref l1, out objarray[0]);
Первая строка создает переменную objarray, представляющую собой массив тэгов. Каждая последующая строка создает отрезок в 3D-пространстве с последующим его отображением на экране. В качестве входных данных используются координаты конечных точек отрезка. Выходная информация, представляющая тэг каждого отрезка, записывается поэлементно в массив objarray.
Для сохранения результатов построений можно использовать команду:
theUfSession.Part.Save(); - сохраняет деталь в файл с именем, заданным переменной name1, по умолчанию путь к сохраненному файлу находится по адресу: C:\ProgramFiles\UGS\NX7.5\UGII. При сохранении файла может потребоваться его ручное удаление при повторных запусках библиотеки.
Далее необходимо откомпилировать проект. Для этого можно воспользоваться клавишей F6. Если все сделано верно, в окне ошибок и предупреждений будет выведено сообщение об отсутствии ошибок. Могут присутствовать предупреждения, не препятствующие нормальной работе приложения, однако рекомендуется тщательно с ними ознакомиться и по возможности их устранить. Результатом компиляции является файл с расширением .dll и именем, заданным при создании проекта. Файл размещается в каталоге «Debug», расположенном в папке «Bin».
Пример пути: C:\Projects\NX7_Open_CS_Wizard1\NX7_Open_CS_Wizard1\bi n\Debug.
Внимание: NX 7.5 не поддерживает работу с кириллическими файловыми именами, поэтому все пути и
14