3. ЛАБОРАТОРНАЯ РАБОТА № 3 СОЗДАНИЕ ПАРАМЕТРИЧЕСКИ ЗАДАННЫХ ОБЪЕКТОВ
Цель работы: научиться параметрически задавать параметры объектов, освоить операции «скругление» и «резьба».
3.1.Теоретическая часть
3.1.1.Общий вид и порядок построения детали
Вид с положением осей представлен на рис. 3.1.
Рис. 3.1. 3D-модель объекта
Пунктирная окружность синего цвета, изображенная с нижнего торца болта, является отображением резьбы.
Рис. 3.2. Форма задания параметров болта
40
После создания нового проекта в Visual Studio необходимо добавить в него форму. Для этого нужно в окне Solution Explorer правой кнопкой мыши щелкнуть по названию проекта и выполнить последовательность Add – WindowsForm.
После этого следует добавить на форму необходимые элементы управления из окна ToolBox (панель элементов, находится в левой части интегрированной среды разработки Visual Studio). Добавим три элемента textBox, которые используются для ввода данных, три элемента Label, и кнопку.
В основном файле проекта Programm.cs добавим пространство имен:
using System.Collections;
для использования объекта ArrayList.
Ниже добавим переменные, значения которых будут вводиться с формы.
public static double height;//Высота, мм public static double Radius;//радиус, мм public static double step;//шаг резьбы, мм
Так будет выглядеть начало файла Programm.cs: using System;
using NXOpen; using NXOpen.UF;
using System.Collections;
public class Program
{
// class members
private static Session theSession; private static UI theUI;
private static UFSession theUfSession; public static Program theProgram; public static bool isDisposeCalled;
41
public static double height;//Высота, мм public static double Radius;//радиус, мм public static double step;//шагрезьбы, мм
Дважды щелкнув по кнопке на форме, создастся код обработчика события нажатия на кнопку, в нем добавим следующий код:
namespace NX7_Open_CS_Wizard6
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Program.height = Convert.ToDouble(textBox1.Text); Program.Radius = Convert.ToDouble(textBox2.Text); Program.step = Convert.ToDouble(textBox3.Text); Close();
}
}
}
В файле Programm.cs, в процедуре Main, перед кодом, описывающим геометрические построения, необходимо задать команду открытия формы при запуске приложения:
NX7_Open_CS_Wizard6.Form1 f = new NX7_Open_CS_Wizard6.Form1(); f.ShowDialog();
(Обратите внимание на цифру в конце имени проекта, котрая должна соответствовать ввашему номеру проекта).
При открытии DLL файла в NX откроется форма, в которую необходимо ввести необходимые значения и нажать
42
на кнопку. Далее будут использоваться переменные height, Radius, stepсодержащие введенные значения.
Создадим четырехугольник из которого вращением будет создан цилиндр (рис. 3.3).
//создание нового проекта
Tag UFPart1;
string name1 = "bolt"; int units1 = 1;
theUfSession.Part.New(name1, units1, out UFPart1);
UFCurve.Line segment0 = new UFCurve.Line();
UFCurve.Line segment1 = new UFCurve.Line();
UFCurve.Line segment2 = new UFCurve.Line();
UFCurve.Line segment3 = new UFCurve.Line();
segment0.start_point = new double[3]; segment0.start_point[0] = 0.00; segment0.start_point[1] = 0.00; segment0.start_point[2] = 0.00; segment0.end_point = new double[3]; segment0.end_point[0] = 0.00; segment0.end_point[1] = 0.00; segment0.end_point[2] = height;
segment1.start_point = new double[3]; segment1.start_point[0] = 0.00; segment1.start_point[1] = 0.00; segment1.start_point[2] = height; segment1.end_point = new double[3]; segment1.end_point[0] = Radius; segment1.end_point[1] = 0.00; segment1.end_point[2] = height;
segment2.start_point = new double[3]; segment2.start_point[0] = Radius; segment2.start_point[1] = 0.00;
43
segment2.start_point[2] = height; segment2.end_point = new double[3]; segment2.end_point[0] = Radius; segment2.end_point[1] = 0.00; segment2.end_point[2] = 0.00;
segment3.start_point = new double[3]; segment3.start_point[0] = Radius; segment3.start_point[1] = 0.00; segment3.start_point[2] = 0.00; segment3.end_point = new double[3]; segment3.end_point[0] = 0.00; segment3.end_point[1] = 0.00; segment3.end_point[2] = 0.00;
Tag[] BoltArray = new Tag[5]; theUfSession.Curve.CreateLine(ref segment0, out BoltArray[0]); theUfSession.Curve.CreateLine(ref segment1, out BoltArray[1]); theUfSession.Curve.CreateLine(ref segment2, out BoltArray[2]); theUfSession.Curve.CreateLine(ref segment3, out BoltArray[3]); 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, 0.00, 1.00 }; string[] limit1 = { "0", "360" };
Tag[] features1; theUfSession.Modl.CreateRevolved(BoltArray, limit1, ref_pt1, direction1, FeatureSigns.Nullsign, out features1);
44