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

13/02/2014

Как реализовать Windows хук с использованием acedRegisterFilterWinMsg в .NET

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

Внутри AutoCAD есть специальный метод для этой цели, который не пересекается со встроенными возможностями Windows, но имеет похожие возможности: acedRegisterFilterWinMsg

Опубликовано 13.02.2014     Читать далее >>>
13/02/2014

Чтение элементов в рабочем пространстве

Рассматривается два основных способа получения элементов в рабочем пространстве
Опубликовано 13.02.2014     Читать далее >>>
12/02/2014

Обработка ошибки при создании не валидного элемента с помощью Failure API

Мы уже ранее обсуждали примеры использования Failure API:

Вот еще одна немного запутанная ситуация, заставляющая нас снова вернуться к обсуждению этой темы с другого ракурса. Проблему озвучил Стефен Фауст (Stephen Faust) из компании Revolution Design, Inc.

Опубликовано 12.02.2014     Читать далее >>>
12/02/2014

Связь надстройки Vault Add-in в AutoCAD 2014

Возможно, вы хотели бы получить подключение к серверу Vault из надстройки Vault Add-in в AutoCAD 2014. В статье приведен пример на VB.NET, который проделывает эту операцию. Пожалуйста, имейте в виду, что этот подход не проходил ни через никакие системы проверки качества (QA) и официально не поддерживается. Тем не менее, в тестах он работает.

Опубликовано 12.02.2014     Читать далее >>>
11/02/2014

Использование стандартных диалогов AutoCAD для выбора цвета, типа линии, веса линии в .NET

AutoCAD имеет ряд удобных диалоговых окон, доступных в пространстве имен "Autodesk.AutoCAD.Windows". Следующий код показывает, как использовать три из них, в частности: ColorDialog, LinetypeDialog и LineWeightDialog. Эти три класса позволяют очень легко реализовать пользовательский интерфейс выбора соответствующих свойств.
Опубликовано 11.02.2014     Читать далее >>>
11/02/2014

Внутренние имена функций в утилите DependencyWalker

Утилита Dependency Walker, доступная www.dependencywalker.com, является “бесплатной утилитой, которая (…) выводит список всех функций, которые экспортируются модулем, и которые могут вызываться другими модулями”.

Для нас это представляет интерес для программирования AutoCAD так как некоторые API недоступны и/или недокументированы, но экспортируются из кода на C++. В этом случае в .NET для вызова этого кода нужно воспользоваться атрибутом DllImport.

Опубликовано 11.02.2014     Читать далее >>>
11/02/2014

Свойства VDF на стороне клиента

В статье рассматриваются интересные возможности VDF: клиентские свойства, с которыми - в отличии от серверных - вы вряд ли знакомы
Опубликовано 11.02.2014     Читать далее >>>
11/02/2014

Используйте | "OR" с DefaultAcquisitionOption для скачивания и получения при помощи AcquireFiles

Любопытная недокументированное возможность функции скачивания файла Vault SDK
Опубликовано 11.02.2014     Читать далее >>>
08/02/2014

Удаление неиспользуемых опорных плоскостей

Как-то во время проведения тренинга по Revit API, участники тренинга придумали вопрос, решение которого можно использовать для демонстрации использования FilteredElementCollector. В результате получилось вполне полезная команда. Необходимо было удалить все опорные плоскости, которые не содержат ни одного элемента. Так я создал команду DeleteUnnamedNonHostingReferencePlanes.

Команда удаляет из проекта все опорные плоскости, которые не имеют названия и не содержат ни одного элемента.

Опубликовано 08.02.2014     Читать далее >>>
07/02/2014

Программное определение дублированных имен .NET команд

Неприятен факт связанный с атрибутом CommandMethod в AutoCAD .NET сборке: в нем может быть две разных команды имеющих одно имя но разные методы. Например, как в следующем коде:
Опубликовано 07.02.2014     Читать далее >>>
05/02/2014

Настройки видимости с использованием параметра GEOM_VISIBILITY_PARAM

В статье обсуждается полезный и интересный пример с форума Revit API, в котором принимали участие  Remy van den Bor из компании ICN Solutions, Rudolf Honke из Mensch und Maschine acadGraph, а также Joe Ye и команда разработчиков Revit. В теме обсуждалось как можно задать настройки видимости элемента в редакторе семейств.

Опубликовано 05.02.2014     Читать далее >>>
04/02/2014

Мастер надстроек Autodesk Vault для Visual Studio

Даниэль Ду (Daniel Du) из ADN создал мастера для Visual Studio 2012? который создаёт и настраивает проект надстройки Vault. Если вы используете Vault API, вы просто обязаны попробовать его.
Опубликовано 04.02.2014     Читать далее >>>
04/02/2014

Сохранение собственных значений на уровне dwg-файлаАвтор: Александр Ривилис

Вопрос:
Есть необходимость хранить в чертеже (dwg-файле) информацию, относящуюся ко всему чертежу. Формат информации – целые или вещественные числа, строки и координаты точек. Необходимо обеспечить соответствие имени переменной (например, Scale) и его значению (например, 1.0). Как это проще и удобнее всего сделать.

Ответ:
Для таких целей удобнее всего использовать Named Object Dictionary (NOD):

Для этой цели в корневом словаре мы создаем дочерний словарь с именем заданным переменной appName и внутри него для каждой из созданных переменных с именем varName будем хранить их значения varValue в примитиве XRecord.

Опубликовано 04.02.2014     Читать далее >>>
03/02/2014

Гиперссылки для атрибутов блоков

В настоящее время гиперссылка для вставки блока не отображается в атрибутах этой вставки блока. Единственный способ, чтобы у атрибутов отображалась гиперссылка – это установить эту гиперссылку для всех атрибутов этого блока, как показано в следующем коде.
Опубликовано 03.02.2014     Читать далее >>>
31/01/2014

Получение/установка путей изображений с помощью .NET API

Для получения и установки путей к файлу изображения используются свойства SourceFileName и ActiveFileName объекта RasterImageDef.

Вот пример кода изменяющий пути к файлу изображения

Опубликовано 31.01.2014     Читать далее >>>
31/01/2014

Пакетное добавление/редактирование элементов Autodesk PLM 360

Рассматриваются вопросы наиболее корректного механизма добавления/редактирования элементов в Autodesk PLM 360.
Опубликовано 31.01.2014     Читать далее >>>
30/01/2014

Легкое создание кнопок на ленте для вызова внешних командАвтор: Виктор Чекалин

Создавая собственную внешнюю команду в интерфейсе Revit ее можно вызвать двумя способами:

Описать внешнюю команду в файле манифеста addin

Код - XML: [Выделить]
 <?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 автоматически добавит команду в раскрывающийся список Внешние инструменты на вкладке Надстройки

Опубликовано 30.01.2014     Читать далее >>>
29/01/2014

Как вставить растровое изображение с помощью .NET API?

Чтобы вставить растровое изображение необходимо сначала создать определение растрового изображения, так как растровое изображение – это только ссылка на определение растрового изображения. Следующий код показывает как открыть существующее определение изображения (т.е.. MY_IMAGE_NAME), а если его нет – создать его и затем создать ссылку на него.
Опубликовано 29.01.2014     Читать далее >>>