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

14/03/2014

Когда метод IsEffectivelyErased возвращает True

Для объектов, которые содержатся в базе данных и которые не были сами удалены может быть три причины по которым isEffectivelyErased() может вернуть true:

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

Создание блока с многострочным определением атрибута

Это пример кода, который создает определение блока с многострочным определением атрибута, а затем создает вставку блока из определения блока.

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

Лёгкое программирование под Autodesk Vault. Часть 3Автор: Дмитрий Емельянов

Клиент-серверное общение Vault
Опубликовано 12.03.2014     Читать далее >>>
10/03/2014

Наименование системных семействАвтор: Виктор Чекалин

В Revit существует 2 типа семейств: пользовательские семейства и системные семейства. Пользовательские семейства в большинстве случаев являются редактируемыми и их можно сохранить в отдельный файл семейства (.rfa). С системными же семействами такое проделать не получится. Можно лишь создавать новые типоразмеры системных семейств.

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

Где находятся сборки COM взаимодействия (Interop) ?

Начиная с AutoCAD 2013 мы прекратили регистрацию сборок взаимодействия с COM AutoCAD в Глобальном кэше сборок (GAC). Мы продолжаем поставлять их в составе ObjectARX SDK.

Правильный путь использования этих сборок следующий:

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

Получение изолиний поверхности (Surface)

Это пример кода получающий изолинии вдоль направлений U и V поверхности. Полученные кривые изолиний добавляются в базу данных чертежа.
Опубликовано 10.03.2014     Читать далее >>>
09/03/2014

RevitLookup. Исследуем базу данных RevitАвтор: Виктор Чекалин

В статьях я часто упоминаю о довольно полезной утилите – RevitLookup.

Данная утилита позволяет нам взглянуть на внутреннюю базу данных Revit прямо из пользовательского интерфейса без необходимости писать тестовые надстройки, в которых будем проверять значение каких-либо свойств элемента.

С помощью утилиты мы можем просмотреть:

  • Абсолютно все элементы, которые существуют в базе данных текущего проекта, включая те, которые пользователь никогда не увидит.
  • Значения всех свойств класса элемента.
  • Свойства приложения и открытых документов
  • Распечатать свойства элемента на принтере
Опубликовано 09.03.2014     Читать далее >>>
05/03/2014

Нахождение примитивов под курсором в момент выбора примитивов

Функция обратного вызова PointMonitor в .Net позволяет получить доступ к примитивам, находящимся внутри апертуры курсора, когда пользователь наводит мышь, однако эта возможность заблокирована в момент, когда выполняется Editor.GetEntity.

Существует обходной путь для этой ситуации, который использует P/Invoke для вызова ряда методов ObjectARX. Ниже приводится пример на C#.

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

Получение вложенных примитивов под апертурой курсора с использованием .NET API

Некоторое время назад мне был задан вопрос членом ADN о возможности в реальном времени получать примитивы внутри апертуры курсора, когда пользователь перемещает указатель мыши. Вопрос не сложен пока нас не интересуют вложенные объекты, такие как объекты во внешних ссылках…

Получение примитивов в указанной точке к сожалению не обеспечивается управляемым (.NET) кодом, так что нам придется использовать P/Invoke, и в частности, функции acedSSGet and acedSSName с опцией “:N”. Но эти функции не возвращают вложенные примитивы, а основные как например вставку блока. Чтобы получить вложенные примитивы требуется вызов acedSSNameX, и сигнатура этого метода не слишком интуитивна для вызова P/Invoking из .Net: требуется объявление структуры “resbuf”, а также кусок небезопасного кода для того чтобы сопоставить управляемые и неуправляемые объекты.

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

Включение/выключение привязок

Чтобы включить или выключить привязку во время выполнения кода достаточно установить системную переменную SNAPMODE в 1 или 0.
Опубликовано 28.02.2014     Читать далее >>>
27/02/2014

Список элементов инженерной системыАвтор: Виктор Чекалин

Инженерная система в Revit API описывается классом MEPSystem.

Для того чтобы получить список всех элементов, входящих в систему, достаточно воспользоваться свойством MEPSystem.Elements.

Но, как оказалось, это свойство не всегда возвращает полный список элементов, принадлежащих системе.

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

Работа с профилями AutoCAD через VisualLISP

Евгений Елпанов предоставил очень интересный код, который показывает некоторые возможности работы с профилями AutoCAD через VisualLISP. Известно, что системная переменная "cprofile" имеет доступ "ReadOnly", поэтому обычными средствами профиль AutoCAD'a не сменить.
Опубликовано 27.02.2014     Читать далее >>>
26/02/2014

AutoCAD API для ленты с использованием C++/CLI

Есть уже несколько примеров на блоге иллюстрирующих использование API Ленты с помощью .NET, но пока нет ни одного использующего C++/CLI, так что пусть этот будет первым. Кроме того такой вопрос уже задавался членами ADN в прошлом…
Опубликовано 26.02.2014     Читать далее >>>
25/02/2014

Как получить значение BuiltInCategory для объекта класса CategoryАвтор: Виктор Чекалин

Категории в Revit API определяются двумя различными способами: классом Category и перечислением BuiltInCategory.

 

Если перечисление по сути представляет собой некое целочисленное значение, то класс Category содержит в себе более полную информацию, такую как наименование (локализованное название), подкатегории, а также методы для управления видимостью объектов категории на заданном виде.

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

Как получить список канонических имен для плоттера?

Следующий код позволяет получить правильный размер листа, определенный в диалоге параметров листа.
Опубликовано 24.02.2014     Читать далее >>>
21/02/2014

Загружаем тип линии в неактивный документ

Следующий код загружает типы линий, начинающиеся на литеру 'H' из файла acad.lin во все открытые документы. Заметим что команда должна быть зарегистрирована для контекста приложения (т.е. с флагом ACRX_CMD_SESSION).

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

Решение по созданию стены со смещением

Как вы знаете, при создании стены, ее осевая линия всегда располагается по середине стены.  Мы это обсуждали в статье Структурные слои стены.

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

Совместимость макросов VBA в AutoCAD2014x64

Нередко возникают вопросы, связанные с переходом на AutoCAD 2014 x64 с более ранних версий (или с 32-разрядной версии AutoCAD 2014). Звучит это примерно так: "Мой макрос VBA использует несколько дополнительных контролов (далее OCX) или библиотек типов (TypeLibrary). Макрос прекрасно работал в AutoCAD вплоть до версии 2014. Сейчас макрос выдает ошибку, связанную именно с этими OCX/TypeLibrary"
Опубликовано 20.02.2014     Читать далее >>>