4. ЛАБОРАТОРНАЯ РАБОТА № 4 СОЗДАНИЕ СБОРКИ КОНСТРУКЦИИ
ИЗ ОТДЕЛЬНЫХ ДЕТАЛЕЙ
Цель работы: освоение методики размещения моделей деталей в абсолютной системе координат пространства сборочной модели, освоение операции «фаска».
4.1.Теоретическая часть
Вданной лабораторной работе предлагается выполнить сборочную модель фильтра, представленную на рис. 4.1. Таким образом, деталь приобретает конечный вид.
Рис. 4.1. Сборочная модель фильтра
Приведем подробное описание программной реализации построения сборочной 3D-модели.
Модель состоит из трех деталей (корпус, крышка, фильтрующий элемент), каждая из которых оформляется как отдельный документ. На завершающем этапе производится сборка всех деталей в одно изделие. Все детали на момент осуществления сборки, могут быть сохранены в файлы на диске или быть представленными в виде открытых проектов.
В начале программы создадим новую модель - корпус для фильтра, которая представлена на рис. 4.2.
55
Рис. 4.2. Корпус для фильтра
Tag UFPart1;
string name1 = "Korpus"; int units1 = 1;
theUfSession.Part.New(name1, units1, out UFPart1);
double[] l1_endpt1 = { 0, 0, 0.00 }; double[] l1_endpt2 = { 32.5, 0, 0.00 };
double[] l2_endpt1 = { 32.5, 0, 0.00 }; double[] l2_endpt2 = { 32.5, 170, 0.00 };
double[] l3_endpt1 = { 32.5, 170, 0.00 }; double[] l3_endpt2 = { 45, 185, 0.00 };
double[] l4_endpt1 = { 45, 185, 0.00 }; double[] l4_endpt2 = { 45, 225, 0.00 };
double[] l5_endpt1 = { 45, 225, 0.00 }; double[] l5_endpt2 = { 0, 225, 0.00 };
double[] l6_endpt1 = { 0, 225, 0.00 }; double[] l6_endpt2 = { 0, 0, 0.00 };
UFCurve.Line line1 = new UFCurve.Line(); UFCurve.Line line2 = new UFCurve.Line();
56
UFCurve.Line line3 = new UFCurve.Line(); UFCurve.Line line4 = new UFCurve.Line(); UFCurve.Line line5 = new UFCurve.Line(); UFCurve.Line line6 = 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];
57
line4.end_point[2] = l4_endpt2[2]; line5.start_point = new double[3]; line5.start_point[0] = l5_endpt1[0]; line5.start_point[1] = l5_endpt1[1]; line5.start_point[2] = l5_endpt1[2]; line5.end_point = new double[3]; line5.end_point[0] = l5_endpt2[0]; line5.end_point[1] = l5_endpt2[1]; line5.end_point[2] = l5_endpt2[2]; line6.start_point = new double[3]; line6.start_point[0] = l6_endpt1[0]; line6.start_point[1] = l6_endpt1[1]; line6.start_point[2] = l6_endpt1[2]; line6.end_point = new double[3]; line6.end_point[0] = l6_endpt2[0]; line6.end_point[1] = l6_endpt2[1]; line6.end_point[2] = l6_endpt2[2];
Tag[] objarray1 = new Tag[7]; theUfSession.Curve.CreateLine(ref line1, out objarray1[0]); theUfSession.Curve.CreateLine(ref line2, out objarray1[1]); theUfSession.Curve.CreateLine(ref line3, out objarray1[2]); theUfSession.Curve.CreateLine(ref line4, out objarray1[3]); theUfSession.Curve.CreateLine(ref line5, out objarray1[4]); theUfSession.Curve.CreateLine(ref line6, out objarray1[5]);
double[] ref_pt1 = new double[3]; ref_pt1[0] = 0.00;
ref_pt1[1] = 0.00; ref_pt1[2] = 0.00;
double[] direction1 = { 0.00, 1.00, 0.00 }; string[] limit1 = { "0", "360" };
Tag[] features1;
theUfSession.Modl.CreateRevolved(objarray1, limit1, ref_pt1, direction1, FeatureSigns.Nullsign, out features1);
58
///////////////////////////////////////////
double[] l13_endpt1 = { -70, 205, 0.00 }; double[] l13_endpt2 = { -20, 205, 0.00 };
double[] l14_endpt1 = l13_endpt2; double[] l14_endpt2 = { -20, 215, 0.00 };
double[] l15_endpt1 = l14_endpt2; double[] l15_endpt2 = { -70, 215, 0.00 };
double[] l16_endpt1 = l15_endpt2; double[] l16_endpt2 = { -70, 205, 0.00 };
UFCurve.Line line13 = new UFCurve.Line(); UFCurve.Line line14 = new UFCurve.Line(); UFCurve.Line line15 = new UFCurve.Line(); UFCurve.Line line16 = new UFCurve.Line();
line13.start_point = new double[3]; line13.start_point[0] = l13_endpt1[0]; line13.start_point[1] = l13_endpt1[1]; line13.start_point[2] = l13_endpt1[2]; line13.end_point = new double[3]; line13.end_point[0] = l13_endpt2[0]; line13.end_point[1] = l13_endpt2[1]; line13.end_point[2] = l13_endpt2[2]; line14.start_point = new double[3]; line14.start_point[0] = l14_endpt1[0]; line14.start_point[1] = l14_endpt1[1]; line14.start_point[2] = l14_endpt1[2]; line14.end_point = new double[3]; line14.end_point[0] = l14_endpt2[0]; line14.end_point[1] = l14_endpt2[1]; line14.end_point[2] = l14_endpt2[2]; line15.start_point = new double[3];
59