Материал: Параметрическое моделирование с использованием NX API. учебно-метод. пособие. Барабанов В.Ф., Нужный А.М

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

имена, с которыми работает 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

Источник: https://studfile.net/preview/16563646/