Как реализовать Windows хук с использованием acedRegisterFilterWinMsg в .NET
Имеется возможность установить хук для сообщений Windows, который на низком уровне перехватывает события в системе, которые производят большинство действий, таких как движение мыши или открытие диалога.Внутри AutoCAD есть специальный метод для этой цели, который не пересекается со встроенными возможностями Windows, но имеет похожие возможности: acedRegisterFilterWinMsg
Чтение элементов в рабочем пространстве
Рассматривается два основных способа получения элементов в рабочем пространствеОбработка ошибки при создании не валидного элемента с помощью Failure API
Мы уже ранее обсуждали примеры использования Failure API:
Вот еще одна немного запутанная ситуация, заставляющая нас снова вернуться к обсуждению этой темы с другого ракурса. Проблему озвучил Стефен Фауст (Stephen Faust) из компании Revolution Design, Inc.
Связь надстройки Vault Add-in в AutoCAD 2014
Возможно, вы хотели бы получить подключение к серверу Vault из надстройки Vault Add-in в AutoCAD 2014. В статье приведен пример на VB.NET, который проделывает эту операцию. Пожалуйста, имейте в виду, что этот подход не проходил ни через никакие системы проверки качества (QA) и официально не поддерживается. Тем не менее, в тестах он работает.
Использование стандартных диалогов AutoCAD для выбора цвета, типа линии, веса линии в .NET
AutoCAD имеет ряд удобных диалоговых окон, доступных в пространстве имен "Autodesk.AutoCAD.Windows". Следующий код показывает, как использовать три из них, в частности: ColorDialog, LinetypeDialog и LineWeightDialog. Эти три класса позволяют очень легко реализовать пользовательский интерфейс выбора соответствующих свойств.Внутренние имена функций в утилите DependencyWalker
Утилита Dependency Walker, доступная www.dependencywalker.com, является “бесплатной утилитой, которая (…) выводит список всех функций, которые экспортируются модулем, и которые могут вызываться другими модулями”.Для нас это представляет интерес для программирования AutoCAD так как некоторые API недоступны и/или недокументированы, но экспортируются из кода на C++. В этом случае в .NET для вызова этого кода нужно воспользоваться атрибутом DllImport.
Свойства VDF на стороне клиента
В статье рассматриваются интересные возможности VDF: клиентские свойства, с которыми - в отличии от серверных - вы вряд ли знакомыИспользуйте | "OR" с DefaultAcquisitionOption для скачивания и получения при помощи AcquireFiles
Любопытная недокументированное возможность функции скачивания файла Vault SDKУдаление неиспользуемых опорных плоскостей
Как-то во время проведения тренинга по Revit API, участники тренинга придумали вопрос, решение которого можно использовать для демонстрации использования FilteredElementCollector. В результате получилось вполне полезная команда. Необходимо было удалить все опорные плоскости, которые не содержат ни одного элемента. Так я создал команду DeleteUnnamedNonHostingReferencePlanes.
Команда удаляет из проекта все опорные плоскости, которые не имеют названия и не содержат ни одного элемента.
Программное определение дублированных имен .NET команд
Неприятен факт связанный с атрибутом CommandMethod в AutoCAD .NET сборке: в нем может быть две разных команды имеющих одно имя но разные методы. Например, как в следующем коде:Настройки видимости с использованием параметра GEOM_VISIBILITY_PARAM
В статье обсуждается полезный и интересный пример с форума Revit API, в котором принимали участие Remy van den Bor из компании ICN Solutions, Rudolf Honke из Mensch und Maschine acadGraph, а также Joe Ye и команда разработчиков Revit. В теме обсуждалось как можно задать настройки видимости элемента в редакторе семейств.
Мастер надстроек Autodesk Vault для Visual Studio
Даниэль Ду (Daniel Du) из ADN создал мастера для Visual Studio 2012? который создаёт и настраивает проект надстройки Vault. Если вы используете Vault API, вы просто обязаны попробовать его.Сохранение собственных значений на уровне dwg-файлаАвтор: Александр Ривилис
Вопрос:
Есть необходимость хранить в чертеже (dwg-файле) информацию, относящуюся ко всему чертежу. Формат информации – целые или вещественные числа, строки и координаты точек. Необходимо обеспечить соответствие имени переменной (например, Scale) и его значению (например, 1.0). Как это проще и удобнее всего сделать.
Ответ:
Для таких целей удобнее всего использовать Named Object Dictionary (NOD):
Для этой цели в корневом словаре мы создаем дочерний словарь с именем заданным переменной appName и внутри него для каждой из созданных переменных с именем varName будем хранить их значения varValue в примитиве XRecord.
Гиперссылки для атрибутов блоков
В настоящее время гиперссылка для вставки блока не отображается в атрибутах этой вставки блока. Единственный способ, чтобы у атрибутов отображалась гиперссылка – это установить эту гиперссылку для всех атрибутов этого блока, как показано в следующем коде.Получение/установка путей изображений с помощью .NET API
Для получения и установки путей к файлу изображения используются свойства SourceFileName и ActiveFileName объекта RasterImageDef.Вот пример кода изменяющий пути к файлу изображения
Пакетное добавление/редактирование элементов Autodesk PLM 360
Рассматриваются вопросы наиболее корректного механизма добавления/редактирования элементов в Autodesk PLM 360.Легкое создание кнопок на ленте для вызова внешних командАвтор: Виктор Чекалин
Создавая собственную внешнюю команду в интерфейсе Revit ее можно вызвать двумя способами:
Описать внешнюю команду в файле манифеста addin
<?xml version="1.0" encoding="utf-8"?><RevitAddIns>
<AddIn Type="Command">
<Text>Command PipeCreation</Text>
<Description>Some description for PipeCreation</Description>
<Assembly>PipeCreation.dll</Assembly>
<FullClassName>PipeCreation.Command</FullClassName>
<ClientId>da5307a6-0182-4f28-8387-dd0de47446ec</ClientId>
<VendorId>ADNCIS</VendorId>
<VendorDescription>http://adn-cis.org </VendorDescription>
</AddIn>
</RevitAddIns>
В этом случае Revit автоматически добавит команду в раскрывающийся список Внешние инструменты на вкладке Надстройки