1. Что такое тэг?
2. Как осуществляется работа с динамическими массивами в C#?
3. Назовите основные параметры операции “Вращение”?
4. Что такое булевы операции в 3D инженерной графике?
5. Какова функция вектора в операции “Вращение”?
Задание на лабораторную работу
Задание выдается преподавателем по вариантам.
Содержание отчета по лабораторной работе
1. Название и цель работы
2. Скриншоты с кратким описанием, соответствующие основным шагам выполненной работы
3. Скриншоты, демонстрирующие работоспосбоность созданной библиотеки
4. Листинг прграммы с комментариями на русском или английском языке
5. Скриншоты 3D модели, сформированной Вашей библиотекой
6. Выводы
Лабораторная работа №3
Создание фасок и скруглений с помощью соответствующих операций средствами NXOpen/API на примере крышки пневмоцилиндра
Цель работы: освоить методику создания скруглений и фасок на детали посредствам API функций NX.
Теоретическая часть
|
|
В данной лабораторной работе предлагается доработать деталь, представленную на рис. 2.1, до состояния детали, показанной на рис. 3. Для этого необходимо создать две фаски и скругление:
Внимание: теоретически имеется возможность создания фасок и скруглений в эскизе, что сокращает количество операций. Данный подход в корне неверен, так как значительно увеличивается потребление вычислительных ресурсов и снижается гибкость создаваемой модели. Поэтому фаски и скругления всегда следует создавать на твердом теле с помощью специализированных операций.
Рассмотренный далее программный код целесообразно разместить перед строкой, выполняющей сохранение детали.
Начальный блок программного кода отвечает за объявление переменных. Все типы представленных здесь переменных рассмотрены в предыдущей лабораторной работе.
Tag feat = features1[0];
Tag cyl_tag, obj_id_camf, blend1;
Tag[] Edge_array_cyl, list1, list2;
int ecount;
Интерес представляет первая трока. В ней из массива тэгов features1 выбирается нулевой тэг, который записывается в переменную feat, теперь в переменной feat находится тэг нулевого тела детали. В рассматриваемом случае он единственный. Однако возможности NX позволяют сохранять в оном файле детали несколько отдельных тел.
Далее следует блок, который анализирует ребра рассматриваемой детали.
theUfSession.Modl.AskFeatBody(feat, out cyl_tag);
theUfSession.Modl.AskBodyEdges(cyl_tag, out Edge_array_cyl);
theUfSession.Modl.AskListCount(Edge_array_cyl, out ecount);
Первая строка выделяет из тэга тела тэг объектов тела, который являются входными данными во второй строке. Выходными данными второй строки является массив тэгов ребер объекта, используемый в качестве аргумента в третьей строке. Выходной информацией третьей строки является количество объектов в массиве (в нашем случае число ребер детали).
|
|
Далее создаем два объекта типа ArrayList.
ArrayList arr_list1 = new ArrayList();
ArrayList arr_list2 = new ArrayList();
Первый объект в дальнейшем будет использован для сохранения в него ребер, на которых будут выполнены фаски, второй по аналогии используется для скругления.
Представленный ниже цикл повторяется количество раз, равное число ребер рассматриваемого тела.
for (int ii = 0; ii < ecount; ii++)
{
Tag edge;
theUfSession.Modl.AskListItem(Edge_array_cyl, ii, out edge);
if ((ii == 1) || (ii == 2))
{
arr_list1.Add(edge);
}
if (ii == 0)
{
arr_list2.Add(edge);
}
}
Вторая строка тела цикла выбирает из массива ребер каждое отдельное ребро с порядковым номером в массиве ii (номера ребер перебираются в цикле последовательно). Далее следуют две конструкции оператора if. При выполнении условия первого оператора выбранное на текущем шаге цикла ребро добавляется в arr_list1 (то есть на нем будет создана фаска). Второй оператор if аналогично реализует конструкцию формирования листа ребер для скруглений.
Последующие две строки текста осуществляют конвертирование типов данных.
list1 = (Tag[])arr_list1.ToArray(typeof(Tag));
list2 = (Tag[])arr_list2.ToArray(typeof(Tag));
Полученные переменные list1 и list 2 относятся к типу массив тэгов.
Далее следует фрагмент текста, в котором создается скругление и задается ряд его параметров.
int allow_smooth = 0;
int allow_cliff = 0;
int allow_notch = 0;
double vrb_tol = 0.0;
theUfSession.Modl.CreateBlend("3", list2, allow_smooth,
allow_cliff, allow_notch, vrb_tol, out blend1);
Аргументами для скругления являются:
1. “3” – радиус;
2. list2 – массив ребер, на которых необходимо выполнить скругление;
3. allow_smooth - Smooth overflow/prevent flag: 0 = Allow this type of blend; 1 = Prevent this type of blend;
4. allow_smooth - Cliffedge overflow/prevent flag: 0 = Allow this type of blend; 1 = Prevent this type of blend;
5. allow_notch - Notch overflow/prevent flag: 0 = Allow this type of blend; 1 = Prevent this type of blend;
6. vrb_tol - Variable radius blend tolerance.
Последующий текст содержит операцию “Фаска” и задает ее отдельные параметры.
string offset1 = "1";
string offset2 = "1";
string ang = "45";
theUfSession.Modl.CreateChamfer(3, offset1, offset2, ang,
list1, out obj_id_camf);
Аргументами для фаски являются:
1. 3 – тип входных данных (в данном случае по стороне и углу);
2. offset1 и offset2 – стороны фаски;
3. ang – угол фаски в градусах;
4. list1 – массив ребер, на которых необходимо выполнить фаски.
Практическая часть
Вопросы для самостоятельного контроля знаний
1. Что такое ребро, грань, поверхность?
2. Синтаксис оператора if в C#?
3. Какие способы задания фасок вы знаете?
Задание на лабораторную работу
Задание выдается преподавателем по вариантам.
Содержание отчета по лабораторной работе
1. Название и цель работы
2. Скриншоты с кратким описанием, соответствующие основным шагам выполненной работы
3. Скриншоты, демонстрирующие работоспосбоность созданной библиотеки
4. Листинг прграммы с комментариями на русском или английском языке
5. Скриншоты 3D модели, сформированной Вашей библиотекой
6. Выводы
Лабораторная работа №4
Создание детали с помощью операции “Выдавлвание” средствами NXOpen/API на примере корпуса пневмоцилиндра
Цель работы: Освоение методики построения операции выдавливания средствами NX Open API на примере цилиндра.
Теоретическая часть