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

17/02/2016

Изменение установок Профиля AutoCAD при помощи .NET

Есть много параметров, используемых AutoCAD, которые хранятся в различных частях реестра. Многие из них также можно читать и писать через getenv / setenv в LISP или acedGetEnv / acedSetEnv в ObjectARX и вот так в .NET:

Простая альтернатива использованию COM-объекта Preferences в AutoCAD

Если это не переменная окружения и к ней нет доступа через getenv/setenv к ней можно получить доступ при помощи API Реестра для чтения/модификации значений.
Замечание: если интересующее значение является строчным, тогда к нему можно получить доступ при помощи объекта UserConfigurationManager для чтения/записи:
http://through-the-interface.typepad.com/through_the_interface/2008/05/storing-custom.html

В качестве примера попробуем изменить переключатель "Разрешить уведомления" для печати из .NET.

Если вы хотите выяснить где данная настройка сохраняется в реестре (если она действительно хранится там), то вы можете использовать такой инструмент, как Process Monitor, чтобы увидеть, какое свойство в реестре модифицируется при изменении настройки с помощью пользовательского интерфейса. В случае печати это свойство было найдено здесь:

Так что мы можем его изменить при помощи следующего кода:

Опубликовано 17.02.2016     Читать далее >>>
16/02/2016

Визуализация при помощи RenderToImage API

Как вы возможно уже знаете API графической системы было изменено в AutoCAD 2015, как описано в статье Изменения в графике в AutoCAD 2015. В AutoCAD 2016 рендер RapidRT заменил рендер MentalRay, который использовался в предыдущих версиях. В свете этого в ObjectARX 2016 появился новый класс AcDbRapidRTRenderSettings. Все эти изменения требуют изменений в вашем коде в случае, если вы использовали метод AcGsView::RenderToImage для генерации изображения модели AutoCAD.

Следующий код должен генерировать визуализацию изображения как в AutoCAD 2016, так и в предыдущих версиях. Чтобы учесть различные изменения графической системы и средства визуализации, приведенный ниже код широко использует возможности условной компиляции.

Чтобы попробовать это, откройте чертеж и задайте направление взгляда в AutoCAD, такой как вы хотите для того чтобы генерировать визуализированное изображение. Настройте параметры визуализации и выполните визуализацию в AutoCAD. После того как вас устроят результаты, сделать настройки визуализации текущими. Это должно сохранить предустановки визуализации в качестве активных. Приведенный ниже код, получает параметры на основе активной предустановки, и используют их для создания изображении.

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

Программное создание диалога "Сохрани как..."

Эта статья появилась как результат запроса от пользователя. Здесь я покажу простую реализацию диалога для сохранения файла.

Хотя у нас есть функция acedGetNavDialog, но у неё нет возможности управлять списком форматов чертежей.

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

Интерфейс OData

Особенности работы с интерфейсом OData
Опубликовано 11.02.2016     Читать далее >>>
10/02/2016

Пошаговая инструкция по AutoCAD I/O API

Введение в создание приложений при помощи AutoCAD I/O API
Опубликовано 10.02.2016     Читать далее >>>
09/02/2016

Захват изображения текущего документа AutoCAD с использованием .NET

Эта тема уже несколько раз поднималась в этом блоге, когда мы обсуждали систему 3D графики для захвата изображения и в серии сообщений про плагин месяца "Снимок Изображения" несколько лет назад. Я подумал, что следует её пересмотреть с учетом того, что я не использовал это API раньше.

Опубликовано 09.02.2016     Читать далее >>>
28/01/2016

Вставка определённой страницы PDF-файла в качестве подложки в чертеж.Автор: Александр Ривилис

На форме возник вопрос как можно вставить в dwg-файл конкретную страницу из pdf-файла. По умолчанию вставляется первая (или единственная) страница. Оказалось, что это сделать не сложно. Достаточно задать PdfDefinition.ItemName, указав строковое представление номера страницы. Немного переработанный код из http://adn-cis.org/kak-sozdat-pdf-podlozhku-sredstvami-autocad-net.html будет выглядеть так:

Опубликовано 28.01.2016     Читать далее >>>
27/01/2016

Работа с макросами. Исключения

Опубликовано 27.01.2016     Читать далее >>>
27/01/2016

Как создать pdf-подложку средствами AutoCAD .NET?

PDF подложки представлены классами PdfDefinition и PdfReference classes в AutoCAD .NET API. Вставка подложка (в данном случае PDF) должна ссылаться на совместимое определение подложки. Вставка подложка определяет положение контента в чертеже, определение подложки определяет контент подложки.

Опубликовано 27.01.2016     Читать далее >>>
25/01/2016

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

Группы хранятся как постоянные реакторы в примитиве AutoCAD, так что можно воспользоваться методом DbObject.GetPersistentReactorIds для получения списка групп, с которыми ассоциирован примитив. Следующий код показывает как это можно сделать:

Опубликовано 25.01.2016     Читать далее >>>
22/01/2016

Перебор всех групп в чертеже

Следующий код показывает, как можно перебрать все группы в чертеже при помощи итерации по словарю групп. Этот код так же показывает, как получить все идентификаторы объектов внутри каждой из групп.

Опубликовано 22.01.2016     Читать далее >>>
22/01/2016

Доступ к группам AutoCAD при помощи .NET

Так же, как и у других объектов, у групп есть идентификатор (ObjectId), к которым можно получить доступ при помощи словаря. Этот пример показывает как прочитать этот словарь, и что внутри него есть.

Опубликовано 22.01.2016     Читать далее >>>
19/01/2016

Запуск команд Fusion

Запуск команд Fusion при помощи объекта CommandDefinition
Опубликовано 19.01.2016     Читать далее >>>
18/01/2016

Ошибка 8000 при получении файла из AVFS

Рассматривается причины ошибки 8000 при получении файла из Autodesk Vault Filestore Server и методы её устранения
Опубликовано 18.01.2016     Читать далее >>>
15/01/2016

Ошибочное поведение столбца изображений элемента управления Vault Browser

Рассматривается неправильное поведение столбца изображений элемента управления Vault Browser и метод его обхода
Опубликовано 15.01.2016     Читать далее >>>
15/01/2016

Как получать уведомление об использовании полос прокрутки или зумирования в реальном времени

Есть несколько способов, чтобы получить уведомление в случае, когда экран обновляется при помощи колеса мыши или полос прокрутки.

Самый простым способом может быть субклассирование окна AutoCAD, и отлов всех сообщений WM_VSCROLL, WM_HSCROLL и WM_MOUSEWHEEL. Вы знаете, что экран будет обновляться, когда AutoCAD получит эти сообщения, и вы можете контролировать или фильтровать сообщения AutoCAD путем реализации монитора или фильтра сообщений AutoCAD. Но есть одна загвоздка. В монитор контролируемое сообщение попадёт до того, как AutoCAD отработает его. И на самом деле нет чистого способа для отслеживания сообщений AutoCAD сразу после их обработки AutoCAD. Таким образом, простейшим решением было бы установить таймер с минимальной временной задержкой, который будет использоваться для уведомления о завершении обновления экрана AutoCAD. Это подразумевает, что экран AutoCAD будет обновлен в течение этого времени, так что возможно это значение придётся изменить.

Опубликовано 15.01.2016     Читать далее >>>
14/01/2016

AcquireFiles() не исправляет ссылки на переименованные файлы

AcquireFiles() не исправляет ссылки на переименованные файлы для Autodesk Vault
Опубликовано 14.01.2016     Читать далее >>>
13/01/2016

Хакатон по Fusion 360 - Вопросы и ответы №№7-10

Вопросы и ответы по Fution 360 API в ходе хакатона
Опубликовано 13.01.2016     Читать далее >>>