Рис. 4.3. Вид 1 крышки для фильтра
Рис. 4.4. Вид 2 крышки для фильтра
Tag UFPart1;
string name1 = "Krishka"; int units1 = 1;
theUfSession.Part.New(name1, units1, out UFPart1);
double[] l1_endpt1 = { 0, 0, 0.00 }; double[] l1_endpt2 = { 40, 0, 0.00 };
double[] l2_endpt1 = l1_endpt2; double[] l2_endpt2 = { 40, 5, 0.00 };
65
double[] l3_endpt1 = l2_endpt2; double[] l3_endpt2 = { 45, 5, 0.00 };
double[] l4_endpt1 = l3_endpt2; double[] l4_endpt2 = { 45, 10, 0.00 };
double[] l5_endpt1 = l4_endpt2; double[] l5_endpt2 = { 0, 10, 0.00 };
double[] l6_endpt1 = l5_endpt2; double[] l6_endpt2 = { 0, 0, 0.00 };
UFCurve.Line line1 = new UFCurve.Line(); UFCurve.Line line2 = new UFCurve.Line(); 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];
66
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]; 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]);
67
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);
////////////////////////
// Создание фаски
Tag feat = features1[0];
Tag cyl_tag, obj_id_camf, blend1; Tag[] Edge_array_cyl, list1, list2;
//из массива тэгов features1 выбирается нулевой тэг, который //записывается в переменную feat, теперь в переменной feat //находится тэг нулевого тела детали
int ecount;
//блок, который анализирует ребра рассматриваемой детали 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 arr_list1 = new ArrayList(); ArrayList arr_list2 = new ArrayList();
68
//цикл повторяется количество раз, равное числу ребер //рассматриваемого тела
for (int ii = 0; ii < ecount; ii++)
{
Tag edge;
theUfSession.Modl.AskListItem(Edge_array_cyl, ii, out edge); //выбирает из массива ребер каждое отдельное ребро с //порядковым номером в массиве ii
if ((ii == 2 ))
{
arr_list1.Add(edge); //ребро добавляется в arr_list1 (то есть
//на нем будет создана фаска
}
}
//конвертирование типов данных
list1 = (Tag[])arr_list1.ToArray(typeof(Tag)); list2 = (Tag[])arr_list2.ToArray(typeof(Tag));
//параметры, задающие операцию "фаска" string offset1 = "1";
string offset2 = "1"; string ang = "45";
theUfSession.Modl.CreateChamfer(3, offset1, offset2, ang, list1, out obj_id_camf); //операция "фаска"
double[] l13_endpt1 = { 0, -55, 0.00 }; double[] l13_endpt2 = { 10, -55, 0.00 };
double[] l14_endpt1 = l13_endpt2; double[] l14_endpt2 = { 10, 40, 0.00 };
double[] l15_endpt1 = l14_endpt2; double[] l15_endpt2 = { 0, 40, 0.00 };
double[] l16_endpt1 = l15_endpt2; double[] l16_endpt2 = { 0, -55, 0.00 };
69