Автор: Бондаренко Е.С., Григорьев А.В.
Источник: Материалы студенческой секции X Международной научно-технической конференции «Информатика, управляющие системы, математическое и компьютерное моделирование» (ИУСМКМ - 2019). – Донецк: ДОННТУ, 2019. –с. 105-109.
Бондаренко Е.С., Григорьев А.В. Исследование API САПР CATIA V5 и перспективы развития создания приложений в ней. В работе проведен сравнительный анализ геометрических ядер САПР. Выделены преимущества использования языка программирования Python для создания приложений и рассмотрены перспективы развития API САПР.
Сейчас создано множество универсальных систем автоматизированного проектирования для повышения эффективности труда инженеров и облегчения процесса производства. Они обладают мощной функциональностью моделирования и широкими возможностями встроенных инструментальных средств. Но даже этих решений для выполнения конкретных производственных задач иногда бывает недостаточно.
Тогда на помощь специалистам приходит интерфейс прикладного программирования (API), то есть некоторый набор готовых классов, процедур, функций, структур и констант, созданный для упрощения написания пользовательских программных модулей, интегрированных с САПР. Наличие в CAD-системах API позволяет осуществлять тонкую настройку системы проектирования и помогает сократить время разработки дополнительных программных компонентов к уже имеющейся на предприятии САПР.
Однако ни одна из имеющихся систем автоматизированного проектирования не обладает полным набором функциональных возможностей для ее полноценного использования специалистами.
Целью работы является исследование возможности использования языка Python в среде САПР Catia V5 для создания дополнительных модулей и приложений. Для достижения поставленной цели были выявлены следующие задачи:
Зачем API в САПР?
1. Автоматизация чертежей;
2. Упрощение создания и редактирования чертежей.
API дает возможность полностью контролировать исходный код, оперативно исправлять ошибки и наращивать функционал. Это в своих системах используют разработчики CATIA, NX, Creo Elements/Pro, Solid Edge, Autodesk Inventor, think3, КОМПАС-3D.
Новая разработка, получившая кодовое имя CNext, в 1998 году стала известной всему миру под названием CATIA V5. Она имеет открытую архитектуру — в нее можно вставить собственные наработки и программы (например, тепловой расчет и т.д.), функции, необходимые для расширения возможностей специализированных модулей. Использование программирования на языках VB CATIA, Java, C++, VBA, Basic Script позволяет автоматизировать весь процесс проектирования. API для CATIA называется «CAA» - сокращение от Component Application Architecture. Этот API написан на C ++. CATIA имеет другие API, основанные на Microsoft Visual Basic и Java, но они не такие полнофункциональные и не такие гибкие, как CAA C ++ API. Вместо устаревшего Fortran в качестве языка программирования был выбран С++, а геометрическое ядро новой системы получило название CGM – CNext/CATIA Geometric Modeler.
Особенности работы с интерфейсом прикладного программирования прописываются в технической документации. Здесь же указывается, какие значения необходимо подавать на вход конкретной функции, чтобы получить на ее выходе корректные значения, согласно предназначению данной функции. Таким образом, API позволяет абстрагироваться от реализации отдельных программных блоков при разработке приложений. Наиболее явно эта концепция раскрывается на примере черного ящика (рис. 1).
Рисунок 1 – «Черный ящик»
Физически API-функции представляются в виде отдельного программного модуля, который динамически подключается извне к основному проекту в формате DLL-библиотеки.
В целом, приложения для CATIA можно писать в виде:
1. Макросов *.catvba, cкриптов *.CATScript;
2. Автономных приложений, скомпилированных в *.exe-файл. Можно использовать любой язык программирования, например VB6, C#, Delphi. При этом взаимодействие с CATIA происходит как с COM-объектом;
3. В виде приложений, плагинов, используя CAA-RADE - на С++.
Самый простой вариант - это приложения в виде макросов *.catvba. Cоздать макрос в CATIA можно так: меню Tools / Macro / Macros... Далее на кнопку Macro libraries... / выбрать Library type - VBA projects / Create new library. Потом в этом макросе *.catvba можно добавить модули - кнопкой Create в окне Macros, а также в редакторе Microsoft Visual Basic - модули, формы, классы.
Пример создания макроса для редактирования имен Part’ов.
Sub CATMain()
Dim sel As Selection
Dim i As Long
Dim iProd As Product
Set sel = CATIA.ActiveDocument.Selection
If sel.Count > 0 Then
For i = 1 To sel.Count
If sel.Item(i).Type = "Product" Then
Set iProd = sel.Item(i).Value
MsgBox iProd.Name
End If
Next
End If
End Sub.
Пакет геометрического моделирования – набор библиотек с программным интерфейсом (API), с помощью которого можно пользоваться функциями геометрического (например, твердотельного) моделирования. Многие ведущие CAD-системы (CATIA, Pro/E, NX) построены на основе собственных геометрических ядер (CGM, GRANITE, Parasolid соответственно), тогда как другие (SolidWorks, T-FLEX, ADEM и прочие) построены на основе лицензированных геометрических ядер. Популярными коммерческими ядрами являются Parasolid (от компании UGS), ACIS (Spatial Corp. – дочерней компанией Dassault Systems), GRANITE (PTC). Свободно распространяется в открытом коде ядро Open CASCADE. В таблице для сравнения приведены системы проектирования с описанием используемых ими ядер.
Таблица 1 – Системы проектирования с описанием используемых ими ядер
Ядро | Доступно с | Разработчик | САПР, основанные на ядре |
---|---|---|---|
ROMULUS | 1982 | Shape Data | HP ME30, CAM-I A |
Designbase | 1986 | Ricoh | CADRA, Helix, ICAD, GMSWorks |
ACIS | 1989 | Spatial (Dassault Systemes) | ADEM, Alibre Design, Bricscad, Creo Elements/Direct (частично), IRONCAD, KeyCreator, TurboCAD, SpaceClaim |
Parasolid | 1989 | Siemens PLM Software | IRONCAD, KeyCreator, MicroStation, NX, Solid Edge, SolidWorks, T-FLEX |
SMLib | 1998 | Solid Modeling Solutions | ? |
Open CASCADE | 1999 | OPEN CASCADE (Areva) | CAD-Schroer, FreeCAD |
GRANITE | 2001 | PTC | Creo Elements/Pro (Pro/Engineer) |
SOLIDS++ | 2004 | IntegrityWare | Rhino (частично) |
CGM | 2010 | Dassault Systemes | CATIA V5, V6, SolidWorks V6 |
СATIA изначально использует Visual Basic для приложений (VBA), Однако функциональность VBA ограничена, особенно когда требуется анализ данных и построение графиков. Python - это гораздо более мощный инженерный язык, который работает со многими программами, такими как Microsoft Excel и многими другими. Этот язык программирования имеет ряд преимуществ над другими, используемыми в САПР:
1. интерпретатор Python реализован практически на всех платформах и операционных системах. Первым таким языком был C, однако его типы данных на разных машинах могли занимать разное количество памяти и это служило препятствием при написании переносимой программы. Python же таким недостатком не обладает.
2. расширяемость языка. Это означает, что имеется возможность совершенствования языка любыми программистами. Интерпретатор написан на С и исходный код доступен для любых манипуляций. Написав на C свои дополнения к Python и скомпилировав программу, можно получить "расширенный" интерпретатор с новыми возможностями.
3. наличие большого числа подключаемых к программе модулей, обеспечивающих различные дополнительные возможности:
Однако недостатком Python является сравнительно невысокая скорость выполнения Python-программы, что обусловлено ее интерпретируемостью.
Таким образом, язык Python может продвинуться в сфере программирования в САПР и стать одним из наиболее широко используемых. Этот язык с открытым исходным кодом и может быть свободно загружен без лицензионных ограничений.
Самая первая операция python - импортировать используемые модули. Затем ядро Python пытается подключиться к приложению CATIA, работающему в Windows.
#Импорт питонного модули
импорт ОС из win32com.client импорта диспетчерских
#Подключения к окнам COM
CATIA = диспетчерская ( «CATIA.Application» )
#Опции CATIA видимости
CATIA . Visible = True
Далее, Part’s Sketch создаются в инструментальной среде CATIA Part Design.
#Создать пустую деталь
partDocument1 = CATIA . Документы . Добавить ( «Часть» )
# Создать точку, на которую ссылаются плоскость и эскиз
Xcoord = 100
Ycoord = 100
Zcoord = 100
NewPoint = CATIA . ActiveDocument . Часть . HybridShapeFactory AddNewPointCoord (Xcoord , Ycoord , Zcoord )
Mainbody = CATIA . ActiveDocument . Часть . MainBody
Mainbody . InsertHybridShape ( NewPoint )
#Создать базовую плоскость для эскиза
AxisXY = CATIA . ActiveDocument. Часть . OriginElements . PlaneXY
Referenceplane = CATIA . ActiveDocument. Часть . CreateReferenceFromObject ( AxisXY )
Контрольная точка = CATIA . ActiveDocument . Часть . CreateReferenceFromObject ( NewPoint )
NewPlane = CATIA . ActiveDocument. Часть .HybridShapeFactory . AddNewPlaneOffsetPt ( эталонная плоскость, эталонная точка )
. InsertHybridShape ( NewPlane )
# создать эскизные
наброски1 = CATIA . ActiveDocument . Часть . Тел . Предмет ( "PartBody" ) . Эскизы
reference1 = partDocument1 . часть . OriginElements . PlaneXY
NewSketch = sketches1 . Добавить ( reference1 )
CATIA . ActiveDocument . Часть . InWorkObject = NewSketch
# Нарисовать эскиз
NewSketch . OpenEdition ()
# Начало (H, V) Конец (H, V)
NewLine1 = NewSketch . Factory2D . CreateLine ( 0 , 0 , 0 , 50 )
NewLine2 = NewSketch . Factory2D . CreateLine ( 0 , 50 , 50 , 50 )
NewLine3 = NewSketch . Factory2D . CreateLine ( 50 , 50 , 50 , 55 )
NewLine4 = NewSketch . Factory2D . CreateLine ( 50 , 55 , 150 , 55 )
NewLine5 = NewSketch . Factory2D . CreateLine ( 150 , 55 , 150 , - 5 )
NewLine6 = NewSketch . Factory2D . CreateLine ( 50 , - 5 , 50 , 0 )
NewLine7 = NewSketch . Factory2D . CreateLine ( 50 , - 5 , 75 , - 5 )
NewLine8 = NewSketch . Factory2D . CreateLine ( 150 , - 5 , 125 , - 5 )
NewLine9 = NewSketch . Factory2D . CreateLine ( 125 , - 5 , 125 , 25 )
NewLine10 = NewSketch . Factory2D . CreateLine ( 125 , 25 , 75 , 25 )
NewLine11 = NewSketch . Factory2D . CreateLine ( 75 , 25 , 75 , - 5 )
NewLine12 = NewSketch . Factory2D . CreateLine ( 50 , 0 , 0 , 0 )
NewSketch . CloseEdition ()
Метод, использующий CATIA CAD и язык программирования Python, представлен как метод для улучшения моделирования и анализа путем автоматизации шагов, необходимых для получения результатов моделирования.
В работе исследованы возможности и инструменты создания API в Catia V5. Наиболее эффективным инструментом создания API является Python, т.к. в процессе разработки программного обеспечения он позволяет быстрее создавать CAD, CAM и CAE-системы. Рассмотрены примеры использования языка Python в среде САПР Catia V5 для создания дополнительных модулей и приложений.
1. Д. Зитен . Программирование макросов CATIA V5 с помощью скрипта Visual Basic, McGraw-Hill, 2013.
2. В.Н. Малюх. Введение в современные САПР, М.: ДМК Пресс, 2010.
3. Обзор популярных систем автоматизированного проектирования (cad) [Электронный ресурс]. Режим доступа: https://www.pointcad.ru/novosti/obzor-sistemavtomatizirovannogo-proektirovaniya