Завершающим элементом построения детали цилиндр, является поверхность, образованная путем вычитания элемента вращения, образующего центральное отверстие цилиндра под поршень.
Эскиз элемента вращения представлен на рисунке 5.1.
Рисунок 5.1 – Эскиз операции «Вырезания»
В данном случае, эскиз и сама операция, создается аналогично представленной выше функции построения детали «Корпус» (см. ЛР №4), с одним основным отличием в параметре, определяющем вид булевой операции при вызове функции вращения эскиза.
theUFSession.Modl.CreateRevolved(loop_list6, limit6, ref_pt6, direction6, FeatureSigns.Negative, out features6);
При этом параметр FeatureSigns функции CreateRevolved должен быть определен как Negativ (вычитание), а не Nullsign (операция отсутствует).
Рассмотрим подробно программную реализацию этой функции.
{//Переменная задающая значения направления выдавливания ось CX
double[] direction6 = { 1.00, 0.00, 0.00 };
//Задание координат начальной точки вращения
double[] ref_pt6 = new double[3];
ref_pt6[0] = 0.00;
ref_pt6[1] = 0.00;
ref_pt6[2] = 0.00;
//Задание пределов вращения
|
|
string[] limit6 = { "0", "360" };
//объявление массива объектов вращения
Tag[] objarray6 = new Tag[5];
//Объявление и определение переменны содержащих координаты точек отрезков эскиза
double[] l1_endpt1 = { 5, 0, 0.00 };
double[] l1_endpt2 = { 200, 0, 0.00 };
double[] l2_endpt1 = { 200, 0, 0.00 };
double[] l2_endpt2 = { 200, 22.85, 0.00 };
double[] l3_endpt1 = { 200, 22.85, 0.00 };
double[] l3_endpt2 = { 20, 22.85, 0.00 };
double[] l4_endpt1 = { 20, 22.85, 0.00 };
double[] l4_endpt2 = { 5, 0, 0.00 };
// Переменная для записи указателя на объект, получившийся в результате операции вырезания вращением
Tag[] features6;
//Создание структур NX соответствующих отрезкам эскиза
UFCurve.Line line1 = new UFCurve.Line();
UFCurve.Line line2 = new UFCurve.Line();
UFCurve.Line line3 = new UFCurve.Line();
UFCurve.Line line4 = new UFCurve.Line();
//-----------Задаются конечные точки отрезков----------------
line1.start_point = new double[3];
line1.start_point[0] = l1_endpt1[0];
line1.start_point[1] = l1_endpt1[1];
line1.start_point[2] = l1_endpt1[2];
line1.end_point = new double[3];
line1.end_point[0] = l1_endpt2[0];
line1.end_point[1] = l1_endpt2[1];
line1.end_point[2] = l1_endpt2[2];
line2.start_point = new double[3];
line2.start_point[0] = l2_endpt1[0];
line2.start_point[1] = l2_endpt1[1];
line2.start_point[2] = l2_endpt1[2];
line2.end_point = new double[3];
line2.end_point[0] = l2_endpt2[0];
line2.end_point[1] = l2_endpt2[1];
line2.end_point[2] = l2_endpt2[2];
line3.start_point = new double[3];
line3.start_point[0] = l3_endpt1[0];
line3.start_point[1] = l3_endpt1[1];
line3.start_point[2] = l3_endpt1[2];
line3.end_point = new double[3];
line3.end_point[0] = l3_endpt2[0];
line3.end_point[1] = l3_endpt2[1];
line3.end_point[2] = l3_endpt2[2];
line4.start_point = new double[3];
line4.start_point[0] = l4_endpt1[0];
line4.start_point[1] = l4_endpt1[1];
line4.start_point[2] = l4_endpt1[2];
line4.end_point = new double[3];
line4.end_point[0] = l4_endpt2[0];
line4.end_point[1] = l4_endpt2[1];
line4.end_point[2] = l4_endpt2[2];
//---------------------------------------------------
//Построение отрезков в 3D пространстве
|
|
theUFSession.Curve.CreateLine(ref line1, out objarray6[0]);
theUFSession.Curve.CreateLine(ref line2, out objarray6[1]);
theUFSession.Curve.CreateLine(ref line3, out objarray6[2]);
theUFSession.Curve.CreateLine(ref line4, out objarray6[3]);
//Создание операции вырезания вращением
theUFSession.Modl.CreateRevolved(objarray6, limit6, ref_pt6, direction6, FeatureSigns.Negative, out features6);
}
Практическая часть
Вопросы для самоконтроля
1) Чем определяется операция вырезание в NX?
2) Какое необходимое и достаточное количество переменных следует задать для создания операции вырезания вращением?
3) Какова функция начальной точки в операции “Вырезание вращением”?
4) Что содержит переменная, в которую записывается выходной параметр операции вырезания вращением?
Задания для выполнения лабораторной работы
Задание выдается преподавателем по вариантам.