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

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     Читать далее >>>
19/02/2014

Идеология версий API PLM 360

Описывается логика смены версий и длительность поддержки устаревающих версий
Опубликовано 19.02.2014     Читать далее >>>
19/02/2014

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

Что такое Vault API
Опубликовано 19.02.2014     Читать далее >>>
19/02/2014

Создаем копию текущего документа в новом документе.

Вопрос:
Как можно создать точную копию текущего документа в новом документе?

Решение:
Одно из решений – сначала создание временного файла-шаблона из текущего файла, а затем создание нового чертежа из этого шаблона. Затем шаблон можно удалить. Вот шаги, которые последовательно нужно проделать:

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

Разделение на страницы в PLM 360

Рассматриваются особенности отображения запрошенной информации на страницах
Опубликовано 17.02.2014     Читать далее >>>
17/02/2014

Как оставить видимыми элементы Ленты во время выполнения?

AutoCAD API для работы с Лентой - достаточно удобен для настройки интерфейса. Однако изменения в интерфейсе не являются постоянными. Это значит, что есть ситуации когда требуется дополнительный код для того, чтобы элементы Ленты, созданные через этот API, оставались видимыми: обычно это при переключении Рабочего пространства или когда что-то изменено в командах НПИ (_CUI) и БЫСТРНПИ (_QUICKCUI).

Вот как можно оставить эти элементы видимыми и убедиться, что ваша Лента остается видимой.

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

Подавление команд AutoCAD

Метод acedRegCmds->removeCmd(), работает только с командами, зарегистрированными из ARX приложения. Этим способом нельзя отменить встроенные команды AutoCAD. Команда AutoCAD _UNDEFINE предназначена именно для подавления встроенных команд. Так как после команд _OPEN и/или _NEW команды переопределяются AutoCAD’ом, необходимо вызывать команду _UNDEFINE каждый раз, когда AutoCAD посылает уведомление kLoadDwgMsgвашей программе.
Опубликовано 15.02.2014     Читать далее >>>
14/02/2014

Два различных типа соединений элементов

В Revit очень много элементов имеют взаимосвязь друг с другом.

Мы уже ранее затрагивали пару раз тему работы с объединением элементов:

Опубликовано 14.02.2014     Читать далее >>>