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

22/10/2013

Как показать диалоговое окно редактирования поля (Field) средствами ObjectARX

Вы можете показать диалоговое окно AutoCAD редактирования поля, используя функцию “AcFdUiInvokeFieldDialog”. При помощи этой функции можно показать диалог и вернуть объект поля, выбранный пользователем, переданный как первый параметр. Код ниже показывает как это сделать:

Опубликовано 22.10.2013     Читать далее >>>
21/10/2013

Изменение цвета вложенных примитивов AutoCAD с помощью .NET

Меня спрашивали как изменить цвет всех примитивов внутри блоков.

Следующий код использует рекурсивную вспомогательную функцию для итерирования внутри блоков, изменяющую цвет множества примитивов (не вставок блока – для них простая рекурсия).

Опубликовано 21.10.2013     Читать далее >>>
19/10/2013

Изменение цвета вершины у сети (SubDMesh)

Чтобы назначить цвета вершинам сети (SubDMesh), примитив сети (SubDMesh) должен быть предварительно добавлен в базу данных чертежа, прежде чем вызвать метод "AcDbSubDMesh::setVertexColorArray". Вот пример:

Опубликовано 19.10.2013     Читать далее >>>
17/10/2013

Получение кода поля (field) из объекта Field

Следующая программа показывает процедуру получения кода поля текстового примитива. Сначала она проверяет есть ли поля, ассоциированные с этим текстовым примитивом, при помощи метода “HasFields”. Затем используется метод “GetField” для получения объекта Field, а из него при помощи метода “GetFieldCode” получается код поля.

Опубликовано 17.10.2013     Читать далее >>>
15/10/2013

Получение всех полей (field) примитива AutoCAD

Такие примитивы AutoCAD как MText и Text могут содержать более одного поля. Чтобы получить доступ к этим полям нужно использовать метод “GetChildren”. Код ниже показывает каким образом следует использовать метод “GetChildren”. Чтобы получить объект Field используется метод “GetField” (без параметров).

Опубликовано 15.10.2013     Читать далее >>>
13/10/2013

Обратное преобразование растрового изображения

Вставка блока (BlockReference) предоставляет матрицу преобразования "BlockTransform", которая очень полезна, когда необходимо преобразовать примитив так, чтобы свести на нет последствия перемещения, вращения и масштабирования. А растровое изображение (RasterImage) не предоставляет такой матрицы. Но мы можем её создать сами, зная значения поворота, смещения и масштабирования по X и Y. Вот код примера, который устраняет масштабирование, смещение и поворот выбранного растрового изображения:
Опубликовано 13.10.2013     Читать далее >>>
12/10/2013

Проецирование кривой на поверхность

Ниже пример кода проецирования отрезка на цилиндрическую поверхность. Создаётся цилиндрическая поверхность и отрезок, а затем отрезок проецируется на поверхность. Проекция добавляется в базу чертежа.

Опубликовано 12.10.2013     Читать далее >>>
11/10/2013

Расчленение MText, содержащего управляющие коды

Для того, чтобы расчленить примитив MText на фрагменты его текста можно использовать метод "ExplodeFragments".
Опубликовано 11.10.2013     Читать далее >>>
10/10/2013

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

Вопрос:
Пример “Associative body copy API Sample” из Inventor API Help работает некорректно в случае создания не ассоциативной копии твердого тела, а именно, тело-копия неправильно позиционируется.

Ответ:
Действительно, проблема в том, что преобразование координат, связанное с компонентом в сборке, не учитывается во время копирования объекта SurfaceBodyProxy. Ниже приводится обновленная версия исходного примера, в которой эта проблема учтена.

Действительно, проблема в том, что преобразование координат, связанное с компонентом в сборке, не учитывается во время копирования объекта SurfaceBodyProxy. Ниже приводится обновленная версия исходного примера, в которой эта проблема учтена.

Опубликовано 10.10.2013     Читать далее >>>
09/10/2013

Получение фрагментов текста из примитива MText

Используем метод “ExplodeFragments”, как показано ниже в коде, для разбивки текстовой строки MText на фрагменты. Функция обратного вызова, которая передается методу “ExplodeFragments” вызывается для каждого фрагмента текста примитива MText.

Опубликовано 09.10.2013     Читать далее >>>
27/09/2013

Получение положения мыши (курсора) без события

AutoCAD API реализует интерфейс AcEdInputPointManager.InputPointMonitor который отслеживает любой ввод пользователя, в том числе и перемещение мыши. При помощи API можно отслеживать и сообщения в очереди Windows. Иногда нужно получить текущее положение мыши без наступления какого-либо события. Следующий код демонстрирует как это можно сделать. В действительности достаточно получить текущее положение курсора Windows и преобразовать его в координаты AutoCAD. Следует учитывать также ПСК.
Опубликовано 27.09.2013     Читать далее >>>
27/09/2013

Запуск правил iLogic из внешнего приложения

При работе с объектами iLogic из Inventor AddIn доступ к ним можно реализовать в режиме раннего связывания. Если же требуется получить к ним доступ из внешнего приложения, приходится пользоваться поздним связыванием. Причина кроется в том, что объекты iLogic не являются истинными COM объектами, они в действительности представляют собой обертки для .NET объектов.

Опубликовано 27.09.2013     Читать далее >>>
27/09/2013

Создание перекрытия с отверстиями (продолжение)Автор: Виктор Чекалин

Ранее обсуждался способ создания перекрытия со несколкими границами. В данной статье обсуждается еще один способ, как программно создать такое перекрытие.
Опубликовано 27.09.2013     Читать далее >>>
26/09/2013

Как реагировать на клавиши курсора (без передачи их в AutoCAD) используя ObjectARX?

В ObjectARX вы можете добавить фильтр в функцию обработки окна AutoCAD можно использовать PInvoke для использования этой функциональности в .NET).

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