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
- Запросы
- Временная графика и ввод
- Динамический ввод (то есть 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, т.е.:
(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://adn-cis.org/forum/index.php?topic=52.0
Опубликовано 10.04.2013
Отредактировано 14.04.2015 в 00:32:27