public int Execute() { Tag UFPart; string part_name = "EX_Curve_CreateArc"; int units = 2; string name; theUfSession.Part.New(part_name, units, out UFPart); theUfSession.Part.AskPartName(UFPart, out name); w.WriteLine("Loaded: " + name); Tag arc, wcs; UFCurve.Arc arc_coords = new UFCurve.Arc(); /* Fill out the data structure */ arc_coords.start_angle = 0.0; arc_coords.end_angle = 3.0; arc_coords.arc_center = new double[3]; arc_coords.arc_center[0] = 0.0; arc_coords.arc_center[1] = 0.0; arc_coords.arc_center[2] = 1.0; arc_coords.radius = 2.0; theUfSession.Csys.AskWcs(out wcs); theUfSession.Csys.AskMatrixOfObject(wcs, out arc_coords.matrix_tag); theUfSession.Curve.CreateArc(ref arc_coords, out arc); theUfSession.Part.Save(); return(0); }
//------------------------------------------------------------------------// // Convierte la entidad <Circle> de is2Graph a su tipo equivalente de NX. /// <summary> /// /// </summary> /// <param name="C"></param> /// <returns></returns> public static UFCurve.Arc ToNx(CircleType C) { UFCurve.Arc nxC = new UFCurve.Arc(); nxC.start_angle = 0.0; nxC.end_angle = 2 * Math.PI; nxC.arc_center = ToNx(C.Center); nxC.radius = C.Radius; return(nxC); }
public Tag DrawArc(double startAngle, double endAngle, Point center, double radius) { UFCurve.Arc arc = new UFCurve.Arc(); Tag wcs_tag, matrix_tag; arc.start_angle = startAngle; arc.end_angle = endAngle; arc.arc_center = center.ToArray(); arc.radius = radius; theSession.Csys.AskWcs(out wcs_tag); theSession.Csys.AskMatrixOfObject(wcs_tag, out matrix_tag); arc.matrix_tag = matrix_tag; Tag sketchPart; theSession.Curve.CreateArc(ref arc, out sketchPart); return(sketchPart); }
public Tag DrawArcRotY(double startAngle, double endAngle, Point center, double radius, double angle) { UFCurve.Arc arc = new UFCurve.Arc(); double[] matrix = new double[9]; double[] rotAxis = new double[3] { 0.0, 1.0, 0.0 }; theSession.Mtx3.RotateAboutAxis(rotAxis, angle, matrix); arc.arc_center = new double[3]; theSession.Mtx3.VecMultiply(center.ToArray(), matrix, arc.arc_center); theSession.Csys.CreateMatrix(matrix, out arc.matrix_tag); arc.start_angle = startAngle; arc.end_angle = endAngle; arc.radius = radius; Tag sketchPart; theSession.Curve.CreateArc(ref arc, out sketchPart); return(sketchPart); }
public int Execute() { Tag UFPart; string part_name = "EX_Modl_CreateExtruded"; int units = 2; string name; theUfSession.Part.New(part_name, units, out UFPart); theUfSession.Part.AskPartName(UFPart, out name); w.WriteLine("Loaded: " + name); double[] l1_endpt1 = { -1.4476606170268, 2.3788333712953, 0.0 }; double[] l1_endpt2 = { 1.5471310496399, 2.2539419253757, 0.0 }; double[] l2_endpt1 = { -1.4476606170268, 1.2548103580189, 0.0 }; double[] l2_endpt2 = { 1.5471310496399, 1.3797018039385, 0.0 }; double[] l3_endpt1 = { -1.4710981170268, 1.8168218646571, 0.0 }; double[] l3_endpt2 = { 1.5289018829732, 1.8168218646571, 0.0 }; double[] direction = { 0.0, 0.0, 1.0 }; double[] ref_pt = new double[3]; double arc1_start_ang = (PI / 180) * 87.611984536731; double arc1_end_ang = (PI / 180) * 272.38801546327; double arc1_rad = 0.5625; double arc2_start_ang = (PI / 180) * 272.38801546327; double arc2_end_ang = (PI / 180) * 447.61198453673; double arc2_rad = 0.4375; string taper_angle = "0.0"; string[] limit1 = { "1.0", "1.25" }; int i, count = 4; Tag[] objarray = new Tag[5]; Tag wcs_tag, matrix_tag; Tag[] loop_list, features; UFCurve.Line line1 = new UFCurve.Line(); UFCurve.Line line2 = new UFCurve.Line(); UFCurve.Line line3 = new UFCurve.Line(); UFCurve.Arc arc1 = new UFCurve.Arc(); UFCurve.Arc arc2 = new UFCurve.Arc(); 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]; arc1.start_angle = arc1_start_ang; arc1.end_angle = arc1_end_ang; arc1.arc_center = new double[3]; arc1.arc_center[0] = l3_endpt1[0]; arc1.arc_center[1] = l3_endpt1[1]; arc1.arc_center[2] = l3_endpt1[2]; arc1.radius = arc1_rad; arc2.start_angle = arc2_start_ang; arc2.end_angle = arc2_end_ang; arc2.arc_center = new double[3]; arc2.arc_center[0] = l3_endpt2[0]; arc2.arc_center[1] = l3_endpt2[1]; arc2.arc_center[2] = l3_endpt2[2]; arc2.radius = arc2_rad; theUfSession.Curve.CreateLine(ref line1, out objarray[0]); theUfSession.Curve.CreateLine(ref line2, out objarray[1]); theUfSession.Curve.CreateLine(ref line3, out objarray[4]); theUfSession.Csys.AskWcs(out wcs_tag); theUfSession.Csys.AskMatrixOfObject(wcs_tag, out matrix_tag); arc1.matrix_tag = matrix_tag; arc2.matrix_tag = matrix_tag; theUfSession.Curve.CreateArc(ref arc1, out objarray[2]); theUfSession.Curve.CreateArc(ref arc2, out objarray[3]); //Create loop list ArrayList arr_loop_list = new ArrayList(); for (i = 0; i < count; i++) { arr_loop_list.Add(objarray[i]); } loop_list = (Tag [])arr_loop_list.ToArray(typeof(Tag)); // while sending parameters to this function the order was // loop_list, taper_angle, limit1, ref_pt, FeatureSigns.Nullsign, direction, out features // as above .. there were some compilation problem due to function prototype match. // Atul changed the order as follows in order to compile it successfully. // loop_list, taper_angle, limit1, ref_pt, direction, FeatureSigns.Nullsign, out features theUfSession.Modl.CreateExtruded(loop_list, taper_angle, limit1, ref_pt, direction, FeatureSigns.Nullsign, out features); theUfSession.Part.Save(); return(0); }
public int Execute() { Tag part; string part_name = "EX_Curve_CreateFillet"; int units = 2; string name; theUfSession.Part.New(part_name, units, out part); theUfSession.Part.AskPartName(part, out name); w.WriteLine("Loaded: " + name); double[] center = new double[3]; double radius; int[] trim_opts = new int[3]; int[] arc_opts = { 0, 0, 0 }; UFCurve.Line line_coords1 = new UFCurve.Line(); line_coords1.start_point = new double[3]; line_coords1.start_point[0] = 1.2; line_coords1.start_point[1] = 0.2; line_coords1.start_point[2] = 0.0; line_coords1.end_point = new double[3]; line_coords1.end_point[0] = -0.5; line_coords1.end_point[1] = 2.5; line_coords1.end_point[2] = 0.0; UFCurve.Line line_coords2 = new UFCurve.Line(); line_coords2.start_point = new double[3]; line_coords2.start_point[0] = 3.2; line_coords2.start_point[1] = 2.25; line_coords2.start_point[2] = 0.0; line_coords2.end_point = new double[3]; line_coords2.end_point[0] = 2.5; line_coords2.end_point[1] = 3.5; line_coords2.end_point[2] = 0.0; UFCurve.Arc arc_coords1 = new UFCurve.Arc(); arc_coords1.matrix_tag = Tag.Null; arc_coords1.start_angle = 238 * DEGRA; arc_coords1.end_angle = 357 * DEGRA; arc_coords1.arc_center = new double[3]; arc_coords1.arc_center[0] = 0.22; arc_coords1.arc_center[1] = 4.3; arc_coords1.arc_center[2] = 0.0; arc_coords1.radius = 2.0; UFCurve.Arc arc_coords2 = new UFCurve.Arc(); arc_coords2.matrix_tag = Tag.Null; arc_coords2.start_angle = 82 * DEGRA; arc_coords2.end_angle = 175 * DEGRA; arc_coords2.arc_center = new double[3]; arc_coords2.arc_center[0] = 3.0; arc_coords2.arc_center[1] = 0.43; arc_coords2.arc_center[2] = 0.0; arc_coords2.radius = 2.0; Tag line1, line2, arc1, arc2; Tag[] curve_objs = new Tag[3]; Tag fillet_obj1, fillet_obj2, wcs_tag, matrix_tag; /* create 2 lines */ theUfSession.Curve.CreateLine(ref line_coords1, out line1); theUfSession.Curve.CreateLine(ref line_coords2, out line2); /* create 2 arcs */ theUfSession.Csys.AskWcs(out wcs_tag); theUfSession.Csys.AskMatrixOfObject(wcs_tag, out matrix_tag); arc_coords1.matrix_tag = matrix_tag; arc_coords2.matrix_tag = matrix_tag; theUfSession.Curve.CreateArc(ref arc_coords1, out arc1); theUfSession.Curve.CreateArc(ref arc_coords2, out arc2); /*create fillet between "arc1" and "line1"*/ curve_objs[0] = arc1; curve_objs[1] = line1; center[0] = 0.0; center[1] = 2.1; center[2] = 0.0; radius = .25; trim_opts[0] = 1; /*trim first UFCurve*/ trim_opts[1] = 1; /*trim second UFCurve*/ theUfSession.Curve.CreateFillet(UF_CURVE_2_CURVE, curve_objs, center, radius, trim_opts, arc_opts, out fillet_obj1); /*create fillet between "line1" and "arc2"*/ curve_objs[0] = line1; curve_objs[1] = arc2; center[0] = 0.8; center[1] = 1.0; center[2] = 0.0; radius = .25; trim_opts[0] = 1; /*trim first UFCurve*/ trim_opts[1] = 1; /*trim second UFCurve*/ theUfSession.Curve.CreateFillet(UF_CURVE_2_CURVE, curve_objs, center, radius, trim_opts, arc_opts, out fillet_obj2); theUfSession.Part.Save(); return(0); }
//------------------------------------------------------------------------// // Convierte la entidad Circle de ACAD a la entidad homologa de is2Graph. /// <summary> /// /// </summary> /// <param name="C"></param> /// <returns></returns> public static CircleType Tois2Graph(UFCurve.Arc C) { return(new CircleType(Tois2Graph(C.arc_center), C.radius)); }
public static int Main(String[] args) { int retValue = 0; theForm = new Form(); theForm.Show(); Tag UFPart1; string name1 = "model_4k_1"; int units1 = 1; try { theUfSession = UFSession.GetUFSession(); //Session theUfSession = Session.GetSession(); theUfSession.Part.New(name1, units1, out UFPart1); double[] l1_endpt1 = { 0, 2.5, 0.00 }; double[] l1_endpt2 = { 200, 2.5, 0.00 }; double[] l2_endpt1 = { 200, 2.5, 0.00 }; double[] l2_endpt2 = { 200, 30.5, 0.00 }; double[] l3_endpt1 = { 200, 30.5, 0.00 }; double[] l3_endpt2 = { 0, 30.5, 0.00 }; double[] l4_endpt1 = { 0, 30.5, 0.00 }; double[] l4_endpt2 = { 0, 2.5, 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(); 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]; 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]); double[] ref_pt1 = new double[3]; ref_pt1[0] = 0.00; ref_pt1[1] = 0.00; ref_pt1[2] = 0.00; double[] direction1 = { 1.00, 0.00, 0.00 }; string[] limit1 = { "0", "360" }; Tag[] features1; theUfSession.Modl.CreateRevolved(objarray1, limit1, ref_pt1, direction1, FeatureSigns.Nullsign, out features1); //выдавливание double[] direction4 = { 0.0, 0.0, 1.0 }; //Переменная задающая значения направления выдавливания ось CZ double[] ref_pt4 = new double[3]; //Требуемая, но не используемая переменная string taper_angle4 = "0.0"; //Переменная, определяющая значение уклона при выдавливании string[] limit4 = { "-10", "3" }; int i4, count4 = 6; // Переменная счетчик и число объектов в эскизе Tag[] objarray4 = new Tag[7]; // Массив объектов из 7 элементов. Заполняется указателями на элементы эскиза выдавливания при их построении(линии и дуги) Tag wcs_tag1, matrix_tag1, wcs_tag2, matrix_tag2, wcs_tag3, matrix_tag3, wcs_tag4, matrix_tag4; //Переменные wcs_tag1 – для записи указателя на текущую систему координат; matrix_tag1 – для записи идентификатора матрицысвязанного с объектом и т.д. Tag[] features4; //features4 – переменная для записи указателя на объект, получившийся в результате операции выдавливания double[] arc1_centerpt1 = { 35, -50, 30.5 }; //Переменная содержащая значения координат центра дуги 1{x,y,z} double arc1_start_ang1 = 0; //Переменная содержащая значение угла начала дуги 1 (в радианах) double arc1_end_ang1 = 3.14159265358979324 * 2; //Переменная содержащая значение угла конца дуги 1 (в радианах) double arc1_rad1 = 5; //Переменная содержащая значение радиуса дуги 1 (в радианах) UFCurve.Arc arc1 = new UFCurve.Arc(); //Создание структуры NX соответствующей дуге 1 //Установка параметров дуги 1 arc1.start_angle = arc1_start_ang1; //Начальный угол arc1.end_angle = arc1_end_ang1; //Конечный угол arc1.arc_center = new double[3]; //Центр дуги 1 arc1.arc_center[0] = arc1_centerpt1[0]; //Координата центра дуги 1 по X arc1.arc_center[1] = arc1_centerpt1[1]; //Координата центра дуги 1 по Y arc1.arc_center[2] = arc1_centerpt1[2]; //Координата центра дуги 1 по Z arc1.radius = arc1_rad1; //Радиус дуги 1 theUfSession.Csys.AskWcs(out wcs_tag1); //Получения указателя на активную систему координат theUfSession.Csys.AskMatrixOfObject(wcs_tag1, out matrix_tag1); //Получение идентификатора матрицы, связанного с объектом,указатель на который содержится в wcs_tag1 arc1.matrix_tag = matrix_tag1; //Определение указателя матрицы дуги 1 /*----------------------------------------------------------*/ /***********************Аналогично дуге 1********************/ double[] arc2_centerpt2 = { 35, 50, 30.5 }; double arc2_start_ang2 = 0; double arc2_end_ang2 = 3.14159265358979324 * 2; double arc2_rad2 = 5; UFCurve.Arc arc2 = new UFCurve.Arc(); arc2.start_angle = arc2_start_ang2; arc2.end_angle = arc2_end_ang2; arc2.arc_center = new double[3]; arc2.arc_center[0] = arc2_centerpt2[0]; arc2.arc_center[1] = arc2_centerpt2[1]; arc2.arc_center[2] = arc2_centerpt2[2]; arc2.radius = arc2_rad2; theUfSession.Csys.AskWcs(out wcs_tag2); theUfSession.Csys.AskMatrixOfObject(wcs_tag2, out matrix_tag2); arc2.matrix_tag = matrix_tag2; /*----------------------------------------------------------*/ /***********************Аналогично дуге 1********************/ double[] arc3_centerpt3 = { 35, -50, 30.5 }; double arc3_start_ang3 = -3.14159265358979324; double arc3_end_ang3 = 0; double arc3_rad3 = 15; UFCurve.Arc arc3 = new UFCurve.Arc(); arc3.start_angle = arc3_start_ang3; arc3.end_angle = arc3_end_ang3; arc3.arc_center = new double[3]; arc3.arc_center[0] = arc3_centerpt3[0]; arc3.arc_center[1] = arc3_centerpt3[1]; arc3.arc_center[2] = arc3_centerpt3[2]; arc3.radius = arc3_rad3; theUfSession.Csys.AskWcs(out wcs_tag3); theUfSession.Csys.AskMatrixOfObject(wcs_tag3, out matrix_tag3); arc3.matrix_tag = matrix_tag3; /*----------------------------------------------------------*/ /***********************Аналогично дуге 1********************/ double[] arc4_centerpt4 = { 35, 50, 30.5 }; double arc4_start_ang4 = 0; double arc4_end_ang4 = 3.14159265358979324; double arc4_rad4 = 15; UFCurve.Arc arc4 = new UFCurve.Arc(); arc4.start_angle = arc4_start_ang4; arc4.end_angle = arc4_end_ang4; arc4.arc_center = new double[3]; arc4.arc_center[0] = arc4_centerpt4[0]; arc4.arc_center[1] = arc4_centerpt4[1]; arc4.arc_center[2] = arc4_centerpt4[2]; arc4.radius = arc4_rad4; theUfSession.Csys.AskWcs(out wcs_tag4); theUfSession.Csys.AskMatrixOfObject(wcs_tag4, out matrix_tag4); arc4.matrix_tag = matrix_tag4; /*----------------------------------------------------------*/ //Определение переменных содержащих координаты начальной и конечной точек отрезков 1 и 2 double[] l1_endpt1_1 = { 20, -50, 30.5 }; //Координаты начальной точки отрезка 1 double[] l1_endpt2_1 = { 20, 50, 30.5 }; //Координаты конечной точки отрезка 1 double[] l2_endpt1_1 = { 50, 50, 30.5 }; //Координаты начальной точки отрезка 2 double[] l2_endpt2_1 = { 50, -50, 30.5 }; //Координаты конечной точки отрезка 2 UFCurve.Line line1_1 = new UFCurve.Line(); //Создание переменной объекта отрезок 1 UFCurve.Line line2_1 = new UFCurve.Line(); //Создание переменной объекта отрезок 2 //Задание параметров отрезков line1_1.start_point = new double[3]; line1_1.start_point[0] = l1_endpt1_1[0]; //Координата Х начальной точки отрезка 1 line1_1.start_point[1] = l1_endpt1_1[1]; //Координата Y начальной точки отрезка 1 line1_1.start_point[2] = l1_endpt1_1[2]; //Координата Z начальной точки отрезка 1 line1_1.end_point = new double[3]; line1_1.end_point[0] = l1_endpt2_1[0]; //Координата Х конечной точки отрезка 1 line1_1.end_point[1] = l1_endpt2_1[1]; //Координата Y конечной точки отрезка 1 line1_1.end_point[2] = l1_endpt2_1[2]; //Координата Z конечной точки отрезка 1 line2_1.start_point = new double[3]; line2_1.start_point[0] = l2_endpt1_1[0]; //Координата Х начальной точки отрезка 2 line2_1.start_point[1] = l2_endpt1_1[1]; //Координата Y начальной точки отрезка 2 line2_1.start_point[2] = l2_endpt1_1[2]; //Координата Z начальной точки отрезка 2 line2_1.end_point = new double[3]; line2_1.end_point[0] = l2_endpt2_1[0]; //Координата Х конечной точки отрезка 2 line2_1.end_point[1] = l2_endpt2_1[1]; //Координата Y конечной точки отрезка 2 line2_1.end_point[2] = l2_endpt2_1[2]; //Координата Z конечной точки отрезка 2 theUfSession.Curve.CreateArc(ref arc1 /*объект дуга 1*/, out objarray4[0] /*указатель на созданный объект дуга 1 – 0-й элемент * * массива объектов выдавливания*/); //Построение дуги 1 theUfSession.Curve.CreateLine(ref line1_1, out objarray4[1]); //Построение отрезка 1 theUfSession.Curve.CreateLine(ref line2_1, out objarray4[2]); //Построение отрезка 2 theUfSession.Curve.CreateArc(ref arc2, out objarray4[3]); //Построение дуги 2 theUfSession.Curve.CreateArc(ref arc3, out objarray4[4]); //Построение дуги 3 theUfSession.Curve.CreateArc(ref arc4, out objarray4[5]); //Построение дуги 4 //Создание операции выдавливания theUfSession.Modl.CreateExtruded( objarray4 /*Массив объектов выдавливания*/, taper_angle4 /*Угол уклона*/, limit4 /*Начало и конец выдавливания*/, ref_pt4 /*Пустой параметр*/, direction4 /*Направление выдавливания*/, FeatureSigns.Positive /*Буревая операция (ОБЕДИНЕНИЕ)*/, out features4 /*Выходной параметр - указатель на результат * * операции*/); //вторая опора double[] direction5 = { 0.0, 0.0, 1.0 }; //Переменная задающая значения направления выдавливания ось CZ double[] ref_pt5 = new double[3]; //Требуемая, но не используемая переменная string taper_angle5 = "0.0"; //Переменная, определяющая значение уклона при выдавливании string[] limit5 = { "-10", "3" }; int i5, count5 = 6; // Переменная счетчик и число объектов в эскизе Tag[] objarray5 = new Tag[7]; // Массив объектов из 7 элементов. Заполняется указателями на элементы эскиза выдавливания при их построении(линии и дуги) Tag wcs_tag1_1, matrix_tag1_1, wcs_tag2_1, matrix_tag2_1, wcs_tag3_1, matrix_tag3_1, wcs_tag4_1, matrix_tag4_1; //Переменные wcs_tag1 – для записи указателя на текущую систему координат; matrix_tag1 – для записи идентификатора матрицысвязанного с объектом и т.д. Tag[] features5; //features4 – переменная для записи указателя на объект, получившийся в результате операции выдавливания double[] arc1_centerpt1_1 = { 165, -50, 30.5 }; //Переменная содержащая значения координат центра дуги 1{x,y,z} double arc1_start_ang1_1 = 0; //Переменная содержащая значение угла начала дуги 1 (в радианах) double arc1_end_ang1_1 = 3.14159265358979324 * 2; //Переменная содержащая значение угла конца дуги 1 (в радианах) double arc1_rad1_1 = 5; //Переменная содержащая значение радиуса дуги 1 (в радианах) UFCurve.Arc arc1_1 = new UFCurve.Arc(); //Создание структуры NX соответствующей дуге 1 //Установка параметров дуги 1 arc1_1.start_angle = arc1_start_ang1_1; //Начальный угол arc1_1.end_angle = arc1_end_ang1_1; //Конечный угол arc1_1.arc_center = new double[3]; //Центр дуги 1 arc1_1.arc_center[0] = arc1_centerpt1_1[0]; //Координата центра дуги 1 по X arc1_1.arc_center[1] = arc1_centerpt1_1[1]; //Координата центра дуги 1 по Y arc1_1.arc_center[2] = arc1_centerpt1_1[2]; //Координата центра дуги 1 по Z arc1_1.radius = arc1_rad1_1; //Радиус дуги 1 theUfSession.Csys.AskWcs(out wcs_tag1_1); //Получения указателя на активную систему координат theUfSession.Csys.AskMatrixOfObject(wcs_tag1_1, out matrix_tag1_1); //Получение идентификатора матрицы, связанного с объектом,указатель на который содержится в wcs_tag1 arc1_1.matrix_tag = matrix_tag1_1; //Определение указателя матрицы дуги 1 /*----------------------------------------------------------*/ /***********************Аналогично дуге 1********************/ double[] arc2_centerpt2_1 = { 165, 50, 30.5 }; double arc2_start_ang2_1 = 0; double arc2_end_ang2_1 = 3.14159265358979324 * 2; double arc2_rad2_1 = 5; UFCurve.Arc arc2_1 = new UFCurve.Arc(); arc2_1.start_angle = arc2_start_ang2_1; arc2_1.end_angle = arc2_end_ang2_1; arc2_1.arc_center = new double[3]; arc2_1.arc_center[0] = arc2_centerpt2_1[0]; arc2_1.arc_center[1] = arc2_centerpt2_1[1]; arc2_1.arc_center[2] = arc2_centerpt2_1[2]; arc2_1.radius = arc2_rad2_1; theUfSession.Csys.AskWcs(out wcs_tag2_1); theUfSession.Csys.AskMatrixOfObject(wcs_tag2_1, out matrix_tag2_1); arc2_1.matrix_tag = matrix_tag2_1; /*----------------------------------------------------------*/ /***********************Аналогично дуге 1********************/ double[] arc3_centerpt3_1 = { 165, -50, 30.5 }; double arc3_start_ang3_1 = -3.14159265358979324; double arc3_end_ang3_1 = 0; double arc3_rad3_1 = 15; UFCurve.Arc arc3_1 = new UFCurve.Arc(); arc3_1.start_angle = arc3_start_ang3_1; arc3_1.end_angle = arc3_end_ang3_1; arc3_1.arc_center = new double[3]; arc3_1.arc_center[0] = arc3_centerpt3_1[0]; arc3_1.arc_center[1] = arc3_centerpt3_1[1]; arc3_1.arc_center[2] = arc3_centerpt3_1[2]; arc3_1.radius = arc3_rad3_1; theUfSession.Csys.AskWcs(out wcs_tag3_1); theUfSession.Csys.AskMatrixOfObject(wcs_tag3_1, out matrix_tag3_1); arc3_1.matrix_tag = matrix_tag3_1; /*----------------------------------------------------------*/ /***********************Аналогично дуге 1********************/ double[] arc4_centerpt4_1 = { 165, 50, 30.5 }; double arc4_start_ang4_1 = 0; double arc4_end_ang4_1 = 3.14159265358979324; double arc4_rad4_1 = 15; UFCurve.Arc arc4_1 = new UFCurve.Arc(); arc4_1.start_angle = arc4_start_ang4_1; arc4_1.end_angle = arc4_end_ang4_1; arc4_1.arc_center = new double[3]; arc4_1.arc_center[0] = arc4_centerpt4_1[0]; arc4_1.arc_center[1] = arc4_centerpt4_1[1]; arc4_1.arc_center[2] = arc4_centerpt4_1[2]; arc4_1.radius = arc4_rad4_1; theUfSession.Csys.AskWcs(out wcs_tag4_1); theUfSession.Csys.AskMatrixOfObject(wcs_tag4_1, out matrix_tag4_1); arc4_1.matrix_tag = matrix_tag4_1; /*----------------------------------------------------------*/ //Определение переменных содержащих координаты начальной и конечной точек отрезков 1 и 2 double[] l1_endpt1_12 = { 150, -50, 30.5 }; //Координаты начальной точки отрезка 1 double[] l1_endpt2_12 = { 150, 50, 30.5 }; //Координаты конечной точки отрезка 1 double[] l2_endpt1_12 = { 180, 50, 30.5 }; //Координаты начальной точки отрезка 2 double[] l2_endpt2_12 = { 180, -50, 30.5 }; //Координаты конечной точки отрезка 2 UFCurve.Line line1_12 = new UFCurve.Line(); //Создание переменной объекта отрезок 1 UFCurve.Line line2_12 = new UFCurve.Line(); //Создание переменной объекта отрезок 2 //Задание параметров отрезков line1_12.start_point = new double[3]; line1_12.start_point[0] = l1_endpt1_12[0]; //Координата Х начальной точки отрезка 1 line1_12.start_point[1] = l1_endpt1_12[1]; //Координата Y начальной точки отрезка 1 line1_12.start_point[2] = l1_endpt1_12[2]; //Координата Z начальной точки отрезка 1 line1_12.end_point = new double[3]; line1_12.end_point[0] = l1_endpt2_12[0]; //Координата Х конечной точки отрезка 1 line1_12.end_point[1] = l1_endpt2_12[1]; //Координата Y конечной точки отрезка 1 line1_12.end_point[2] = l1_endpt2_12[2]; //Координата Z конечной точки отрезка 1 line2_12.start_point = new double[3]; line2_12.start_point[0] = l2_endpt1_12[0]; //Координата Х начальной точки отрезка 2 line2_12.start_point[1] = l2_endpt1_12[1]; //Координата Y начальной точки отрезка 2 line2_12.start_point[2] = l2_endpt1_12[2]; //Координата Z начальной точки отрезка 2 line2_12.end_point = new double[3]; line2_12.end_point[0] = l2_endpt2_12[0]; //Координата Х конечной точки отрезка 2 line2_12.end_point[1] = l2_endpt2_12[1]; //Координата Y конечной точки отрезка 2 line2_12.end_point[2] = l2_endpt2_12[2]; //Координата Z конечной точки отрезка 2 theUfSession.Curve.CreateArc(ref arc1_1 /*объект дуга 1*/, out objarray5[0] /*указатель на созданный объект дуга 1 – 0-й элемент * * массива объектов выдавливания*/); //Построение дуги 1 theUfSession.Curve.CreateLine(ref line1_12, out objarray5[1]); //Построение отрезка 1 theUfSession.Curve.CreateLine(ref line2_12, out objarray5[2]); //Построение отрезка 2 theUfSession.Curve.CreateArc(ref arc2_1, out objarray5[3]); //Построение дуги 2 theUfSession.Curve.CreateArc(ref arc3_1, out objarray5[4]); //Построение дуги 3 theUfSession.Curve.CreateArc(ref arc4_1, out objarray5[5]); //Построение дуги 4 //Создание операции выдавливания theUfSession.Modl.CreateExtruded( objarray5 /*Массив объектов выдавливания*/, taper_angle5 /*Угол уклона*/, limit5 /*Начало и конец выдавливания*/, ref_pt5 /*Пустой параметр*/, direction5 /*Направление выдавливания*/, FeatureSigns.Positive /*Буревая операция (ОБЕДИНЕНИЕ)*/, out features5 /*Выходной параметр - указатель на результат * * операции*/); theUfSession.Part.Save(); } catch (NXOpen.NXException ex) { } return(retValue); }
static void Main(string[] args) { Session theSession = (Session)Activator.GetObject(typeof(Session), "http://localhost:4567/NXOpenSession"); UFSession theUFSession = (UFSession)Activator.GetObject(typeof(UFSession), "http://localhost:4567/UFSession"); try { DoLog("working"); theSession.LogFile.WriteLine("\nITS WORKING\n"); // ---------------------------------------------- // Menu: File->New... // ---------------------------------------------- NXOpen.Session.UndoMarkId markId1; markId1 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Start"); FileNew fileNew1; fileNew1 = theSession.Parts.FileNew(); theSession.SetUndoMarkName(markId1, "'New Dialog"); NXOpen.Session.UndoMarkId markId2; markId2 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "New"); fileNew1.TemplateFileName = "model-plain-1-mm-template.prt"; fileNew1.Application = FileNewApplication.Modeling; fileNew1.Units = NXOpen.Part.Units.Millimeters; fileNew1.NewFileName = "RemotingTest"; fileNew1.MasterFileName = ""; fileNew1.UseBlankTemplate = false; fileNew1.MakeDisplayedPart = true; NXObject nXObject1; nXObject1 = fileNew1.Commit(); theSession.DeleteUndoMark(markId2, null); fileNew1.Destroy(); NXOpen.Session.UndoMarkId markId3; markId3 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Enter Modeling"); Part workPart = theSession.Parts.Work; Part displayPart = theSession.Parts.Display; // Create Line using NXOpen Jam APIs Point3d point3d1 = new Point3d(-2.45197396411307, 3.58206319143819, 0); Point3d point3d2 = new Point3d(5.32514590979158, -1.0012853802839, 0); Line line1 = theSession.Parts.Work.Curves.CreateLine(point3d1, point3d2); //Ask line data using wrapped NXOpen.UF API UFCurve.Line line_coords; theUFSession.Curve.AskLineData(line1.Tag, out line_coords); // Create Arc using wrapped NXOpen.UF APIs Tag arc, wcs; UFCurve.Arc arc_coords = new UFCurve.Arc(); // Fill out the data structure arc_coords.start_angle = 0.0; arc_coords.end_angle = 3.0; arc_coords.arc_center = new double[3]; arc_coords.arc_center[0] = 0.0; arc_coords.arc_center[1] = 0.0; arc_coords.arc_center[2] = 1.0; arc_coords.radius = 2.0; // Create a ARC using wrapped NXOpen.UF API theUFSession.Csys.AskWcs(out wcs); theUFSession.Csys.AskMatrixOfObject(wcs, out arc_coords.matrix_tag); theUFSession.Curve.CreateArc(ref arc_coords, out arc); } catch (NXException e) { DoLog("NX Exception is: {0} " + e.Message); } catch (Exception e) { DoLog("Exception is: {0} " + e.Message); } finally { DoLog("Done"); theSession.LogFile.WriteLine("DONE\n"); } }