имена, с которыми работает NX, должны быть выполнены исключительно латиницей. Для запуска библиотеки необходимо загрузить NX от имени администратора, после чего в главном меню выбрать последовательность команд «Файл – Выполнить – NX функция пользователя» или воспользоваться сочетанием клавиш Ctrl-U. В запустившемся диалоге открытия файла следует указать требуемую библиотеку и нажать ОК.
Результат выполнения созданной ранее библиотеки показан на рис. 1.4.
Рис. 1.4
Далее рассмотрим рисование 2D-фигуры «прямоугольник», состоящей из 4 отрезков, соединенных между собой. Необходимо открыть новый проект и создать отрезки.
//создание нового проекта
Tag UFPart1;
string name1 = "rect"; int units1 = 1;
15
theUfSession.Part.New(name1, units1, out UFPart1);
double[] l1_endpt1 = { 0, 0, 0.00 }; //начальная точка double[] l1_endpt2 = { -100, 0, 0.00 }; //конечная точка double[] l2_endpt1 = { -100, 0, 0.00 };
double[] l2_endpt2 = { -100, 30, 0.00 }; double[] l3_endpt1 = { -100, 30, 0.00 }; double[] l3_endpt2 = { 0, 30, 0.00 }; double[] l4_endpt1 = { 0, 30, 0.00 }; double[] l4_endpt2 = { 0, 0, 0.00 };
UFCurve.Line l1 = new UFCurve.Line();
UFCurve.Line l2 = new UFCurve.Line();
UFCurve.Line l3 = new UFCurve.Line();
UFCurve.Line l4 = new UFCurve.Line();
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]; l2.start_point = new double[3]; l2.start_point[0] = l2_endpt1[0]; l2.start_point[1] = l2_endpt1[1]; l2.start_point[2] = l2_endpt1[2]; l2.end_point = new double[3]; l2.end_point[0] = l2_endpt2[0]; l2.end_point[1] = l2_endpt2[1]; l2.end_point[2] = l2_endpt2[2]; l3.start_point = new double[3]; l3.start_point[0] = l3_endpt1[0]; l3.start_point[1] = l3_endpt1[1]; l3.start_point[2] = l3_endpt1[2];
16
l3.end_point = new double[3]; l3.end_point[0] = l3_endpt2[0]; l3.end_point[1] = l3_endpt2[1]; l3.end_point[2] = l3_endpt2[2]; l4.start_point = new double[3]; l4.start_point[0] = l4_endpt1[0]; l4.start_point[1] = l4_endpt1[1]; l4.start_point[2] = l4_endpt1[2]; l4.end_point = new double[3]; l4.end_point[0] = l4_endpt2[0]; l4.end_point[1] = l4_endpt2[1]; l4.end_point[2] = l4_endpt2[2];
Tag[] objarray1 = new Tag[4];
theUfSession.Curve.CreateLine(ref l1, out objarray1[0]); theUfSession.Curve.CreateLine(ref l2, out objarray1[1]); theUfSession.Curve.CreateLine(ref l3, out objarray1[2]); theUfSession.Curve.CreateLine(ref l4, out objarray1[3]);
Сохраним проект, откомпилируем его и запустим в NX. Результат выполнения приведен на рис. 1.5.
Рис. 1.5
17
Теперь освоим операцию «выдавливание» для создания параллелепипеда. Откроем уже созданный и сохраненный проект, в котором был построен прямоугольник. Внесем в него несколько изменений (представленный ниже код вставляется после создания прямоугольника).
double[] direction = { 0.0, 0.0, 1.0 };
//Переменная, задающая значения направления выдавливания //ось CZ
double[] ref_pt = new double[3]; //Требуемая, но не используемая переменная string taper_angle = "0.0";
//Переменная, определяющая значение уклона при //выдавливании
string[] limit = { "0", "80" };
//Переменная, определяющая параметры начала и конца //операции выдавливания
Tag[] f;
//f – переменная для записи указателя на объект, //получившийся в результате операции выдавливания theUfSession.Modl.CreateExtruded(objarray1, taper_angle, limit, ref_pt, direction, FeatureSigns.Nullsign, out f);
Параметры операции «Выдавливания»:
1.objarray - массив объектов выдавливания;
2.taper_angle - угол уклона;
3.limit – начало и конец выдавливания;
4.ref_pt – пустой параметр;
5.direction – направление выдавливания (ось x,y или
z);
6.FeatureSigns.Nullsign - задает булеву операцию, в
данном случае операция отсутствует;
7.f - выходной параметр - указатель на результат операции.
18
Результат выполнения приведен на рис. 1.6.
Рис. 1.6
Создадим примитив «дуга». Для этого в новый проект вставим код, представленный ниже.
//создание нового проекта
Tag UFPart1;
string name1 = "rect"; int units1 = 1;
theUfSession.Part.New(name1, units1, out UFPart1);
Tag[] objarray = new Tag[7];
Tag wcs, matrix;
double[] arc1_centerpt = { 0, 0, 0 };
//Переменная, содержащая значения координат центра дуги
{x,y,z}
double arc1_start_ang = 0;
//Переменная, содержащая значение угла начала дуги (в //радианах)
double arc1_end_ang = 3.14159265358979324 /*полуокружность*/; //Переменная, содержащая значение угла конца дуги (в //радианах)
double arc1_radius = 50;
//Переменная, содержащая значение радиуса дуги (в радианах) UFCurve.Arc arc1 = new UFCurve.Arc();
arc1.start_angle = arc1_start_ang;
19