Доступ к Revit из внешнего приложенияАвтор: Виктор Чекалин
Как известно, официального API для доступа к Revit из внешнего приложения не существует.
Тем не менее, можно реализовать его самостоятельно, хоть и с некоторыми ограничениями.
Обращаться к методам Revit API можно только в определенных контекстах:
- открытие/закрытие приложения (IExternalApplication.OnStartup и IExternalApplication.OnShutdown)
- Выполнение внешней команды (IExternalCommand.Execute)
- Событие Idling (UIApplication.Idling)
- Внешние события (ExternalEvents)
Ни один из этих способов недоступен вне приложения Revit.
Определение прерывания команды при выполнении acedCommandC
Выполнение команд в AutoCAD сейчас возможна двумя способами вместо одного варианта функции acedCommand. Функция acedCommandS проще для использования, но требует задания сразу всех параметров, которые необходимы AutoCAD для завершения команды и без ввода данных пользователем. При выполнении команды при помощи функции acedCommandS её нельзя прервать.Функция acedCommandC используется в том случае когда может возникнуть необходимость паузы для ввода данных пользователем. Тут возможно прерывание пользователем выполнения команды вместо ввода данных. Чтобы идентифицировать это событие в коде используются функции "acedCmdCWasCancelled" и "acedCallBackOnCancel". Так же в силу асинхронности функции acedCommandC, завершение команды может быть идентифицировано только в функции обратного вызова, как в следующем коде.
Зумирование до границ окна с использованием CommandASync
В этой статье я проиллюстрирую пример использования AutoCAD 2015 API "Editor.CommandAsync".Вопрос: Можно ли зумировать в пределах окна до тех пор пока не будет нажата кнопка ESC или отмена?
Ответ: Да. Это возможно с помощью CommandAsync.
Внутри палитр инструментов AutoCAD. Подводя итоги...
Подведем некоторые итоги "разбора" состава палитр инструментов. Что необходимо делать, если самостоятельно создавать инструмент синхронизации серверных палитр у десятков / сотен пользователей?Добавление значка к курсору в AutoCAD 2015 с помощью .NET
В AutoCAD API 2015 появилась возможность добавлять свой значок к курсору.
Следует отметить, что значок курсора – это BITMAP-объект. Для того, чтобы у вас был прозрачный фон помните, что в качестве прозрачного фона AutoCAD использует пикселы (R=192, G=192, B=192)
Я решил добавить значок курсора в одной команде и удалить его в другой – для того чтобы увидеть как это будет работать в начале выбора примитивов и в других случаях - но более характерно добавлять значок при запуске JIG и удалять его сразу после его завершения.
Идентификаторы элементов в Revit. Часть 2
Продолжаем серию статей об идентификаторах в Revit
Часть 1: Уникальный идентификатор (UniqueId) или числовой (Element.Id)
Уникальность уникального идентификатора UniqueId
Внутри палитр инструментов в AutoCAD часть 3 - Удаление инструментов и палитр.
Мы уже разобрали, что происходит при добавлении каталога и при объединении палитр инструментов в группы. Предлагаю разобрать ситуацию удаления инструментов из палитры или целиком палитры.Идентификаторы элементов в Revit. Часть 1
Начнем небольшую серия статей о различных идентификаторах элемента, существующих в Revit.
Некоторый из идентификаторов существуют уже давным-давно, некоторые же появились относительно недавно.
Внутри палитр инструментов AutoCAD часть 2 - Объединение в группы
В прошлой части мы добавляли каталоги палитр. Попробуем разобраться с группировкой палитр.Внутри палитр инструментов AutoCAD часть 1 - Подключение дополнительного каталога
Что происходит, когда пользователь (ну или программист - неважно) подключает дополнительный каталог палитр? Где и как это фиксируется? А если в файлы палитр вносить изменения, чего будет?Определение размера и месторасположения видов на листе
Рассмотрим, как можно определить размер и месторасположение листа и всех видов на нем.
В предыдущих версиях Revit сделать это было довольно проблематично.
Вот несколько статей на эту тему:
- Список всех листов и видов на нем – CmdListViews (на англ.)
- Определение размера листа – CmdSheetSize (на англ.)
- Определение месторасположения вида на листе (на англ.)
- Точное позиционирование видового экрана (на англ.)
Как определить, находится ли точка внутри зоныАвтор: Виктор Чекалин
Не-DWG окна в AutoCAD 2015 с использованием .NET
AutoCAD 2015 позволяет создавать Не-DWG окна документов. Такие Не-DWG окна документов появляются как вкладки наряду с другими окнами документов чертежей.В конце этой статьи я приложил готовый C# проект для создания Не-DWG окна документа и демонстрации его использования.
Не-DWG окна в AutoCAD 2015
AutoCAD 2015 позволяет создавать Не-DWG окна и попросту окна содержащие не dwg-файлы. Не-DWG окна появляются как вкладки точно так же, как и обычные окна с чертежами.В конце этой статьи вы найдете ссылку на скачивание готового C++ проекта для создания Не-DWG окна и показа как его использовать.
Autodesk Exchange Apps - Вопросы и Ответы
Ниже приведены ответы на наиболее частые вопросы от разработчиков, публикующих приложения в Autodesk® Exchange AppsОпределение категорий, поддерживающих привязку параметра типа или экземпляра
Вопрос: Я могу получить список категорий, поддерживающих привязку общих параметров, например, с помощью такого кода:
SortedList<string, Category> CatList= new SortedList<string, Category>();
Categories cats = doc.Settings.Categories;
foreach( Category cat in cats )
{
if( cat.AllowsBoundParameters )
{
CatList.Add( cat.Name, cat );
}
}
Но как мне из этого списка понять, поддерживает ли категория привязку параметра типа или экземпляра?
Где сейчас можно найти инсталляционные пакеты VBA для старых версий AutoCAD?
Где сейчас можно найти инсталляционные пакеты VBA для старых версий AutoCAD? К сожалению, с нынешнего момента невозможно загрузить пакеты VBA для AutoCAD 2011-2013UNDO удаляет обновленные записи словаря
У меня есть команда, которая добавляет новую запись в Словарь Именованных Объектов (NOD) или обновляет значение существующего.
Проблема в том, что когда я запускаю команду дважды (во второй раз запись уже есть, так что в этот раз только обновляется ее значение) и когда мы запускаем команду _UNDO, тогда вместо того, чтобы вернуть предыдущее значение записи NOD, она удаляется полностью.
Лёгкое программирование под Autodesk Vault. Часть 16Автор: Дмитрий Емельянов
Управление ролями и группами пользователей при помощи Autodesk Vault API.Серилизация класса .NET в базу чертежа AutoCAD
Вопрос:Я хотел бы выполнить серилизацияю моего .NET класса в чертеж AutoCAD, так чтобы я мог воссоздать этот класс (десерилизация его), когда чертеж снова открывается. Как можно это сделать?
Ответ:
Вы можете использовать средства серилизации .NET вашего класса в двоичный поток, а затем можно сохранить в кучу бинарных кусков. Вы можете сохранить в XData объекта или в Xrecord.Data примитива или в объект в Словаря Именованных Объектов (NOD). DevNote TS2563 рассказывает нам отличия в использовании XData и Xrecord. Если вы сохраняете в XData, тогда ResultBuffer должен начинаться с имени зарегистрированного приложения REGAPP. Вот пример, который это показывает: