Так, при разработке приложения АРМ «Редуктор» к САПР Компас-3D на базе геометрического ядра должны решаться следующие задачи:
1) выполнение расчета требуемых переменных в параметрической 3D-модели прототипа редуктора и их изменение в соответствии с алгоритмами геометрического и прочностного расчетов для новых производственных условий;
2) получение в результате расчетов новой модификации 3D-сборки редуктора;
3) получение комплекта рабочих чертежей деталей перестроенного редуктора.
Это означает, что расчетный модуль должен обеспечивать выполнение следующих функций:
подключение к системе САПР Компас-3D;
загрузку в систему параметрической модели сборки прототипа редуктора;
запрос параметров новых производственных условий;
получение текущих значений переменных деталей, составляющих сборку;
пересчет значений переменных сборки и деталей на основе прочностного и геометрического расчета передач редуктора;
изменение значений переменных, перестроение и сохранение 3D-модели редуктора и составляющих сборку деталей;
разработка рабочих чертежей деталей перестроенного редуктора.
Для того, чтобы задать изменение размеров модели сборки с целью получения ее новой модификации, во-первых, необходимо параметризировать значения некоторых ее переменных [1-3], во-вторых, использовать программный интерфейс расчетного модуля для осуществления ряда вышеперечисленных действий над сборкой.
Основную сложность представляет не столько реализация расчетов, сколько организация взаимодействия расчетного модуля с САПР, управление которой осуществляется при помощи API-интерфейса. Он предоставляет программисту набор процедур и функций для управления процессами моделирования [3], но не дает прямого доступа к свойствам и методам объектов внутри САПР [4], что делает код программы громоздким и сложным для понимания.
Разработка расчетного модуля АРМ «Редуктор», реализующего выше указанные функции, осуществлялась поэтапно на языке программирования высокого уровня C# на платформе .NET 4.0. Взаимодействие автоматизированного расчетного модуля с САПР Компас-3D реализовывалось посредством программных API-интерфейсов [1-2]. Они представляют собой библиотеки, которые включают в себя методы моделирования и математические функции ядра САПР. В САПР Компас-3D на данный момент существуют API-интерфейсы двух версий: API5 и API7. Следует заметить, что данные API-интерфейсы по реализации незначительно отличаются друг от друга. Однако, для разработки полноценных подключаемых программных модулей разрабатываемого приложения достаточно методов и свойств API5.
На первом этапе разработки программного обеспечения были установлены связи между будущим программным модулем и системой САПР. Данная связь устанавливается посредством подключения соответствующих пространств имен, определенных в библиотеках API-интерфейса:
using Kompas6API5;
using Kompas6Constants;
using KAPITypes;
В этих библиотеках описаны функции и методы обработки модели математическим ядром САПР. Данные библиотеки представляют собой классы, что позволяет использовать при написании программного кода объекты, методы и прочие преимущества объектно-ориентированного программирования. В листинге 1 представлено объявление экземпляров объектов, которые используются в программе.
public KompasObject _kompas;
private ksDocument3D ksDoc3D;
private ksPartCollection ksParts;
private ksPart curPart;
private ksVariableCollection curVars;
Листинг 1. Объявление экземпляров объектов
В классе KompasObject описаны основные математические методы расчета и построения моделей в системе Компас-3D. Основные функции-члены класса KompasObject приведены в табл. 1.
Таблица 1
Основные методы класса KompasObject
Метод |
Описание |
ActiveDocument2D |
Позволяет получить указатель на активный графический документ |
ActiveDocument3D |
Дает возможность получить указатель на активный трехмерный документ |
Document2D |
Позволяет получить указатель на интерфейс графического документа (чертежа или сборки) |
Document3D |
Дает возможность получить указатель на интерфейс трехмерного документа(детали или сборки) |
GetDynamicArray |
Возвращает указатель на интерфейс динамического массива |
GetMathematic2D |
Возвращает указатель на интерфейс для работы с математическими функциями в графическом документе |
GetParamStruct |
Один из самых важных методов. Позволяет получить интерфейс структуры параметров объекта определенного типа |
ksSaveFile |
Выдает диалог сохранения файла |
SpcActiveDocument |
Позволяет получить указатель на интерфейс активного в данный момент документа-спецификации |
Следующим этапом разработки модуля является непосредственное написание программного кода реализующего функции:
загрузки параметрической 3D-модели сборки редуктора в программный модуль;
получение переменных значений сборки через графическое ядро САПР;
расчет и установку новых параметров для получения модификации 3D-модели редуктора, соответствующей новым производственным условиям;
построение новой модели в САПР.
При запуске АРМ «Редуктор» автоматически проверяет наличие установленной версии САПР Компас-3D, по окончании проверки устанавливается связь с системой (см. листинг 2)
private void LoadKompas()
{
const string programmId = "KOMPAS.Application.5";
var t = Type.GetTypeFromProgID(programmId);
try
{
_kompas = (KompasObject)Marshal.GetActiveObject(programmId);
_kompas.Visible = true;
_kompas.ActivateControllerAPI();
}
catch
{
try
{
_kompas = (KompasObject)Activator.CreateInstance(t);
_kompas.Visible = true;
_kompas.ActivateControllerAPI();
}
catch
{
...
}
}
}
Листинг 2. Реализация метода установки соединения с САПР Компас-3D
Открытие файла со сборкой редуктора реализовано посредством метода OpenAssembly(); изменение параметров сборки реализовано посредством методов:
StartEdit(string) – метод, отвечающий за активирование режима редактирования сборки, в качестве параметра метод принимает название сборки;
ChangeVar(string, string, double) – метод, изменяющий значение определенной переменной сборки;
FinishEdit() – метод, отключающий режим редактирования и обновляющий редактируемый документ;
MakeReducer() – метод выполняет перестроение сборки по рассчитанным параметрам.
Полная диаграмма классов реализованного приложения представлена на рис. 1.
Рис. 1. Список классов приложения
Тестирование разработанного приложения показало, что расчетно-математический модуль обеспечивает построение параметрической сборки редуктора и разных его модификаций в зависимости от заданных пользователем эксплуатационных параметров (рис. 2, а-б). На основании перестроенной модели автоматизировано формируется ее чертеж (рис. 2, в).
При этом модуль полностью совместим с различными версиями САПР Компас-3D. Это означает, что разработанная программа является универсальной и будет работать со всеми актуальными и последующими версиями выбранной САПР Компас-3D.
а) б)
в)
Рис. 2. АРМ «Редуктор»: а) диалоговое окно ввода новых параметров; б) – перестроенная 3D-модель редуктора; в) – сборочный чертеж редуктора
Библиографический список
1. Ганин, Н. Б. Автоматизированное проектирование в системе Компас-3D V12. –ДМК-Пресс, 2010. – 368с.
2. Ганин, Н. Б. Трехмерное проектирование в Компас-3D. – ДМК-Пресс, 2012. – 784 с.
3. Кидрук, М. Компас-3D V10 на 100%. – Питер, 2009. – 560 с.
4. Кудрявцева, Е. М. Компас-3D V10. Максимально полное руководство. – Изд.: ДМК-Пресс, 2008. – 1184 с.