ADN Open CIS
Сообщество программистов Autodesk в СНГ

10/04/2013

AutoCAD 2014 для разработчиков

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

Во-первых, члены ADN должны тщательно следить (как всегда) за информацией, подготовленной командой DevTech и размещенной в разделе «Events» на сайте ADN. Я надеюсь, что AutoCAD DevBlog сделает многое из этого доступными для более широкой аудитории в ближайшие дни/недели. Почаще заглядывайте туда.

В сегодняшней статье мы будем рассматривать AutoCAD 2014 с точки зрения разработчиков в общих чертах, а затем перейдем к деталям в ближайшие дни/недели.

Двоичная совместимость

Первое, что нужно отметить, это то, что этот релиз совместим с AutoCAD 2013 на уровне двоичных кодов. (Если вы не знаете, что это означает, то эта старинная статья должна вам помочь). Приложения, созданные для AutoCAD 2013 должны работать в AutoCAD 2014. Стоит также отметить, что мы до сих пор используем .NET 4.0 Framework в этой версии AutoCAD.
Читая между строк, вы должны понимать, что для создания AutoCAD 2014 используется компилятор C++ из Visual Studio 2010 (хотя мы используем VS 2012 IDE с набором средств платформы 2010, если это вам интересно). Помимо совместимости приложений, это также DWG совместимый релиз, то есть мы не меняем формат DWG файла в AutoCAD 2014.

Функции безопасности

Хотя это и правда, что существующие приложения для AutoCAD 2013 «должны просто работать» с AutoCAD 2014, но есть важный нюанс. Основываясь на концепции, первоначально введенной в AutoCAD 2013 SP 1.1, AutoCAD 2014 имеет гораздо более строгие модели безопасности для приложений. Они были введены для борьбы с ростом направленных на AutoCAD вредоносных программ (смотрите мой последний класс на Autodesk University). Мы остановимся на этом более подробно в ближайшем будущем, но сейчас вы вероятно,  увидите следующий диалог, когда AutoCAD попытается загрузить DLL с места, которому он не доверяет:

Есть несколько способов решения этой проблемы, чтобы этот диалог не появлялся каждый раз, когда AutoCAD пытается загрузить модуль из ненадежного местоположения:

  • Использовать Autoloader для загрузки модуля
    • Каталоги Autoloader являются доверенными автоматически
  • Сделать цифровую подпись для модуля
    • Подписанные модули являются доверенными автоматически
      • Это не тоже самое, что «подписывание сборки» в Visual Studio, что подразумевает действие по созданию строгого имени для .NET сборки
  • Добавление каталога с модулем к системным переменным TRUSTEDPATHS (или TRUSTEDDOMAINS – смотри ниже)
  • Установить системную переменную SECURELOAD в 0
    • Не делайте этого: это сделает вашу систему уязвимой для атак.

JavaScript API

Это по моему разумению ключевой момент в релизе этого года (для перспектив разработки). Этот «связующий интернет язык» (включая мобильный интернет и развитие кросс-платформенных разработок), JavaScript – это последний язык программирования добавленный в AutoCAD. Я приветствую нашу ориентацию на интернет!

Так же как и с представление AutoCAD .NET API в AutoCAD 2005, мы не смогли сделать это в течение одного релиза. Первый релиз JavaScript API был создан очень целенаправленно, чтобы позволить:

  • Управление пользовательским интерфейсом, такой как запрос пользовательского ввода и показ временной графики
  • Управление текущим видом: зумирование, панорамирование, переключение визуальных стилей, и т.д.
  • Реализация диалогов пользовательского интерфейса с помощью HTML5, которые подключаются к AutoCAD с помощью JavaScript
Так как эти цели связанны с ядром объектной моделью AutoCAD? Вот что реализовано в версии V1:
  • Запросы
  • Временная графика и ввод
  • Динамический ввод (то есть JIG)
  • Управление видом
  • Команды
  • Окна
  • Операции по созданию примитивов и события (реакторы)
  • Слой связанных объектов (BOL)
  • Объект приложения (различные свойства)

Вы можете использовать эти возможности внутри файла JavaScript или HTML страницы и загружать их внутрь AutoCAD при помощи команды WEBLOAD, Application.LoadJSScript() из .NET или acjsLoadJSScript() из ObjectARX.

Скорее всего вы будете реализовать функциональность JavaScript в этой версии AutoCAD путём внедрения HTML5 палитр, которые могут быть загружены в AutoCAD с помощью нового перегруженного метода PaletteSet.Add () (того, который в настоящее время принимает параметр URI). Вам понадобится локальный модуль (написанный на .NET или ObjectARX), чтобы загрузить палитру с использованием этого метода API, но интерфейс сам по себе может быть размещен в любом другом месте и, следовательно, обновить его будет значительно проще.

Для работы со стандартными модальными/немодальными окнами вы должны будете использовать другие протоколы:

  • В .NET: новые перегруженные методы класса Application, ShowModalWindow() и ShowModelessWindow()
  • В ObjectARX: acedShowHTMLModalWindow(), acedShowHTMLModelessWindow() и acedAddHTMLPalette()
  • В LISP: (showHTMLModalWindow) [так он может работать только с модальными окнами]

Так как это только первая версия, то в ней конечно есть еще дыры в реализации API. Для заполнения этих дыр можно использовать дополнительные возможности .NET API (атрибут JavaScriptCallback, чтобы соответствующим образом пометить метод) или ObjectARX (используя функцию acjsDefun()), а затем вызвать эти функции из JavaScript. Функции могут вызываться с передачей любых аргументов. Мы рассмотрим этот механизм более подробно в следующей статье.

Так как теперь стало возможным размещать такие программы в интернете, а не только в локальном каталоге мы добавили системную переменную TRUSTEDDOMAINS (по аналогии с TRUSTEDPATHS для локальных путей), чтобы иметь возможность отметить интернетовские домены как доверенные. Этот список URL не доступен через диалог «Настройка», но может легко добавляться через LISP, т.е.:

(setvar "TRUSTEDDOMAINS"
   (strcat (getvar "TRUSTEDDOMAINS")
            ";through-the-interface.typepad.com")))

или через реестр.

В то время как JavaScript API позволяет нам обеспечить более удобный способ для определенных операций - таких, как например, Acad.Editor.CurrentViewport.zoomWindow (pt1, pt2, true) для зумирования рамкой с анимированнием этой операции – и даже в дополнение к способности централизованного хранения кодов - этого не достаточно, чтобы оправдать разработку и внедрение нового API. План состоит в том, чтобы воспользоваться этой технологией API в будущем. Захватывающие перспективы!

API геолокации

Команда разработчиков AutoCAD Map 3D осуществила ключевые функции в AutoCAD 2014, позволяющие чертежам иметь географическую привязку. Были представлены новые классы AcDbGeoData (в ObjectARX) и GeoLocationData (в AutoCAD .NET API) чтобы позволить добавлять геолокационную информацию в чертеж AutoCAD.

Существуют различные свойства, которые позволяют определить соответствие между координатами чертежа и координатами в реальном мире. Более подробно мы остановимся на этом в  следующих статьях.

VBA 7.1

В AutoCAD 2014 мы обновили версию ядра VBA с 6.3 до 7.1. VBA-прежнему предоставляется в виде отдельного файла, но эта версия теперь имеет встроенную поддержку 64-битных Windows. Мы уговаривали разработчиков в течение некоторого времени переходить от VBA к .NET, в основном из-за того, что Microsoft перестала инвестировать в VBA, да и совместимость и производительность при использовании VBA 6.3 на 64-разрядной ОС оставляла желать лучшего. Теперь в эту технологию вдохнули новую жизнь, что является хорошей новостью, хотя на основе информации, которая была доступна в то время многие люди вложили значительные усилия по портированию приложений из него. Мы все еще считаем, что предпочтительным является использование технологии .NET как лучшей платформы для профессиональной разработки под Windows. Поэтому я надеюсь, что программисты не считают, что эти усилия были потрачены впустую.

Резюме

Это краткое введение в ориентированные на разработчика возможности AutoCAD 2014. В следующих статьях мы углубимся в JavaScript API, создадим простую команду с использованием JavaScript прежде чем создавать простой диалог на HTML5, который можно загрузить в палитру AutoCAD.

Источник: http://through-the-interface.typepad.com/through_the_interface/2013/03/autocad-2014-for-developers.html

Обсуждение: http://adn-cis.org/forum/index.php?topic=52.0

Автор перевода: Александр Ривилис
Опубликовано 10.04.2013
Отредактировано 14.04.2015 в 00:32:27