8 - 2014

Создание пользовательских прикладных подпрограмм для NX 8.5 с помощью Open API на примере библиотеки проектирования 3D-моделей колодок ГОСТ 12198-66

Иван Еремин
Аспирант кафедры компьютерных интеллектуальных технологий проектирования ВГТУ (Воронежский государственный технический университет). Ведущий инженер департамента продаж и технического сопровождения САПР, CSoft Воронеж

Введение

NX Siemens — одна из самых популярных CAD/CAM/CAE­систем. NX является мощным инструментом для проектирования трехмерных моделей и сборок, инженерного анализа механических систем, написания управляющих программ для станков с ЧПУ. Каждое предприятие сталкивается со специфическими задачами при проектировании изделий, поэтому почти во всех САПР присутствует механизм, с помощью которого пользователь может разрабатывать собственные встраиваемые в систему прикладные программные модули, решающие специализированные отраслевые задачи. К таким механизмам в NX относятся программирование с применением Open API NX [1].

NX Open API — это набор инструментов и технологий, посредством которых внешнее приложение может получить доступ к возможностям NX. NX Open API позволяет программным способом на основании рассчитанных параметров проектировать детали и сборки, а также выпускать документацию. Практически все возможности NX доступны с помощью NX Open API, однако имеется целый класс объектов, создание которых возможно только программным способом [1].

Использование функциональности Open API открывает перед пользователем расширенные возможности автоматизации моделирования и обработки 2D­ и 3D­объектов благодаря набору библиотек и подпрограмм, позволяющих внешнему (независимому) или внутреннему (интегрированному) приложению создавать модели в NX и получать доступ к их объектам для совершения различных операций [2].

Постановка технической задачи

На производстве перед конструктором часто возникает задача разработки ряда однотипных изделий, которые различаются только размерами (линейными или угловыми) или отдельными конструктивными элементами, при этом основа конструкции остается неизменной (например, колодки, подшипники, валы). Для автоматизации данного процесса создается математическая параметрическая модель класса конструктивно однородных изделий, на основании которой осуществляется формирование геометрической модели в соответствии с задаваемыми размерными параметрами.

При использовании прикладных библиотек конструктор запускает программу, рассчитанную на определенный класс изделий, и вводит требуемые размеры или выбирает необходимые параметры из базы данных. Программа создает 3D­модель детали, а конструктор оценивает ее и при необходимости вносит необходимые коррективы.

Разработка прикладной библиотеки для NX 8.5 на примере библиотеки проектирования колодок ГОСТ 12198­66

Для создания пользовательского приложения NX Open применяется среда разработки приложений Microsoft Visual Studio 2010. Для разработки приложений под NX 8.5 необходимо использовать .NET Framework 4. Обычно внутреннее приложение NX Open представляет собой построенную по определенным правилам динамическую библиотеку DLL, подгружаемую к процессу NX. Кроме того, имеется возможность создания внешнего приложения NX Open — обычного приложения Windows [1].

Создадим прикладную библиотеку, которая решает задачу построения 3D­модели колодок ГОСТ 12198­66. Сценарий работы модуля таков:

  1. Пользователь запускает NX 8.5, затем вызывает загрузки пользовательских подпрограмм с помощью сочетания клавиш Ctrl+U, в появившемся окне выбирает нужную библиотеку.
  2. Запускается главное интерфейсное окно программы (рис. 1).
  3. В окне пользователь должен указать в базе данных конкретную колодку с требуемыми размерами или самому ввести размеры колодки.
  4. Нажатием кнопки Построить получаем 3D­модель.

Рис. 1. Интерфейс программы

Рис. 1. Интерфейс программы

Рис. 2. Операция выдавливания

Рис. 2. Операция выдавливания

Далее следует описание основных моментов поэтапного создания пользовательской библиотеки под NX 8.5, разработанной с помощью API функций NX на языке C# в среде Visual Studio 2010.

Перед началом построения колодки необходимо создать новую 3D­модель. Для этого применяется функция theUFSession.Part.New( ). Она имеет три параметра: имя новой модели; модуль; тэг объекта.

Tag UFPart; // тэг объекта

string part_name = “Exterior ring”; // имя детали

int units = 2; // модуль

theUFSession.Part.New(part_name, units, out UFPart);

Основной функцией, которая используется при моделировании колодки, является операция выдавливания:

CreateExtruded (objarray1, angle, limit1, point1, direction1, FeatureSigns.Nullsign, out features1);

Рассматриваемая операция выдавливания имеет шесть параметров: объекты, участвующие в операции (objarray1); угол уклона (angle); расстояние (limit1); начальная точка (point1); направление выдавливания (direction1); булевы (FeatureSigns.Nullsign).

double[] direction1 = { 0.00, 0.00, 1.00 }; // направление

string angle = “0.0”; // угол

string[] limit1 = { “0”, “35”}; //расстояние

double[] point1 = { 0.0, 0.0, 0.0 };

theUFSession.Modl.CreateExtruded(objarray1, angle, limit1, point1, direction1, FeatureSigns.Nullsign, out features1); // создание операции выдавливания

Результат операции выдавливания представлен на рис. 2.

В колодке имеются четыре отверстия под цилиндрическую цековку, для создания которых используется следующая функция:

theUFSession.Modl.CreateCBoreHole(point1, direction1, diametr1, depth1, diametr2, depth2, angle, face_li, face_t1, out feature_obj_id);

Рассматриваемая операция для создания отверстий имеет девять параметров: точка центра (point1); ориентация (direction1); диаметр (diametr1); глубина (depth1); диаметр цековки (diametr2); глубина цековки (depth2); угол при вершине (angle); грани для цековки (face_li, face_t1).

Кроме того, колодка содержит два простых отверстия. Их построение осуществляется с помощью такой функции:

theUFSession.Modl.CreateSimpleHole(point1, direction1, diametr1, depth1, angle, face_li1, face_t11, out feature_obj_id);

Рассматриваемая операция для создания отверстий имеет семь параметров: точка центра (point1); ориентация (direction1); диаметр (diametr1); глубина (depth1); угол при вершине (angle); грани для отверстия (face_li, face_t1). Результат операции построения отверстий приведен на рис. 3.

Рис. 3. Операция построения отверстий

Рис. 3. Операция построения отверстий

Рис. 4. Среда MS SQL Server Management Studio

Рис. 4. Среда MS SQL Server Management Studio

В связи с тем что ГОСТ 12198­66 содержит значительное количество колодок с различными параметрами, к приложению была подключена база данных. В качестве информационного обеспечения для разработанной подсистемы САПР служит база данных, реализованная под MS SQL Server (рис. 4). Пользователь имеет возможность не только вводить данные вручную, но и выбирать их из базы данных. Для повышения гибкости программного средства встроенная база данных имеет возможность редактирования.

Для связи приложения с базой данных используется компонент MS Visual Studio SqlConnection.

sqlConnection1.ConnectionString = “DataSource=HOME;Initial Catalog = podshipnik; Integrated Security=True”; // строка подключения

С помощью компонента DataGridView информация, которая содержится в таблицах базы данных, будет отображаться в приложении.

Заключение

Решена задача создания прикладных библиотек для NX 8.5 посредством NX Open API. Реализованы операции выдавливания, булевы операции, рассмотрено построение двух типов отверстий, организована работа с сетевой базой данных MS SQL Server. Создана прикладная библиотека, решающая актуальную техническую задачу: построение 3D­модели колодки ГОСТ 12198­66.

Данное приложение может использоваться на производстве, в научно­исследовательских институтах и в учебных заведениях. Применение данного программного продукта позволит снизить трудозатраты и время проектирования, а также повысить гибкость конструирования изделий, в которых используются колодки данного ГОСТа. 

Список литературы

  1. Краснов М. Unigraphics для профессионалов. М.: ЛОРИ, 2004. 143 с.
  2. Куракин М. Повышение производительности работы с САПР // RM MAGAZINE. 2003. № 3.

САПР и графика 8`2014