Автор: Павел Демидов
Источник: Проектирование трубопроводов в Solid Edge //САПР и графика 2016. Вып. 5. с. 8-10.
Рынок инженерного программного обеспечения представлен множеством универсальных систем автоматизированного проектирования, которые служат для повышения эффективности труда инженеров на предприятии. Системы трехмерного моделирования — одни из них. Они обладают мощной функциональностью твердотельного и поверхностного моделирования и широкими возможностями встроенных инструментальных средств. Но даже этих решений для выполнения конкретных производственных задач иногда бывает недостаточно.
Тогда на помощь специалистам приходит интерфейс прикладного программирования (API), то есть некоторый набор готовых классов, процедур, функций, структур и констант, призванный упростить создание пользовательских программных модулей, интегрированных с базовым программным продуктом. Наличие в CADсистемах API позволяет осуществлять тонкую настройку системы проектирования и может существенно сократить время разработки дополнительных программных компонентов к уже имеющейся на предприятии САПР. Так, базовая функциональность КОМПАС3D легко расширяется за счет приложений для проектирования радиоэлектронной аппаратуры и электрооборудования, деталей машин, трубопроводов, металлоконструкций, зданий и сооружений различного назначения.
Однако, что делать, если ни одна из имеющихся систем автоматизированного проектирования не обладает должным спектром функциональных возможностей для ее полноценного использования специалистами? Выход есть — разработать собственную узкоспециализированную САПР!
API — это вспомогательный интерфейс разработчика программного обеспечения, позволяющий быстро создавать программы и компоненты к ним благодаря использованию готового набора функций, методов и процедур, представленных в максимально понятной и удобной для программиста форме. Как правило, внутренняя реализация таких объектов скрыта от пользователя и представляет собой предмет интеллектуальной собственности обладателя исходных кодов программного обеспечения.
Особенности работы с интерфейсом прикладного программирования прописываются в технической документации. Здесь же указывается, какие значения необходимо подавать на вход конкретной функции, чтобы получить на ее выходе корректные значения, согласно предназначению данной функции. Таким образом, API позволяет абстрагироваться от реализации отдельных программных блоков при разработке приложений. Наиболее явно эта концепция раскрывается на примере черного ящика (рис. 1).
Физически APIфункции представляются в виде отдельного программного модуля, который динамически подключается извне к основному проекту в формате DLLбиблиотеки. Итак, что же такое «API геометрического ядра»?
Прежде всего — это набор всех экспортных методов ядра, которые использует в своей работе система автоматизированного проектирования, плюс внутренние объекты ядра в исходном виде: точки, матрицы, системы координат, кривые, поверхности, тела, вспомогательные объекты и др.
В то же время API КОМПАС является «оберткой» для избранных высокоуровневых методов, среди которых есть и методы ядра, и надстроенные над ними методы КОМПАС (в большей степени), позволяющие специалистам, разбирающимся в программировании, автоматизировать рутинные операции при работе с САПР. Это может быть новая панель, кнопка или отдельный внешний программный компонент, на который завязана качественно новая операция или, например, результирующая последовательного выполнения ряда функций, уже доступных в окружении КОМПАС.
Таким образом:
Ниже приведен пример реализации на языке Python изменения цвета граней для простого макроса for _ in _ range (рис. 2):
Таким образом, получаем малую автоматизацию. Так, с помощью макроса мы можем выбрать сразу группу граней и окрасить их в цвет образцовой грани, тогда как, пользуясь стандартными средствами КОМПАС3D, нам пришлось бы кликать в каждую грань, вызывать ее свойства, выбирать нужный цвет и применять заданные параметры.
То есть использование API C3D позволяет работать с базовыми объектами, лежащими в предметной области геометрического моделирования, и выполнять различные операции, а также преобразования над ними.
Исходя из функциональных особенностей интерфейсов прикладного программирования системы КОМПАС3D и лежащего в основе данной САПР геометрического ядра C3D, складывается набор признаков, по которым разработчики могут однозначно определить необходимость использования каждого из этих вспомогательных программных инструментов для успешного достижения поставленных перед ними целей и задач.
Так, для разработки программ, расширяющих возможности стандартного комплекса КОМПАС3D и являющихся неким плагином или дополнением к нему, достаточно использовать API КОМПАС. Причем никаких новых способностей в конечный продукт за счет API, будь то разработка необычных способов задания примитивов или построение нестандартных типов 2D и 3Dгеометрии, не может быть привлечено. Для функционирования такого программного обеспечения необходимо иметь предустановленную лицензионную версию системы КОМПАС3D.
В случае если разработчику требуется в краткие сроки создать уникальный программный продукт без привязки к существующим САПР, необходимо использовать API C3D. Речь идет о создании специализированных CAD/CAM/CAEсистем или других типов инженерного ПО, функционирование которых связано с построением и обработкой геометрически точных 2D и 3Dмоделей.
На рис. 4 приведено наглядное изображение, иллюстрирующее, каким образом САПР КОМПАС3D взаимодействует с различными API.
Александр Васильевич Щекин из Мордовского государственного университета им. Н.П. Огарева занимается разработкой модулей ЧПУ для системы трехмерного моделирования КОМПАС3D:
Оба приложения работают с трехмерной моделью детали, созданной непосредственно в КОМПАС3D, умеют автоматически рассчитывать траектории обработки, генерировать управляющую программу в Gкоде и визуализировать обработку в окне системы.
Итак, использование геометрического ядра C3D в процессе разработки программного обеспечения позволяет создавать принципиально новые кроссплатформенные CAD, CAM и CAEсистемы без привязки к действующим САПР, проектировать мобильные и облачные приложения, а также дополнять функционал уже имеющихся программ возможностями 3D и 2Dмоделирования, задания параметрических ограничений и конвертации данных.
В то же время, когда необходимо дополнить и доработать систему трехмерного моделирования КОМПАС3D, а также разработать новый программный модуль для действующих пользователей этой системы, достаточно использовать API КОМПАС3D.