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

21/07/2016

Как определить направление взгляда для пространста модели с помощью AutoLISP/VisualLISP

Иногда спрашивают, каким образом можно поределить направление взгляда для определенного видового экрана пространства модели. Я обнаружил, что сделать это только средствами LISP'a сложно. Под словом "сложно" подразумевается тот факт, что найти решение без переключения систтемной переменной TILEMODE не удалось. Может быть, кому-то оно и известно - тогда добро пожаловать в обсуждение.
Опубликовано 21.07.2016     Читать далее >>>
21/07/2016

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

Определение блока содержится в BlockTableRecord. Если у блока есть атрибуты, то они содержатся в BlockTableRecord как AttributeDefinition – точно также как и любые другие примитивы.

Когда мы вставляем блок в чертеж (точнее в пространство модели), то мы вставляем BlockReference. Если у блока есть атрибуты, то для всех (кроме постоянных) AttributeDefinition в BlockTableRecord имеются соответствующие AttributeReference присоединённые к BlockReference. Постоянные атрибуты обрабатываются не так, потому что их текст одинаков во всех вставках этого блока (во всех BlockReference). Они находятся в BlockTableRecord, и не имеют соответствующих AttributeReference присоединённых к BlockReference.

Ниже простой C#-код для вставки блока с атрибутами в пространство модели. Создайте чертеж, содержащий блок с именем “CHECK” содержащий несколько атрибутов (часть постоянных, часть нет) для проверки кода.

Опубликовано 21.07.2016     Читать далее >>>
21/07/2016

Как получить имя локализации с помощью ObjectARX

В ObjectARX SDK есть класс AcLocale, при помощи которого можно получить информацию о языке локализации AutoCAD. Класс AcLocale появился только в версии 2017.

Опубликовано 21.07.2016     Читать далее >>>
20/07/2016

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

Представим себе ситуацию - в lisp-программе необходимо получить от пользователя некоторые данные. Не будем сейчас рассматривать экзотические способы вроде написания временных диалогов или обращения к WScript - обойдемся стандартными get*-функциями.
Опубликовано 20.07.2016     Читать далее >>>
16/07/2016

Как определить был ли сохранён dwg-файл в ПО Autodesk или нет

Класс AcDbDatabase содержит метод dwgFileWasSavedByAutodeskSoftware для определения того был ли сохранён dwg-файл в ПО Autodesk или нет. Аналогично в AutoCAD .NET API в классе Database есть свойство DwgFileWasSavedByAutodeskSoftware.
Опубликовано 16.07.2016     Читать далее >>>
16/07/2016

Как позволить пользователю прервать длительную операцию в AutoCAD .NET

Если у вас запущена длительная операция, то вам может понадобится возможность прервать эту операцию (при помощи клавиши ESC). Следующий код работал в AutoCAD 2007…2009, но он продолжает по-прежнему исправно работать и в AutoCAD 2017.
Опубликовано 16.07.2016     Читать далее >>>
04/07/2016

Основы oAuth API Autodesk Forge - часть 1

Рассматриваются основы oAuth API Autodesk Forge
Опубликовано 04.07.2016     Читать далее >>>
28/06/2016

Выполнение подрезки блока или внешней ссылки при помощи .NETАвтор: Александр Ривилис

Вопрос: Как средствами AutoCAD .NET API можно выполнить подрезку блока или внешней ссылки (по аналогии с командой _XCLIP)

Ответ: Для этой цели используется пространственный фильтр (SpatialFilter). Следующий код показывает как выполнить подрезку блока/внешней ссылки при помощи произвольного замкнутого многоугольника:

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

Обзор OAuth API

Общие сведения об OAuth API Autodesk Forge
Опубликовано 27.06.2016     Читать далее >>>
20/06/2016

Fusion API - Изменение внешнего вида тела

Особенности работы с материалом и внешним видом тела при помощи Fusion 360 API
Опубликовано 20.06.2016     Читать далее >>>
18/06/2016

Как сделать команды в плагине недоступными в .NET

Вопрос: Недавно я получил вопрос о том, как сделать недоступными команды из плагина в случае если проверка лицензии неудачна.

Ответ: Один из вариантов – проверить лицензию в методе IExtensionApplication.Initialize() и генерировать исключение если проверка лицензии потерпела неудачу. После генерации исключения ни одна из команд в плагине не будет доступна пользователю.

Опубликовано 18.06.2016     Читать далее >>>
08/06/2016

Как получить цвет солнца

Цвет солнца вычисляется по географическому положению, дате и времени дня.

Начиная с ObjectARX 2017 у нас есть API для получения цвета солнца как из палитры свойств солнца:

Опубликовано 08.06.2016     Читать далее >>>
08/06/2016

API движка AutoCAD I/O

Рассматриваются особенности работы с AutoCAD I/O Engine
Опубликовано 08.06.2016     Читать далее >>>
05/06/2016

Удаление пропущенных внешних ссылок из базы не в редакторе AutoCAD

Ниже вы видите код функции для удаления потерянных внешних ссылок из базы незагруженной в редактор AutoCAD:

Опубликовано 05.06.2016     Читать далее >>>
04/06/2016

Как можно передавать сообщения в Fusion 360 по-русски из C++Автор: Александр Ривилис

Когда я создал тестовое приложение для Fusion 360 на C++ я обратил внимание, что цифры и английские буквы показываются нормально, а вместо кириллицы я увидел абракадабру. При этом в приложении на JavaScript и Python русские буквы воспроизводятся нормально. В чем же проблема? Оказалось, что скрипты JavaScript и Python сохраняются в кодировке UTF8 (если сохранять их в другой кодировке, то русские буквы тоже заменяются на абракадабру), и строки передаются именно в этой кодировке. Значит и в C++ необходимо передавать строки в этой же кодировке. Это можно сделать следующим образом (спасибо за подсказку liujac с форума Autodesk):

Опубликовано 04.06.2016     Читать далее >>>
04/06/2016

Добавление пользовательского меню к фрейму приложения AutoCAD

В AutoCAD 2016 представлен новый класс AdApplicationFrame, который содержит множество API для доступа к фрейму приложения.

В этой статье мы покажем как создать и добавить свое меню вместо существующей строки меню AutoCAD (‘MENUBAR’).

При помощи экземпляра AdApplicationFrame мы можем добавлять MFC-элементы пользовательского интерфейса в наш AutoCAD.

Опубликовано 04.06.2016     Читать далее >>>
30/05/2016

Регистрация lisp-функции как команды

Существует несколько способов вызвать созданную lisp-функцию как обычную команду AutoCAD.
Опубликовано 30.05.2016     Читать далее >>>
27/05/2016

Добавление Stacked Split Button на ленту

Не решился переводить Stacked Split Button. Stacked Items – Элементы на ленте, расположенные в столбец. Split Button – кнопка, которая имеет подпункты в раскрывающемся списке, при этом на саму кнопку тоже можно назначить действия.

Вопрос: На текущий момент, Split Button нельзя создать с помощью метода AddStackedItems. Можно только PushButton, PullButton, ComboBox и TextBox. Можно как-то обойти это ограничение?

Опубликовано 27.05.2016     Читать далее >>>
26/05/2016

Установка величины прозрачности новому материалу с помощью .NET

Чтобы назначить величину прозрачности новому материалу в AutoCAD .NET API используется класс MaterialOpacityComponent. Следующий код добавляет новый материал в Библиотеку материалов с прозрачностью 90.

Опубликовано 26.05.2016     Читать далее >>>
23/05/2016

Отладка AutoCAD 2017 с использованием Visual Studio 2015

В настоящее время разработчики не могут полноценно отлаживать .NET модули в AutoCAD 2017 с использованием VS 2015. Как объясняется в статье Киана Уомсли для VS 2013 http://through-the-interface.typepad.com/through_the_interface/2013/11/debugging-autocad-using-visual-studio-2013.html, обходной путь для этой проблемы – это или включить отладку для машинного кода, или использовать режим совместимости в VS 2015.
Опубликовано 23.05.2016     Читать далее >>>