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);
/////////////////////////////////////////////////////
double[] l11_endpt1 = { 0, 2.5, 0.00 }; double[] l11_endpt2 = { 20, 2.5, 0.00 }; double[] l21_endpt1 = l11_endpt2; double[] l21_endpt2 = { 20, 157.5, 0.00 }; double[] l31_endpt1 = l21_endpt2; double[] l31_endpt2 = { 0, 157.5, 0.00 }; double[] l41_endpt1 = l31_endpt2; double[] l41_endpt2 = { 0, 2.5, 0.00 };
UFCurve.Line line11 = new UFCurve.Line(); UFCurve.Line line21 = new UFCurve.Line(); UFCurve.Line line31 = new UFCurve.Line(); UFCurve.Line line41 = new UFCurve.Line();
line11.start_point = new double[3]; line11.start_point[0] = l11_endpt1[0]; line11.start_point[1] = l11_endpt1[1]; line11.start_point[2] = l11_endpt1[2]; line11.end_point = new double[3]; line11.end_point[0] = l11_endpt2[0]; line11.end_point[1] = l11_endpt2[1]; line11.end_point[2] = l11_endpt2[2]; line21.start_point = new double[3]; line21.start_point[0] = l21_endpt1[0];
75
line21.start_point[1] = l21_endpt1[1]; line21.start_point[2] = l21_endpt1[2]; line21.end_point = new double[3]; line21.end_point[0] = l21_endpt2[0]; line21.end_point[1] = l21_endpt2[1]; line21.end_point[2] = l21_endpt2[2]; line31.start_point = new double[3]; line31.start_point[0] = l31_endpt1[0]; line31.start_point[1] = l31_endpt1[1]; line31.start_point[2] = l31_endpt1[2]; line31.end_point = new double[3]; line31.end_point[0] = l31_endpt2[0]; line31.end_point[1] = l31_endpt2[1]; line31.end_point[2] = l31_endpt2[2]; line41.start_point = new double[3]; line41.start_point[0] = l41_endpt1[0]; line41.start_point[1] = l41_endpt1[1]; line41.start_point[2] = l41_endpt1[2]; line41.end_point = new double[3]; line41.end_point[0] = l41_endpt2[0]; line41.end_point[1] = l41_endpt2[1]; line41.end_point[2] = l41_endpt2[2];
Tag[] objarray2 = new Tag[7]; theUfSession.Curve.CreateLine(ref line11, out objarray2[0]); theUfSession.Curve.CreateLine(ref line21, out objarray2[1]); theUfSession.Curve.CreateLine(ref line31, out objarray2[2]); theUfSession.Curve.CreateLine(ref line41, out objarray2[3]); theUfSession.Modl.CreateRevolved(objarray2, limit1, ref_pt1, direction1, FeatureSigns.Negative, out features1);
Для создания сборки необходимо создать новый проект и разместить в нем код, указанный ниже.
Tag UFPart;
string name1 = "Filter"; int units = 1;
76
theUfSession.Part.New(name1, units, out UFPart); /*В переменную parent_part, записывается результат
возвращаемый функцией AskDisplayPart. В свою очередь данная функция возвращает tag текущей модели. Для не сборочной модели это рабочая модель. Если в настоящее время нет рабочей модели, то возвращается NULL_TAG. */ Tag parent_part = theUfSession.Part.AskDisplayPart(); //переменные error_status, в которые будет записываться //статус загрузки моделей
UFPart.LoadStatus error_status, error_status2, error_status3; //объявление переменных в которые происходит запись tag-а //нового объекта модели
Tag instance, instance1, instance2;
/*Объявление и запись значений в переменные. Переменные origin содержат позиции каждой из моделей в родительской сборочной модели.
Переменные matrix определяют ориентацию каждой из моделей в системе координат родительской сборочной модели.*/
double[] origin1 = { 0, 220, 0 }; double[] matrix1 = { 1, 0, 0, 0, 1, 0 }; double[] origin2 = { 0, 0, 0 }; double[] matrix2 = { 1, 0, 0, 0, 1, 0 }; double[] origin3 = { 0, 7.5, 0 }; double[] matrix3 = { 1, 0, 0, 0, 1, 0 };
//поочередное добавление моделей деталей фильтра, которые //входят в сборочную модель конструкции
/*Структура параметров функции AddPartToAssembly:
1)parent_part – tag модели для добавления деталей;
2)part – имя добавляемой модели;
3)refset_name – наименование множества частей модели для добавления;
77
4)instance_name - Name of new instance;
5)origin [ 3 ] – позиция в родительской модели;
6)csys_matrix [ 6 ] – ориентация в родительской модели;
7)layer – слой (0) – текущий слой;
8)instance – tag новой детали в сборке;
9)error_status – статус ошибки добавления.
*/
theUfSession.Assem.AddPartToAssembly(parent_part, "Krishka", null, null, origin1, matrix1, 0, out instance, out error_status);
theUfSession.Assem.AddPartToAssembly(parent_part, "Korpus", null, null, origin2, matrix2, 0, out instance1, out error_status2);
theUfSession.Assem.AddPartToAssembly(parent_part, "cylindr", null, null, origin3, matrix3, 0, out instance2, out error_status3);
4.2.Практическая часть
4.2.1.Задание на лабораторную работу
Задание выдается преподавателем по вариантам. Пример вариантов.
Пример 1. В лабораторной работе предлагается
выполнить сборочную модель штампа для жидкой штамповки, представленную на рис. 4.6.
Рис. 4.6. Сборочная модель штампа для жидкой штамповки
78
Пример 2. В лабораторной работе предлагается выполнить сборочную модель пневмогидравлического клапана, представленную на рис. 4.7.
Рис. 4.7. Сборочная модель пневмогидравлического клапана
4.2.2. Содержание отчета по лабораторной работе
1.Название и цель работы.
2.Скриншоты с кратким описанием, соответствующие основным шагам выполненной работы.
3.Скриншоты, демонстрирующие работоспосбоность созданной библиотеки.
4.Листинг прграммы с комментариями.
5.Скриншоты 3D-модели, сформированной Вашей библиотекой.
6.Выводы.
79