Первый слайд презентации: Разработка в среде AutoCAD (давно, много, доступно)
1 Разработка в среде AutoCAD (давно, много, доступно) AutoCAD® - гибкая платформа разработки специализированных приложений для САПР Открытая архитектура позволяет адаптировать AutoCAD под конкретные задачи пользователей. Образцами такой адаптации могут служить, как САПР на базе AutoCAD для различных отраслей, а также около тысячи приложений https://apps.autodesk.com/ACD/en/List/Search?isAppSearch=True&searchboxstore=ACD&facet=&collection=&sort=&query, разработанных участниками сети разработчиков Autodesk®. Средства программирования ObjectARX - Среда программирования (для адаптации и расширения функциональных возможностей AutoCAD и продуктов на его основе). Обеспечивает непосредственный доступ к - структурам базы данных AutoCAD - графической системе - определениям встроенных команд. С помощью объектно-ориентированных интерфейсов программирования на языке C++ разработчики могут создавать приложения для AutoCAD и других продуктов, входящих в это семейство (AutoCAD® Architecture, AutoCAD® Mechanical, AutoCAD® Civil 3D®). Visual LISP - Система разработки приложений на языке Visual LISP® позволяет адаптировать среду исполнения AutoCAD, добавляя в продукт новые функциональные возможности
Слайд 2: Разработка в среде AutoCAD (давно, много, доступно)
2 Разработка в среде AutoCAD (давно, много, доступно) Технология.NET В состав ObjectARX SDK входит также управляемый API, который часто называют AutoCAD.NET API. Для адаптации и расширения возможностей может применяться любой язык программирования, поддерживающий.NET. Язык Microsoft® Visual Basic.NET (VB.NET) - прост в освоении и использовании, и в то же время открывает перед разработчиками приложений весь спектр возможностей ObjectARX. ActiveX (COM-автоматизация) Интерфейс ActiveX® позволяет обращаться к AutoCAD и в автоматическом режиме выполнять в нем необходимые действия посредством механизма COM-автоматизации. Такие обращения возможны, например, из автономных приложений, написанных на Microsoft® Visual C++® или Microsoft.NET Framework, а также из поддерживающих VBA приложений – таких как Microsoft Office. Кроме того, интерфейс ActiveX® могут использовать надстройки для AutoCAD, созданные с помощью Visual LISP, ObjectARX и AutoCAD.NET API.
Слайд 3: Разработка в среде AutoCAD
3 Разработка в среде AutoCAD Программные способы управления AutoCAD из приложения пользователя в наиболее общем виде рассмотрены в работе : Полещук Н.Н. AutoCAD: разработка приложений, настройка и адаптация / СПб.: БХВ-Петербург 2006. 992 с.
Слайд 5: Сложившаяся практика
5 Сложившаяся практика ПО для специализированного проектирования и решения задач с нетривиальными геометрическими моделями или графическими выходными данными целесообразно разрабатывать на основе интеграции с САПР. Как правило программный код пишется только для проведения расчетов, а ввод геометрических данных и визуализацию результатов, включая анимацию динамических процессов, можно «поручить» САПР
Слайд 6: О некоторых технологиях для приложений в САПР на примере AutoCAD
6 О некоторых технологиях для приложений в САПР на примере AutoCAD Три основных подхода : обмен данными в формате DXF (drawing exchange format) COM технологии (ActiveX) прикладной программный интерфейс (API) ObjectARX
Слайд 7
7 DXF- обмен данными (или другие интерфейсы) - доступный, универсальный способ интеграции, но исключает интерактивное управление САПР COM технологии — предоставляют простые, надежные, но не самые быстродействующие механизмы интерактивного управления САПР из внешней программы ( Комбинация с DXF повышает быстродействие COM в случае с AutoCAD ) ObjectARX API и.NET API — низкоуровневые технологии, обеспечивающие наивысшую по сравнению с другими технологиями функциональность и производительность, но имеющие ограничения.
Слайд 8: Передача геометрических данных (dxf ) в программу пользователя и обратно
8 Передача геометрических данных (dxf ) в программу пользователя и обратно Может быть выполнена в текстовых файлах, где геометрические данные записаны в формате dxf. Структура dxf-файла документирована в справочной системе AutoCAD. Данные представлены парами «код-значение»,
Слайд 9: Передача геометрических данных ( в программу пользователя и обратно)
9 Передача геометрических данных ( в программу пользователя и обратно) Пусть требуется прочитать геометрическую модель, состоящую из начерченных в AutoCAD линий. Сохраним файл в AutoCAD с расширением dxf, а затем последовательно (построчно) прочитаем его в собственной программе. Точно также можно записать линии в dxf файл и построить их в AutoCAD.
Слайд 10: Передача геометрических данных ( из пользовательской программы )
10 Передача геометрических данных ( из пользовательской программы ) F:=TStringList.Create; //буфер F.Add(‘0’); F.Add(‘SECTION’); F.Add(‘2’); F.Add(‘ENTITIES’); for i:=0 to high(x1) do begin F.Add(‘0’); F.Add(‘Line’); F.Add(‘8’); F.Add(‘SetOfLines’); //зададим имя слоя F.Add(‘10’); F.Add(FloatToStr( x1[i] )); //координаты начальной точки F.Add(‘20’); F.Add(FloatToStr( y1[i] )); F.Add(‘30’); F.Add(FloatToStr( z1[i] )); F.Add(‘11’); F.Add(FloatToStr( x2[i] )); //координаты конечной точки F.Add(‘21’); F.Add(FloatToStr( y2[i] )); F.Add(‘31’); F.Add(FloatToStr( z2[i] )); end; F.Add(‘0’); F.Add(‘ENDSEC’); F.Add(‘0’); F.Add(‘EOF’); F.SaveToFile(‘F.dxf’); ADoc.ActiveDocument.Import(‘F.dxf’,Point,1); //загрузка в AutoCAD
Слайд 11: Передача геометрических данных ( в программу пользователя и обратно)
11 Передача геометрических данных ( в программу пользователя и обратно) Обмен данными через dxf-файлы имеет ряд преимуществ. - Он стал фактически стандартом обмена файлами чертежей для всех САПР, потому достаточно универсален. - Обработка dxf-файлов может осуществляться с помощью любого языка программирования - Высокое быстродействие (размерность dxf-файла может быть большой, например более миллиона строк). Главным недостатком обмена через dxf-файлы является отсутствие возможности интерактивного взаимодействия пользователя с чертежом.
Слайд 12: COM-технологии
12 COM-технологии AutoCAD, как и другие профессиональные САПР, разработаны с учетом концепции COM (COM — Component Object Model, модель компонентных объектов, объектная модель) фирмы Microsoft Это дает доступ к объектам AutoCAD, их свойствам, методам, событиям из других систем и их приложений и наоборот
Слайд 13: COM-технологии (из AutoCAD в приложение)
13 COM-технологии (из AutoCAD в приложение) Все геометрические примитивы (линии, полилинии, точки) текущего документа (назовем его ADoc ) находятся в коллекции ADoc.ModelSpace. Число примитивов дает свойство ADoc.ModelSpace.Count. Для чтения всех геометрических объектов чертежа из собственной программы достаточно организовать цикл (например, чтение координат всех линий чертежа с помощью COM):
Слайд 14: COM-технологии (из приложения в AutoCAD)
14 COM-технологии (из приложения в AutoCAD) Метод AddLine позволяет нарисовать линию в AutoCAD из собственной программы (Создание примитива линия с помощью COM ): Циклически применяя метод можно нарисовать геометрический объект, состоящих из произвольного числа линий. Получаемый объект новой линии (Line) обеспечивает доступ к ее свойствам, что позволяет изменить цвет, слой и т. д.
Слайд 15: COM-технологии (обобщение)
15 COM-технологии (обобщение) COM обеспечивает необходимый уровень интерактивности поддерживает несколько языков программирования, ( C++, Delphi, Visual Basic, Java). В большинстве сред программирования реализованы модули, упрощающие использование объектной модели (например, каркас ActiveQt для кроссплатформенной IDE Qt). Стандарт COM спроектирован для межпроцессного взаимодействия, поэтому он позволяет разрабатывать внепроцессные (out-ofprocess) приложения, иначе говоря, программа пользователя не является частью процесса AutoCAD, что имеет достоинства и недостатки.
Слайд 16: COM-технологии
16 COM-технологии Главное достоинство — это высокая универсальность. Используя позднее связывание ( COM-вызовы с помощью Invoke интерфейса Dispatch ), можно добиться того, что связывание имен свойств и методов объекта с их кодом происходит не на этапе компиляции, а на этапе выполнения программы, что позволяет использовать одно приложение для всех AutoCAD-совместимых САПР Однако использование механизмов межпроцессного взаимодействия и позднего связывания приводит к значительному снижению производительности (в десятки и сотни раз по сравнению с внутрипроцессными взаимодействиями и ранним связываем, например, построение десятков тысяч линий может занимать минуты)
Слайд 17: COM-технологии
17 COM-технологии В итоге: COM-технологии являются достаточно простым и надежным инструментом для интерактивного обмена графической информацией программы пользователя с любым САПР COM-технологии пригодны как для разработки приложений к САПР, так и использования в обычных программах в качестве альтернативы DXF обмена. Но в задачах с большими графическими данными (тысячи геометрических примитивов и более), которые требуется быстро перестраивать, например, при анимации динамических процессов, подход на основе COM неэффективен из-за низкой производительности. Для разработки профессиональной программы (приложения САПР), с полным доступом к свойствам 3D объектов рекомендуются технологии ObjectARX и.NET.
Слайд 18: Технология ObjectARX
18 Технология ObjectARX Это система разработки программных модулей для среды AutoCAD, создающая самый низкоуровневый код по сравнению с другими средствами автоматизации AutoCAD. https://api-2d3d-cad.com/objectarx/
Слайд 19: Технология ObjectARX
19 Технология ObjectARX Код стороннего приложения исполняется в том же адресном пространстве, что и код AutoCAD, поэтому взаимодействие между ними значительно эффективнее, поскольку данные могут передаваться через указатели, а не через механизм межпроцессного взаимодействия как в COM-приложениях. Модули, разработанные в ObjectARX, работают с основными структурами данных и кодом AutoCAD и имеют доступ непосредственно к графической системе и ядру геометрических построений. В результате достигается высокая функциональность и быстродействие, но при значительно более сложной структуре программы.
Слайд 20: Технология ObjectARX
20 Технология ObjectARX Разработка пользовательских приложений (ARX-приложений) производится с использованием неуправляемого кода на языке C++, т.е. на том же языке, что использован для разработки ядра AutoCAD. Набор разработчика ObjectARX предоставляет специальные библиотеки, а также заголовочные файлы, с помощью которых приложение пользователя получает информацию о типах, классах и объектах AutoCAD.
Слайд 21: Технология ObjectARX
21 Технология ObjectARX Подключая заголовочные файлы в свой код, программа получает возможность взаимодействовать с AutoCAD, а также создавать свои классы и объекты. Например, примитив линия описан классом AcDbLine. Создав объект линии, можно добавить его в пространство модели чертежа, которое представляет собой блок объектов типа AcDbBlockTableRecord. Данные записи, в свою очередь, расположены в таблице блоков AcDbBlockTable, которая, как и все остальные таблицы, принадлежит базе данных чертежа AcDbDatabase. 1 2 3 4
Слайд 22: Технология ObjectARX Алгоритм чтения координат всех линий чертежа
22 Технология ObjectARX Алгоритм чтения координат всех линий чертежа 3 1 2 2 3 1 4
Слайд 23: Технология ObjectARX Алгоритм чтения координат всех линий чертежа
23 Технология ObjectARX Алгоритм чтения координат всех линий чертежа алгоритм чтения координат всех линий чертежа (листинг выше) Первая часть кода служит для получения блока пространства модели ( ACDB_MODEL_SPACE ), в котором хранятся примитивы чертежа. Затем с помощью итератора AcDbBlockTableRecordIterator происходит получение всех примитивов в цикле. При работе с объектами базы данных их требуется открывать с нужными атрибутами ( AcDb::kForRead, AcDb::kForWrite, т.д.) и обязательно закрывать. В случае, если полученный объект имеет тип AcDbLine, он преобразовывается, и получаются его координаты. 1 2 3 1
Слайд 24: Технология ObjectARX Создание примитива линия с помощью ObjectARX
24 Технология ObjectARX Создание примитива линия с помощью ObjectARX 1 1 1 2 3
Слайд 25: Технология ObjectARX Создание примитива линия с помощью ObjectARX
25 Технология ObjectARX Создание примитива линия с помощью ObjectARX Некоторые пояснения Сначала, как и в листинге чтения координат всех линий чертежа, получается блок пространства модели, в который требуется поместить примитив. Затем создается новый объект AcDbLine (линия) со свойствами, принятыми по умолчанию (слой, тип линии, толщина, т.д.). Эти свойства можно изменить. Линия добавляется в блок с помощью метода appendAcDbEntity. Перед открытием объекта для записи необходимо блокировать рабочий документ с помощью метода lockDocument, а в конце разблокировать с помощью unlockDocument. Циклически добавляя примитивы в пространство модели AutoCAD, можно построить геометрические модели, сетки, научную графику или чертежи любой сложности. 1 2 1 2 3
Слайд 26: Технология ObjectARX
26 Технология ObjectARX Высокое быстродействие операций с графическими примитивами и функциональность, обеспечивающая доступ ко всем свойствам, методам, событиям с примитивами, — главное достоинство внутрипроцессных API. Главный недостаток ObjectARX — это требование к бинарной совместимости : пользовательский модуль должен быть создан той же версией компилятора, что и AutoCAD. Компания Autodesk нарушает бинарную совместимость AutoCAD (примерно через каждые 3 выпуска), поэтому требуется создавать и поддерживать несколько версий пользовательских модулей (для разных версий AutoCAD), что усложняет разработку приложений и неудобно для пользователя.
Слайд 27: требуется создавать и поддерживать… Вспомним
27 … требуется создавать и поддерживать… Вспомним https://www.youtube.com/watch?v=yWx0XQV8P7o https://c3dlabs.com/ru/blog/products/c3d-labs-vypustila-c3d-toolkit-2020-dlya-razrabotki-inzhenernykh-3d-prilozheniy/
Слайд 29: Сопоставление технологий
29 Сопоставление технологий Напомним, что технология COM позволяет создавать программы, пригодные для любой версии AutoCAD, и применима для любого САПР. Технология COM допускает выбор языка программирования, в то время как ObjectARX устанавливает язык C++. ObjectARX C++ «заточен» под библиотеку MFC (Microsoft Foundation Classes), использование которой не всегда приемлемо (пакет MFC не входит в бесплатную редакцию Visual Studio Express) Усложнение кода ObjectARX относительно кода COM (сравни листинги выше) также относится к недостаткам с позиции разработчика
Слайд 30: Технология.NET
30 Технология.NET. На основе платформы.NET Framework — еще одно средство разработки низкоуровневых AutoCAD-приложений, имеющее некоторые преимущества перед ObjectARX. В.NET расширен выбор языка программирования (C++, C#, VB.NET и др.). Создаются dll-библиотеки с управляемым кодом (управляемые сборки), что открывает программисту механизмы управления памятью, а также обеспечивает простоту разработки пользовательских интерфейсов (с помощью библиотек, входящих в состав.NET Framework (.NET Windows Forms или.NET Windows Presentation Foundation )). Однако, технология.NET не в состоянии устранить главный недостаток ObjectARX — требование к бинарной совместимости: пользовательский модуль должен быть создан на той же версии целевой платформы.NET Framework, что и AutoCAD. Таким образом, переход от ObjectARX к.NET не носит принципиального характера.
Слайд 31: Самообучение.NET, СОМ и др. — много всего, если нужно, например:
31 Самообучение.NET, СОМ и др. — много всего, если нужно, например: Введение в программирование на AutoCAD.NET (и др. видео серии DevTV, предназначенные для самостоятельного изучения основ программирования Научиться работать с интерфейсом AutoCAD.NET, — онлайн-руководстве AutoCAD.NET Developer's Guide. Тренинг для знающих AutoCAD, но не имеющих опыта в программировании Перейти к тренингу «Моя первая программа» (поможет освоить работу c AutoCAD.NET API и языком программирования Visual Basic.NET ) Учебный курс «Моя первая программа для Inventor» представляет собой самоучитель для знающих Inventor, но не имеющих опыта в программировании (поможет освоить работу с Autodesk Inventor COM API в среде Visual Basic). Перейти к тренингу «Моя первая программа»
Слайд 32: Анализ быстродействия Скорость построения геометрических примитивов в AutoCAD из программы пользователя
32 Анализ быстродействия Скорость построения геометрических примитивов в AutoCAD из программы пользователя
Слайд 33: Комбинация COM с DXF (если приложение для AutoCAD )
33 Комбинация COM с DXF (если приложение для AutoCAD ) Скорость построения линий с помощью dxf сопоставима с ARX-технологией вплоть до 100 000 элементов (рисунок 1), что вполне объяснимо — dxf-файл создается быстро, а его чтение — внутренние операции AutoCAD. Отсюда идея использования dxf-файла в качестве буфера обмена графической информацией между приложением и AutoCAD ( с другой CAD это может не сработать ) Вместо прямого рисования линий (с использование медленных механизмов межпроцессного взаимодействия) запишем их в dxf-файле и загрузим его в AutoCAD (листинг выше), что значительно быстрее. Таким образом, использование dxf-файлов в качестве буфера обмена данными расширяет область применения COM-технологий
Слайд 34: SOLIDWORKS API
34 https://help.solidworks.com/2024/English/api/sldworksapiprogguide/Welcome.htm
Слайд 35: Работа с API КОМПАС-3D
35 Работа с API КОМПАС-3D в комплект поставки КОМПАС входит документация, заголовочные файлы для различных языков программирования Документация оформлена в виде одного CHM файла. Он расположен в каталоге SDK каталога КОМПАС. Например, полный путь к нему может выглядеть так: «C:\Program Files\ASCON\KOMPAS-3D v17\SDK\SDK.chm». В этом файле представлено полное описание всех интерфейсов, их свойств и методов. в комплект поставки КОМПАС входит большое количество примеров программирования (на разных языках) под эту систему. Примеры расположены в том же каталоге, что и документация. Конкретнее в каталоге «SDK», находятся несколько архивов, названия которых соответствуют языкам программирования: «Basic», «C#», «С++» и « Pascal ». В них и располагаются примеры.
Слайд 36: Примеры расположены в том же каталоге, что и документация
36 Примеры расположены в том же каталоге, что и документация. Конкретнее каталог «SDK» включает подкаталог «samples», где находятся несколько архивов, названия которых соответствуют языкам программирования: «Basic», «C#», «С++» и «Pascal». В них и располагаются примеры.
Слайд 37: Кроме того в интернете много пошаговых «тематических уроков»,
37 Кроме того в интернете много пошаговых «тематических уроков», например, «Взаимодействие с КОМПАС посредством COM интерфейсов версии 5» (от автора книги «Разработка приложений под КОМПАС в Delphi»)
Последний слайд презентации: Разработка в среде AutoCAD (давно, много, доступно)
https://www.youtube.com/watch?v=Gj3BznOK5Rc Что такое API и зачем он нужен? Обзор встроенных инструментов API в КОМПАС-3D. Примеры задач, решаемых с помощью API в КОМПАС-3D. 38 Вебинар «API КОМПАС-3D в помощь инженеру!»