//Начальный угол arc1.end_angle = arc1_end_ang; //Конечныйугол arc1.arc_center = new double[3]; //Центр дуги 1
arc1.arc_center[0] = arc1_centerpt[0]; //Координата центра дуги по X arc1.arc_center[1] = arc1_centerpt[1]; //Координата центра дуги по Y arc1.arc_center[2] = arc1_centerpt[2]; //Координата центра дуги по Z arc1.radius = arc1_radius; //радиусдуги
theUfSession.Csys.AskWcs(out wcs);
//Получение указателя на активную систему координат theUfSession.Csys.AskMatrixOfObject(wcs, out matrix); //Получение идентификатора матрицы, связанного с объектом, //указатель на который содержится в wcs
arc1.matrix_tag = matrix; //Определение указателя матрицы дуги
theUfSession.Curve.CreateArc(ref arc1, out objarray[0]); //рисование дуги
Результат выполенения программы представлен на рис. 1.7.
Рис. 1.7
20
Для того, чтобы нарисовать примитив «шар», необходимо к уже созданной дуге (полуокружности) применить операцию «вращение».
double[] ref_pt = new double[3]; ref_pt[0] = 0.00;
ref_pt[1] = 0.00; ref_pt[2] = 0.00;
double[] direction = { 1.00, 0.00, 0.00 }; string[] limit = { "0", "360" };
Tag[] f;
theUfSession.Modl.CreateRevolved(objarray, limit, ref_pt, direction, FeatureSigns.Nullsign, out f);
Строки 1 – 4 создают массив из 3 вещественных чисел и заполняют его нулями. В дальнейшем он будет использоваться для задания точки с нулевыми координатами, относительно которой будет осуществляться вращение. direction – аналогичный массив из трех элементов. В данной программе он отвечает за вектор (точнее его конечную точку), относительно которого осуществляется вращение. Начало вектора находится в начале координат. Переменная limit – массив строкового типа, в который заносится начальный и конечный угол для операции вращения, f – массив тэгов, выходной информации для операции «вращение». Последняя строка отвечает за операцию «вращение».
Аргументами данной операции являются:
1.objarray – массив элементов эскиза операции;
2.limit – начальный и конечный угол вращения;
3.ref_pt – базовая точка;
4.direction – вектор, относительно которого осуществляется вращение;
5.FeatureSigns.Nullsign – задает булеву операцию, в
данном случае операция отсутствует.
6.f – массив тэгов, выходная информация
21
Результат выполнения операции представлен на рис. 1.8.
Рис. 1.8
Для сохранения детали можно использовать: theUfSession.Part.Save(); - сохраняет деталь в файл с
именем, заданным переменной name1, по умолчанию путь к сохраненному файлу находится по адресу: C:\ProgramFiles\UGS\NX7.5\UGII.
Теперь освоим методику построения цилиндра с помощью операции «выдавливания». Для этого необходимо создать новый проект и нарисовать окружность.
//создание нового проекта
Tag UFPart1;
string name1 = "rect"; int units1 = 1;
theUfSession.Part.New(name1, units1, out UFPart1);
Tag[] objarray = new Tag[7];
Tag wcs, matrix;
double[] arc1_centerpt = { 0, 0, 0 };
22
//Переменная, содержащая значения координат центра дуги
//{x,y,z}
double arc1_start_ang = 0;
//Переменная, содержащая значение угла начала дуги (в //радианах)
Double arc1_end_ang = 3.14159265358979324*2/*окружность*/; //Переменная, //содержащая значение угла конца дуги (в радианах) double arc1_radius = 50;
//Переменная, содержащая значение радиуса дуги (в радианах) UFCurve.Arc arc1 = new UFCurve.Arc();
arc1.start_angle = arc1_start_ang; //Начальный угол arc1.end_angle = arc1_end_ang; //Конечный угол arc1.arc_center = new double[3]; //Центрдуги 1
arc1.arc_center[0] = arc1_centerpt[0]; //Координата центра дуги по X arc1.arc_center[1] = arc1_centerpt[1]; //Координата центра дуги по Y arc1.arc_center[2] = arc1_centerpt[2]; //Координата центра дуги по Z arc1.radius = arc1_radius;
//радиус дуги
theUfSession.Csys.AskWcs(out wcs);
//Получения указателя на активную систему координат theUfSession.Csys.AskMatrixOfObject(wcs, out matrix); //Получение идентификатора матрицы, связанного с объектом, //указатель на который содержится в wcs
arc1.matrix_tag = matrix; //Определение указателя матрицы дуги
theUfSession.Curve.CreateArc(ref arc1, out objarray[0]); //рисование дуги
23
Рис. 1.9
Применим к созданной окружности уже знакомую операцию «выдавливания»:
double[] direction = { 0.0, 0.0, 1.0 };
//Переменная, задающая значения направления выдавливания //ось CZ
double[] ref_pt = new double[3]; //Требуемая, но не используемая переменная string taper_angle = "0.0";
//Переменная, определяющая значение уклона при //выдавливании
string[] limit = { "0", "80" };
//Переменная, определяющая параметры начала и конца //операции выдавливания
Tag[] f;
//f – переменная для записи указателя на объект, //получившийся в результате операции выдавливания theUfSession.Modl.CreateExtruded(objarray, taper_angle, limit, ref_pt, direction, FeatureSigns.Nullsign, out f);
Результат представлен на рисунке 10.
24