6 - 2006

SolidWorks API — универсальная платформа для интеграции инженерных и бизнес-приложений

Артем Аведьян, Евгений Викентьев

SolidWorks API: что, где, когда?

Документация по SolidWorks API

Приложения, создаваемые на платформе SolidWorks API

Особенности использования API в коммерческих программных продуктах

В настоящее время особую актуальность приобретают вопросы, связанные с разработкой специализированных приложений, обеспечивающих решение прикладных инженерных задач и интеграцию САПР, PDM и ERP с целью создания единой информационной системы (ИС) предприятия. Интеграция приложений является задачей более сложной по сравнению с традиционной интеграцией данных, часто используемой ИТ-компаниями при внедрении информационных систем. Однако интеграция на уровне приложений обладает и рядом неоспоримых преимуществ, к числу которых в первую очередь относятся: обеспечение сквозного цикла информационного взаимодействия приложений в рамках ИС; автоматизированное выполнение сервисных приложений по команде из базовых компонентов ИС; высокое быстродействие, обусловленное отсутствием необходимости в промежуточных форматах данных, минимизацией дисковых операций и т.п. Поэтому одним из основных требований, предъявляемых к компонентам информационной системы, будь то САПР, PDM или ERP, является возможность программного управления набором функциональных средств, реализованных в этих компонентах. Иными словами, наличие в том или ином приложении интерфейса прикладного программирования (Application Programming Interface,  API) представляется необходимым и достаточным для решения задачи интеграции компонентов информационной системы на уровне приложений. В этой статье мы остановимся подробнее на описании особенностей API системы SolidWorks и ряда ее прикладных модулей. Приведенная информация должна быть интересна как начинающим, так и более опытным разработчикам приложений на платформе САПР SolidWorks.

SolidWorks API: что, где, когда?

Мы отмечаем все возрастающий интерес к САПР SolidWorks не только в плане 3D-моделирования, но и в отношении разработки прикладного программного обеспечения, автоматизирующего различные этапы проектно-конструкторских работ. Всё чаще  пользователи SolidWorks задают нам вопросы о том, как наилучшим образом они могут использовать API для решения своих задач; всё чаще мы применяем API при разработке коммерческих программных продуктов и модулей интеграции САПР с PDM или ERP. Это обусловлено тем, что использование SolidWorks API — наиболее дешевый и удобный способ гибко настроить информационную систему на решение задач конкретного предприятия. Благодаря этому в настоящий момент SolidWorks является одной из самых популярных систем проектирования как в России, так и во всем мире.

SolidWorks API — это интерфейс прикладного программирования, позволяющий разрабатывать пользовательские программы на платформе САПР SolidWorks. API содержит сотни функций, которые можно вызывать из программ Microsoft Visual Basic, VBA (Microsoft Excel, Word, Access и т.д.), Microsoft Visual C, C++, .NET или из файлов-макросов SolidWorks. API-функции обеспечивают прямой программный доступ к функциональным возможностям пакета SolidWorks. Казалось бы, зачем это нужно, если SolidWorks предоставляет пользователю широкий спектр функциональных возможностей, позволяющих создавать и модифицировать как 2D-, так и 3D-геометрию? На практике оказывается, что если для проектирования изделий в среде CAD-системы возможностей обычного пользовательского интерфейса более чем достаточно, то для решения задач интеграции приложений на уровне единой ИС предприятия требуется увязать между собой разнородные программные продукты, наладив между ними полноценное информационное взаимодействие. Здесь без API уже не обойтись. Таким образом, наиболее распространенными сферами применения интерфейса прикладного программирования SolidWorks являются:

•  интеграция SolidWorks с различными Windows-приложениями (CAD/CAM/CAE/PDM/ERP, MS Office, Windows API и др.), подразумевающая создание интерфейсов передачи данных, вызова сервисных утилит, преобразования данных и т.п.;

•  разработка прикладных модулей, добавляющих к базовым возможностям САПР SolidWorks дополнительный функционал в какой-либо специальной предметной области, например решение задач оптики, акустики и т.п.

Интерфейс прикладного программирования поставляется в составе базовой конфигурации САПР SolidWorks. Кстати, стоит отметить, что помимо базового конструкторского решения API имеется у всех основных модулей, входящих в пакет SolidWorks, к которым прежде всего относятся Toolbox, FeatureWorks, Utilities, PhotoWorks, eDrawings, Routing, SWR-PDM, SWR-Электрика. Динамические библиотеки типов и констант, отвечающие за работу API, автоматически инсталлируются на компьютер при установке программы. Таким образом, каждое рабочее место САПР SolidWorks по умолчанию оснащено интерфейсом прикладного программирования, что открывает перед разработчиками широкие возможности.

В начало В начало

Документация по SolidWorks API

Важной составляющей любого средства разработки приложений является описание его функционала, примеры работы и т.п.  Как уже отмечалось, все средства API, в том числе и документация, по умолчанию включены в дистрибутив SolidWorks и позволяют пользователю самостоятельно освоить и использовать API для разработки приложений. Интерактивное учебное пособие «Функциональные инструкции» (вызывается из меню «Справка» SolidWorks) содержит несколько десятков упражнений с подробными инструкциями. Среди них есть упражнение «Интерфейс программирования приложений (API) SolidWorks», в котором пошагово рассматривается методика записи, изменения и выполнения макросов как основы при изучении SolidWorks API (рис. 1).

Рис. 1. Интерактивное учебное пособие «Функциональные инструкции» — запись макроса

Рис. 1. Интерактивное учебное пособие «Функциональные инструкции» — запись макроса

В справочной системе (см. файл …\SolidWorks\api\apihelp.chm) можно найти подробное описание объектной структуры API, а также список новых функций, добавленных в API к моменту выхода актуальной версии SolidWorks (рис. 2). Также в справочной системе в разделе Examples приведены примеры исходного кода, поясняющие, каким образом нужно использовать те или иные API-функции для работы с объектами SolidWorks. Справка вызывается из меню «Разделы справки по SolidWorks и API подключаемых модулей». Справочная система расширяется набором примеров «SolidWorks API SDK» (Software Development Kit — набор разработчика ПО), который обновляется при выходе каждой новой версии SolidWorks.

Рис. 2. Справочная система SolidWorks API

Рис. 2. Справочная система SolidWorks API

Помимо встроенной справочной системы на web-сайте SolidWorks Corp (http://www.solidworks.com/pages/services/APISupport.html) помещены обширные Интернет-ресурсы, обеспечивающие в свободном режиме доступ к базе знаний по SolidWorks API, в которой хранятся многочисленные примеры использования API-функций при решении различных задач, ответы на часто задаваемые вопросы и т.д. (рис. 3). Служба технической поддержки SolidWorks API отвечает на вопросы по электронной почте apisupport@solidworks.com. Раздел web-сайта SolidWorks API Support имеет следующую структуру:

Рис. 3. Web-сайт SolidWorks Corporation (www.solidworks.com)

Рис. 3. Web-сайт SolidWorks Corporation (www.solidworks.com)

•  Советы по API (http://www.solidworks.com/pages/services/APITips.html) — набор полезных советов, помогающих разобраться в методологии использования SolidWorks API при разработке приложений. Данный раздел четко структурирован и содержит следующие подразделы: сборки, размеры, документация, чертежи, добавления, операции с файлами, ссылки, геометрия и топология, макросы, OpenGL, Visual Basic, .NET Framework и др. В разделе «Советы по API» можно получить ответы на вопросы:

-  как использовать .NET для вызова API-функций SolidWorks;

-  как осуществить инсталляцию Visual Basic ATL COM DLL add-in;

-  что быстрее: C++ или Visual Basic;

-  как настроить автоматическое подключение добавления;

-  как использовать редактор ресурсов Visual Basic 6.0 Resource Editor;

-  как извлекать данные из массивов типа Variant SafeArrays;

-  как интегрировать файлы SolidWorks API Help со справкой MSDN;

-  как контролировать поля чертежа при выводе на печать;

-  как создать пустой чертежный вид;

-  как восстанавливать потерянные ссылки на библиотеки OCX в редакторе макросов и многое другое;

•  Downloads () — в этом разделе доступно для бесплатной загрузки множество проектов, созданных с иhttp://www.solidworks.com/pages/services/APIDownloads.htmlспользованием SolidWorks API, презентаций, актуальных версий API Help и API SDK. Приведем лишь некоторые из полезных ресурсов, имеющихся в разделе Downloads:

-  Visual Studio 2005 VB.Net и C# Addin Templates;

-  API Tips and Tricks (тонкости и хитрости SolidWorks API);

-  создание панелей инструментов в стиле SolidWorks Command Manager;

-  пример программы для анализа линий гиба в изделиях из листового металла;

-  создание Macro Feature и подключение через Менеджер добавлений;

-  добавление нового пункта меню в интерфейс SolidWorks (VB);

-  стили оформления SolidWorks API HTML Help Cascading Style Sheets (CSS);

-  переименование и копирование файлов SolidWorks в оперативной памяти;

-  добавление элементов ActiveX в FeatureManager (VB);

-  отслеживание событий SolidWorks;

-  отрисовка графики в окне SolidWorks в контексте OpenGL;

-  извлечение Parasolid Body и многое другое;

•  Примеры API (http://www.solidworks.com/pages/services/CodeExamples.html) — здесь приведены примеры исходных кодов для различных API-функций (операции с файлами, работа с геометрией и топологией, размерами, чертежами). В разделе «Примеры API» можно получить ответы на вопросы:

-  как создать собственный Менеджер свойств;

-  как выполнить проверку интерференции компонентов сборки;

-  как определить, что компонент сборки находится в режиме контекстного редактирования;

-  как определить, какие есть сопряжения в сборке;

-  как получить картинку предварительного просмотра из файла SolidWorks;

-  как определить элементы Дерева конструирования по выбранным кромкам чертежного вида;

-  как переместить размеры с одного слоя на другой;

-  как заменить форматку чертежа;

-  как использовать функцию проверки орфографии Microsoft Word в чертежах SolidWorks и многое другое.

В начало В начало

Приложения, создаваемые на платформе SolidWorks API

В настоящее время насчитывается свыше тысячи прикладных программ, использующих SolidWorks API и решающих ряд специальных задач. Такое обилие приложений является важной характерной особенностью пакета SolidWorks, положительно выделяющей его из списка других систем, имеющихся сегодня на рынке. В рамках статьи не представляется возможным перечислить все партнерские приложения SolidWorks. Полный их список можно посмотреть в Интернете на web-сайте SolidWorks Corp по адресу http://www.solidworks.com/pages/partners/PartnerProducts.html. Названия и описания функциональных возможностей наиболее востребованных на российском рынке прикладных модулей SolidWorks приведены на www.solidworks.ru в разделе «Продукты».

Чем обусловлено такое обилие прикладных модулей? Дело в том, что еще в далеком 1995 году корпорация SolidWorks создала проект «Партнеры SolidWorks», который предполагает осуществление совместной работы по созданию и дистрибьюции прикладных программ для системы SolidWorks. В зависимости от степени интеграции с SolidWorks существует несколько ступеней партнерства и соответственно — несколько  групп партнеров по степени полноты предлагаемых решений:

•  Research Partner — партнер-исследователь, обеспечивающий низшую степень интеграции своих приложений с SolidWorks. Приложения не требуют сертификации специалистами SolidWorks Corp на предмет совместимости программ. Партнеры-исследователи стремятся получить в перспективе звание Solution Partner;

•  Solution Partner — партнер по решению, обеспечивающий высокую степень интеграции своих приложений с SolidWorks, при этом приложения не обязательно работают с ним в одном окне. Приложения проходят обязательную сертификацию SolidWorks Corp на предмет совместимости с SolidWorks. Партнеры по решению стремятся получить в перспективе звание Gold Partner;

•  Gold Partner — золотой партнер, обеспечивающий наивысшую степень интеграции своих приложений с SolidWorks и обязательно работающий с ним в одном окне. Приложения проходят обязательную сертификацию SolidWorks Corp на предмет совместимости с SolidWorks при выходе каждой новой версии SolidWorks;

•  CAM Partner — партнер по разработке приложений SolidWorks для создания управляющих программ для станков с ЧПУ.

Список партнеров-разработчиков SolidWorks Corp составляют компании-лидеры в области управления данными, прочностного анализа, производства и т.д., которые обеспечивают создание полноценного продукта от начальной стадии проектирования до его промышленного освоения. В каждой предметной области насчитывается от одной до нескольких десятков прикладных программ, каждая из которых разрабатывается и поддерживается высококвалифицированными специалистами, благодаря чему у пользователей SolidWorks есть возможность выбора наилучшего решения.

Вопросы разработки приложений с использованием SolidWorks API активно обсуждаются в Интернете на форуме SolidWorks-Russia в разделе «Программирование (SW API, SWR-PDM API)» (http://support.solidworks.ru/forum/index.php). Это обусловлено тем, что многие из пользователей системы SolidWorks разрабатывают свои собственные приложения с использованием API. Наиболее интересные из этих работ мы публикуем на своем сайте в разделе «Библиотека пользовательских подпрограмм и макросов для SolidWorks» (http://www.solidworks.ru/support/download/prog_macros/). В данном разделе собраны пользовательские подпрограммы и макросы, автоматизирующие выполнение различных операций в SolidWorks. Эти приложения являются некоммерческими программными продуктами и распространяются бесплатно. Некоторые из них опубликованы с исходными кодами, что обеспечивает возможность их доработки независимыми авторами. Техническая поддержка программ осуществляется непосредственно их авторами. Компания SolidWorks Russia приглашает авторов программ и макросов разместить свои разработки в нашей библиотеке.

Рис. 4. Анализ структуры сборки SolidWorks и разбор состава изделия в SWR-PDM 3.0

Рис. 4. Анализ структуры сборки SolidWorks и разбор состава изделия в SWR-PDM 3.0

В начало В начало

Особенности использования API в коммерческих программных продуктах

Рассмотрим, какие именно функции и механизмы SolidWorks API используются в коммерческих программных продуктах различного назначения. Начнем с системы управления  инженерными данными SWR-PDM (рис. 4), структура которой предполагает обязательное наличие блока интеграции с САПР — модуля SWR-PDM Add-In для SolidWorks, обеспечивающего возможность коллективной работы со сборками в среде SolidWorks. По модели сборки осуществляется разбор состава изделия и создание соответствующей структуры в хранилище PDM. В основу функции разбора состава изделия положена рекурсивная процедура анализа иерархической структуры компонентов сборки, рассмотренная в справочном примере SolidWorks API «Traverse Assembly Example». Кстати, этот же механизм применяется и при разборе состава изделия модулем автоматической генерации спецификаций SWR-Спецификация. Для учета конфигураций сборки при разборе состава изделия в SWR-PDM Add-In используются API-функции анализа объектов типа Configuration, имеющихся в активной модели. В реализованном механизме двухуровневого версионного контроля применяются функции SolidWorks API, обеспечивающие возможность открытия и сохранения файлов, входящих в сборки и подсборки, отслеживания связей между документами SolidWorks, контроль событий, происходящих в SolidWorks в результате действий пользователя. Кроме того, SWR-PDM Add-In обеспечивает двунаправленный обмен атрибутами между моделями SolidWorks и свойствами документов в хранилище PDM. Таким образом, широкое использование API-возможностей SolidWorks обеспечивает полноценное функционирование системы управления инженерными данными SWR-PDM. Кстати, в SWR-PDM есть собственный API-интерфейс, имеется вся необходимая документация, в которой описан инструментарий PDM API и приведены примеры создания дополнений к SWR-PDM. Служба технической поддержки SWR-PDM API Support отвечает на вопросы пользователей по электронной почте pdmapisupport@spb.solidworks.ru.

Рис. 5. Чертеж электрожгута, созданный модулем SWR-Электрика в графическом редакторе SolidWorks

Рис. 5. Чертеж электрожгута, созданный модулем SWR-Электрика в графическом редакторе SolidWorks

Другим ярким примером применения интеграционных возможностей SolidWorks API является модуль проектирования электрической части изделия — SWR-Электрика (рис. 5). Этот модуль позволяет моделировать проводные соединения между контактами с использованием пополняемой библиотеки соединителей, проводов, многожильных кабелей, изоляционных трубок, экранирующих плетенок и т.д. При работе с SWR-Электрикой активно применяется режим построения так называемых временных тел (Temporary Bodies), доступный только через SolidWorks API и используемый для ускорения работы программного комплекса в режиме предварительного просмотра создаваемых электрических соединений. Этот прием позволяет избавиться от утомительного ожидания при моделировании геометрической информации и добиться по-настоящему интерактивной работы с приложением, чего зачастую не хватает при работе в других CAD-системах. При работе с функцией раскладки жгутов на монтажном столе конструктор не сталкивается с новой и непривычной программой, а работает в рамках хорошо знакомого чертежного редактора SolidWorks. Все функции и интерфейс программы внедрены непосредственно в интерфейс основной системы, добавляя к ним специфические автоматизированные операции SWR-Электрики, что позволяет значительно ускорить процесс создания монтажного чертежа. В модуле SWR-Электрика, так же как и в SWR-PDM, имеется собственный API-интерфейс, примеры работы которого приведены в документации. В частности, в дистрибутив SWR-Электрики включен макрос elreport.swp, который демонстрирует пример извлечения информации из сборки SolidWorks посредством вызова функций API SolidWorks, SWR-Электрика и Microsoft Data Access Objects (DAO). Макрос использует функции модуля генерации отчетов swrelrep.dll, который в автоматическом режиме формирует файл базы данных с электротехнической информацией и текстовый отчет.

Рис. 6. Визуализация результатов акустического анализа AcousticXpert в графическом окне SolidWorks с помощью OpenGL

Рис. 6. Визуализация результатов акустического анализа AcousticXpert в графическом окне SolidWorks с помощью OpenGL

Приведем еще один пример примененя SolidWorks API, на этот раз уже при разработке модуля инженерного анализа AcousticXpert (рис. 6), который предназначен для выполнения акустических расчетов в среде 3D САПР. Используя процедуру анализа структуры дерева модели, AcousticXpert автоматически формирует список объемных тел, имеющихся в модели, каждому из которых назначается материал с индивидуальными акустическими свойствами. Отслеживая действия пользователя через механизм событий (SolidWorks Notifications), AcousticXpert применяет выбранные в графическом окне характерные точки 3D-модели (вершины, точки эскизов) для создания источников звука. Акустический расчет основан на модели распространения звуковых волн, предполагающей, что звук распространяется вдоль акустических лучей, которые могут отражаться от препятствий, преломляться на границе раздела разных сред и частично или полностью поглощаться. В SolidWorks модель отражения и преломления звуковых волн AcousticXpert реализуется на основе API-функций RayIntersections и GetRayIntersectionsPoints. Визуализация результатов акустического анализа выполняется в графическом окне SolidWorks, используя событие ModelView_BufferSwapNotify и специальные функции отрисовки 3D-объектов библиотеки Open Graphics Library (OpenGL). При отрисовке акустических лучей варьируется толщина луча в пикселах, относительные диаметры сфер, отображаются объем и тени. Таким образом достигается максимальная реалистичность визуализации результатов акустического анализа.

В заключение хочется отметить, что использование SolidWorks API — оптимальный способ гибко сконфигурировать информационную систему для решения задач конкретного предприятия. Существует бесконечное множество способов применения SolidWorks API, однако на практике всё определяется лишь корректностью поставленной задачи и опытом разработчиков, которым компания SolidWorks-Russia желает творческих успехов в создании новых интересных приложений.

Артем Аведьян

Канд. техн. наук, директор по маркетингу SolidWorks-Russia.

Евгений Викентьев

Начальник отдела разработки ПО SolidWorks-Russia.

В начало В начало

САПР и графика 6`2006