Введение
Современные приложения для расширения функциональных возможностей AutoCAD
Выбор приложения для исследования и решения задачи
Обоснование выбора ObjectARX для написания приложения
Постановка задачи
Реализация приложения
Выводы
Литература
  На данный момент существует огромное количество CAD-систем, которые помогают разработчикам в различных сферах деятельности.
Все эти системы в чём-то схожи между собой, но также имеют существенные отличия, что и затрудняет и инетграцию в рабочий процесс.
Некоторые аспекты, реализованные в одном программном продукте могут оставаться неизученными или не работающими в другом.
Но сейчас разработчики программного обеспечения делают свои продукты гибкими для использования и модернизации, сами способствуя этому.
Поэтому мы можем сделать программный продукт именно таким, каким мы хотим его видеть. Это открывает обширные горизонты для усовершенствования программного обеспечения. «Подсчитано, что за предыдущее десятилетие более двухсот тысяч конструкторов в корне поменяли свой подход к процессу проектирования, перейдя от двумерных САПР к трехмерным, реализующим идею генерации компьютерных моделей с твердотельными свойствами.
Растущая конкуренция и необходимость сокращения сроков проектирования привели к тому, что это движение, вначале напоминавшее тонкий ручеек, превратилось в мощный поток. За последние два года на трехмерное проектирование перешло столько организаций, сколько за все десять лет существования этой технологии.
Система автоматизированного проектирования, САПР — автоматизированная система, реализующая информационную технологию выполнения функций проектирования, представляет собой организационно-техническую систему, предназначенную для автоматизации процесса проектирования, состоящую из персонала и комплекса технических, программных и других средств автоматизации его деятельности.
В настоящее время существует множество графических редакторов и программ геометрического моделирования. Система AutoCAD является лидирующей в мире платформой программного обеспечения систем автоматизированного проектирования. AutoCAD характеризуется, с одной стороны, мощностью и гибкостью, с другой – предельно четкой фокусировкой на максимальной производительности. Кроме этого, эту полностью расширяемую и адаптируемую систему можно использовать в самых разных отраслях.
AutoCAD позволяет организовывать выполнение программ как в нем самом, так и получать доступ к объектам чертежа из внешних приложений (через модель OLE или через технологии .Net сборок)
Основные технологии автоматизации это:
Autolisp – язык, на котором можно создавать свои скрипты для системы.
VBA – возможно написание приложений на VBA - для ряда задач (сбор и агрегация данных) это быстрый в написании способ.
ARX – технология для написания приложений для AutoCAD на С++.
Доступ к объектам из внешних программ. (C# ,VB, Или просто из Excel через VBА).
  ObjectARX SDK — дополнение к среде разработки Microsoft Visual Studio и содержит специальные библиотеки, заголовочные файлы, примеры и вспомогательные инструменты, предназначенные для создания программ функционирующих исключительно в среде AutoCAD. ARX-приложения могут напрямую обращаться к базе данных рисунка и геометрическому ядру. Можно создавать собственные команды, аналогичные стандартным командам AutoCAD.» [1]
  «Популярность AutoCAD в мире обусловлена весьма развитыми средствами разработки и адаптации, которые позволяют создавать специализированные приложения, такие как AutoCAD Mechanical, AutoCAD Electrіс, AutoCAD Architecture, GeoniCS, Promis-e, PLANT-4D, AutoPLANT, СПДС GraphiCS, MechaniCS и другие. Всего в мире насчитывается более 10000 коммерческих продуктов основанных на AutoCAD.
Макрокоманды Макрокоманды (макросы) в AutoCAD являются одним из самых простых средств адаптации, доступных большинству пользователей. Макросы AutoCAD не следует путать с макросами, создаваемыми посредством VBA.
Action Macros Action Macros впервые появились в AutoCAD 2009. Пользователь выполняет последовательность команд, которая записывается с помощью инструмента Action Recorder. Записанный макрос можно отредактировать и сохранить, а впоследствии перенести на панель инструментов, либо запускать из специального меню.
Menu Macros Пользователь имеет возможность создавать собственные кнопки, с помощью которых можно вызывать заранее записанные по определённым правилам серии команд (макросы). В состав макросов можно включать выражения, написанные на языках DIESEL и AutoLISP.
DIESEL DIESEL (Direct Interprietively Evaluated String Expression Language) — язык оперирования строками с небольшим количеством функций (всего 28 функций). Он позволяет формировать строки, которые должны иметь переменный текст, зависящий от каких-либо условий. Результат выводится в виде строки, которая интерпретируется системой AutoCAD как команда. Язык DIESEL используется в основном для создания сложных макрокоманд в качестве альтернативы AutoLISP. Особое значение данный язык имеет для версии AutoCAD LT, в котором отсутствуют все средства программирования, за исключением DIESEL. Язык DIESEL впервые появился в AutoCAD R12.
Visual LISP Visual LISP — среда разработки приложений на языке AutoLISP. Иногда под названием Visual LISP подразумевают язык AutoLISP дополненный расширениями ActiveX. Среда разработки Visual LISP встроена в AutoCAD начиная с версии AutoCAD 2000. Ранее (AutoCAD R14) она поставлялась отдельно. Среда разработки содержит язык AutoLISP и язык DCL, а также позволяет создавать приложения, состоящие из нескольких программ. Несмотря на название, Visual LISP не является средой визуального программирования.
AutoLISP AutoLISP — диалект языка Лисп, обеспечивающий широкие возможности для автоматизации работы в AutoCAD. AutoLISP — самый старый из внутренних языков программирования AutoCAD, впервые он появился в 1986 году в AutoCAD 2.18 (промежуточная версия). В AutoLISP реализовано тесное взаимодействие с командной строкой, что способствовало его популяризации среди инженеров, работающих с AutoCAD.
Расширения ActiveX для AutoLISP Расширения ActiveX значительно увеличивают функциональность AutoLISP, добавляют возможность работы с файлами, реестром и возможность связи с другими приложениями. Дополнительные расширения работают напрямую с объектной моделью AutoCAD посредством функций ActiveX. Впервые технология ActiveX была внедрена в AutoCAD R14.
DCL DCL (Dialog Control Language) — язык разработки диалоговых окон для приложений, написанных на языке AutoLISP. Впервые DCL был введён в AutoCAD R12 и с тех пор не претерпел существенных изменений. Для разработки диалоговых окон не используется визуальное программирование и возможности создания диалоговых окон существенно ограничены. Для устранения указанных недостатков и расширения возможностей AutoLISP сторонними разработчиками созданы альтернативные среды для разработки диалоговых окон, такие как ObjectDCL, OpenDCL и некоторые другие.
AutoCAD VBA В AutoCAD начиная с версии R14 введена поддержка VBA (Visual Basic for Application). В отличие от VisualLISP VBA является визуальной средой программирования, однако приложения VBA работают с AutoCAD только посредством ActiveX, а с AutoLISP взаимодействие сильно ограничено. Достоинствами VBA является более полная поддержка ActiveX и возможность загрузки DLL-библиотек. Тем не менее, в версию AutoCAD 2010 среда разработки VBA не включена по умолчанию. Autodesk постепенно отказывается от поддержки VBA в AutoCAD, отдавая приоритет .NET, о чём сообщается в официальном руководстве по .Net API AutoCAD.
ObjectARX ObjectARX SDK — дополнение к среде разработки Microsoft Visual Studio и содержит специальные библиотеки, заголовочные файлы, примеры и вспомогательные инструменты, предназначенные для создания программ функционирующих исключительно в среде AutoCAD. ARX-приложения могут напрямую обращаться к базе данных рисунка и геометрическому ядру. Можно создавать собственные команды, аналогичные стандартным командам AutoCAD. Впервые пакет ObjectARX был реализован для AutoCAD R13, ранее существовали аналогичные по назначению пакеты ADS (для AutoCAD R11) и ARX (для AutoCAD R12). Обозначение версий ObjectARX совпадает с обозначениями версий AutoCAD для которых предназначен данный пакет. Программы созданные для одной конкретной версии AutoCAD несовместимы с другими версиями. Проблема совместимости, как правило, решается перекомпиляцией программы в соответствующей версии ObjectARX.
.NET Благодаря поддержке Microsoft .NET Framework существует возможность создания приложений для AutoCAD в любой среде разработки приложений, поддерживающих данную технологию.»[2]
   «Приложение ObjectARX - динамически загружаемая библиотека (DLL), использующая адресное пространство AutoCAD и посылающая ему прямые функциональные запросы. Можно добавлять новые классы к среде программы ObjectARX и экспортировать их для использования другими программами.
Создаваемые ObjectARX-объекты фактически неразличимы от встроенных объектов AutoCAD. Вы можете также расширить протокол ObjectARX, прибавляя функции во время выполнения сеанса AutoCAD.
ObjectARX среда программирования обеспечивает объектно-ориентированный C++ прикладной программный интерфейс для разработчиков, чтобы использовать, настраивать, и расширять AutoCAD. ObjectARX библиотеки включают различный набор инструментальных средств для прикладных разработчиков, чтобы воспользоваться преимуществом открытой архитектуры AutoCAD, обеспечивая прямой доступ к структурам базы данных AutoCAD, графической системе, и коренным определениям команд. Кроме того, эти библиотеки разработаны с возможностью интерфейса с VLisp и другим прикладным языкам программирования так, чтобы разработчики могли выбирать инструментальные средства программирования.
Как разработчик, можно использовать ObjectARX, чтобы выполнить следующие задачи:
• Обращение к базе данных AutoCAD
• Взаимодействие с редактором AutoCAD
• Создание интерфейса пользователя, использующее MFC
• Поддержка многодокументной среды
• Создание заказных классов
• Формирование комплексного приложения
• Взаимодействуют с другими средами программирования
  Рисунок AutoCAD – это коллекция объектов, сохраненных в базе данных. Некоторые из основных объектов базы данных - объекты, таблицы идентификаторов, и словари. Объекты - специальный вид базы данных, имеют графическое представление в пределах рисунка AutoCAD. Строки, круги, дуги, текст, регионы, сплайны, и эллипсы - примеры объектов. Пользователь может видеть объект на экране и может управлять им.
Таблицы идентификаторов и словари - контейнеры, которые сохраняют объекты базы данных. Оба контейнерных объекта отображают строку имени к объекту базы данных. База данных AutoCAD включает фиксированный набор таблиц идентификаторов, каждая из которых содержит образцы специфического класса отчета таблицы идентификаторов.»[3]
Pисунок 1 – База данных AutoCAD
   ObjectARX – наиболее гибкая и функциональная библиотека для взаимодействия приложения с AutoCAD. Она позволяет полностью охватить рабочую область, сохранять переменные и объекты в базу данных, что дает преимущество в вычислениях при решении данной задачи. Также возможна визуализация данного приложения с помощью API, что создаст удобства пользователю в работе с данным приложением.
  Если плоскость Ф пересекает все образующие поверхности конуса вращения, т.е. если Ф>а, то линией сечения является эллипс В этом случае секущая плоскость не параллельна ни одной из образующих поверхности конуса.
В частном случае (Ф=900) такая плоскость пересекает поверхность конуса по окружности ; и сечение вырождается в точку, если плоскость проходит через вершину конуса.
Если плоскость Ф параллельна одной образующей поверхности конуса, т.е. Ф=а, то линией пересечения является парабола. В частном случае (плоскость является касательной к поверхности конуса) сечение вырождается в прямую.[4]
Рисунок 2 – Линии сечения конической поверхности
  В работе будут рассматриваться случаи, в которых результатом пересечения будут являться гипербола и парабола.
Рисунок 3 – Образование параболы секущей плоскостью. (анимация: 50 кадров, 5 секунд, объём - 239 кб)
  Вводом новой системы координат можно привести уравнения кривых второго порядка к стандартному каноническому виду. Параметры канонических уравнений весьма просто (рис 4).
Рисунок 4 – Канонические уравнения гиперболы и параболы
  Приложение будет реализовано с помощью Microsoft Visual C++ с использованием библиотеки ObjectARX. Будет создан API интерфейс пользователя, с помощью которого он будет взаимодействовать с системой. ObjectARX открывает прямой доступ к базам данных AutoCAD, графической системе и всей системе команд. Следовательно, появляется возможность разрабатывать программы для взаимодействия со средой проектирования, создавать любые графические интерфейсы пользователя, обращаясь к библиотеке MFC, создавать программы с многооконными интерфейсами, формировать собственные классы и протоколы взаимодействия, взаимодействовать с другими программными средами и внешними устройствами. «Таким образом, ObjectARX позволяет создавать программы любой сложности. По функциональным возможностям он в несколько раз превосходит AutoLisp, DCL и VBA. Этот язык программирования позволяет написать и простой скрипт, и инструменты перепрограммирования ядра AutoCAD, а также взаимодействия с внешними устройствами. На ObjectARX и Visual C++ написаны Autodesk Mechanical Desktop, Autodesk Land Desktop, Autodesk Map, Autodesk Civil Design и многие другие приложения к AutoCAD. AutoCAD с его широким набором инструментов программирования исключительно перспективен в плане расширения функциональных возможностей. Рассмотренные языки программирования позволяют модифицировать этот программный комплекс, приспособив его возможности к решению специфических задач в любой области. При разработке программы следует учитывать следующие два важных фактора. Первый – необходимость быстрого написания программного кода, второй – быстродействие создаваемой программы. Если более существенным представляется первый фактор, можно и нужно использовать совместный подход к написанию: параллельно задействовать все языки, упомянутые выше, и получить комплексный код программы. При этом используется определенный язык программирования, который позволяет выполнить задачу наиболее удобно и быстро. Если же преобладают соображения быстродействия, следует отдать безусловное предпочтение языкам C++, Assembler и ARX.»[5]
  «ObjectARX открывает прямой доступ к базам данных AutoCAD, графической системе и всей системе команд. Следовательно, появляется возможность разрабатывать программы для взаимодействия со средой проектирования, создавать любые графические интерфейсы пользователя, обращаясь к библиотеке MFC, создавать программы с многооконными интерфейсами, формировать собственные классы и протоколы взаимодействия, взаимодействовать с другими программными средами и внешними устройствами.
Таким образом, ObjectARX позволяет создавать программы любой сложности. По функциональным возможностям он в несколько раз превосходит AutoLisp, DCL и VBA. Этот язык программирования позволяет написать и простой скрипт, и инструменты перепрограммирования ядра AutoCAD, а также взаимодействия с внешними устройствами. На ObjectARX и Visual C++ написаны Autodesk Mechanical Desktop, Autodesk Land Desktop, Autodesk Map, Autodesk Civil Design и многие другие приложения к AutoCAD.
Описанное позволяет сделать следующие выводы:
1. Используя современные языки программирования, можно существенно дополнить возможности базового программного обеспечения.
2. Четкое представление о возможностях каждого из языков позволяет оптимизировать процесс создания прикладных программ.
3. Каждый из языков наилучшим образом соответствует вполне определенным задачам:
- AutoLisp – автоматизация процесса подготовки проектирования, создание новых команд, получение и сохранение информации по текущему чертежу, создание скриптов и изменение информации в текущем файле;
- VBA – изменение и дополнение графического интерфейса пользователя, создание новых команд, объединение Windows-программ и AutoCAD в единый комплекс;
- ObjectARX – дополнение AutoCAD новыми объектами, классами, протоколами, методами и механизмами обработки информации; установление связи AutoCAD с различными системными событиями и внешними устройствами.
При разработке программы следует учитывать следующие два важных фактора. Первый – необходимость быстрого написания программного кода, второй – быстродействие создаваемой программы. Если более существенным представляется первый фактор, можно и нужно использовать совместный подход к написанию: параллельно задействовать все языки, упомянутые выше, и получить комплексный код программы. При этом используется определенный язык программирования, который позволяет выполнить задачу наиболее удобно и быстро. Если же преобладают соображения быстродействия, следует отдать безусловное предпочтение языкам C++, Assembler и ARX.
Примеры программ для программистов можно найти на официальном сайте разработчика AutoCAD и соответствующих форумах.
AutoCAD с его широким набором инструментов программирования исключительно перспективен в плане расширения функциональных возможностей. Рассмотренные языки программирования позволяют модифицировать этот программный комплекс, приспособив его возможности к решению специфических задач в любой области.»[6]
Autodesk Inventor, "Пять веских причин для перехода на твердотельное моделирование", По материалам Autodesk, Inc [Электронный ресурс]. - www.inventor.ru/articles/article_15135.html.
Финансовый Глоссарий FXGlossary, "Что такое AutoCAD", По материалам ru.wikipedia.org [Электронный ресурс]. - http://www.fxglossary.org.ua/index.php?l=A&w=AutoCAD.
Autodesk Inc., ObjectARX ™, AutoCAD ® Среда программирования Библиотеки C++ [Электронная книга]. - ObjectARX_Среда программирования Библиотеки C++.
Начертательная геометрия, Лекция №8 часть 2, Конические сечения [Электронный ресурс]. - http://dvoika.net/education/Graphbook/book/lekcii/L-008_1.htm.
Донченко, М., Рябенький, О. Особенности использования программных средств для модификации AutoCAD CADmaster, №5(25) 2004 [Электронный ресурс]. - http://csf.ru/file/sYXlHXiBfCwHzPPd8296466/cm_25_autocad.pdf.
Autodesk AutoCAD, Tidvell J. Designing User Interfaces. – USA, 2006. – 416p [Электронный ресурс]. - http://www.autodesk.ru/adsk/servlet/index?siteID=871736&id=12306406.
Autodesk Inc., ObjectARX ™, AutoCAD ® Среда программирования Библиотеки C++ [Электронная книга]. - ObjectARX_Среда программирования Библиотеки C++.
AutoCAD — инструмент архитектора и проектировщика для профессионального проектирования [Электронная книга]. - http://samouchka.net/ebooks/cadcae/bookautocad/9588-autocad-2008-dokumentacija.html
Mатематические методы задания кривых [Электронный ресурс]. - http://www.doc.ic.ac.uk/~dfg/graphics/GraphicsLecture09.pdf.
Начертательная геометрия, Лекция №8 часть 2, Конические сечения [Электронный ресурс]. - http://dvoika.net/education/Graphbook/book/lekcii/L-008_1.htm.