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

09/11/2013

Предотвращение удаления примитива

Один из путей для предотвращения удаления примитива – это использование объектного переопределение (overrule). При помощи этого переопределения можно переопределить функционал удаления (“Erase”) таким образом, что примитив нельзя будет удалить.
Опубликовано 09.11.2013     Читать далее >>>
07/11/2013

Использование .NET API для добавления и удаления расширенных данных

Чтение/запись свойства XData экземпляра класса Autodesk.AutoCAD.DatabaseServices.DBObject используется для чтения и установки расширенных данных любого объекта из базы чертежа. Этот пример демонстрирует тоже самое для примитива..
Опубликовано 07.11.2013     Читать далее >>>
06/11/2013

Переопределение точек привязки для вставки блока

При переопределении точек привязки примитива BlockReference, мы можем хотеть отключить все остальные точки привязки, в том числе и те, которые получаются из примитивов, составляющих блок. Для этой цели мы переопределяем метод "IsContentSnappable" класса "OsnapOverrule".

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

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

Удаление вершин 3D-полилинии

Следующий код показывает, как можно удалить указанную вершину у 3D-полилинии. Сначала программа проходится по всем вершинам полилинии и создаёт список вершин для удаления.

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

Редактирование по месту файлов внешних ссылок

Код ниже показывает процедуру редактирования файла внешней ссылки. Для этой цели используется класс “XrefFileLock”, который обрабатывает управление блокировкой файлов внешних ссылок:

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

Управление видимостью Точки в AutoCAD

Системная переменная “PDMODE” управляет отображением примитива Точка в AutoCAD. Эта переменная может иметь значения между 0 и 5, между 32 и 36, между 64 и 68 и между 96 и 100. Это значение можно изменить меняя свойство “Pdmode” для Database.

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

Использование пользовательских данных чертежа в полях

.NET/ObjectARX API позволяет использовать пользовательские свойства в полях. Следующий код показывает, как это сделать на примере пользовательского свойства Адрес (“Address”).

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

Зеркальное отображение примитива однострочного текста (DBText)

Некоторое время назад, когда этого блога еще не было, был написан следующий .NET код для отзеркаливания однострочного текста (DBText), чтобы решить один из запросов от члена AND. Через какое-то время снова возникла необходимость в этом коде. Вы сами сможете увидеть, что он не так прост, как могло бы показаться:

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

Выравнивание примитива по трем точкам

Ниже приведен пример кода, который выравнивает выбранный примитив по трем базовым и трем целевым точкам. Порядок, в котором точки выбираются, показан на картинке. Приведен пример чертежа для проверки кода.

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

Добавление поля, содержащего данные другого примитива

Следующий код показывает как можно добавить поле, которое показывает данные другого примитива (в данном случае площадь полилинии). От пользователя требуется выбрать полилинию и местоположение, в котором создается примитив MText. Этот MText и будет показывать площадь выбранной полилинии.

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

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

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

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

Опубликовано 21.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     Читать далее >>>
09/10/2013

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

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

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

Петля штриховки использующая коллекцию Curve2d

Чтобы создать штриховку информация для создания петли может быть указана как коллекция ObjectId содержащихся в базе примитивов. Тут лучше всего посмотреть эту статью: Создание объектов штриховки с использованием трассировки границ в .NET. Другой путь заключается в работе с одной лишь геометрией без добавления примитивов в базу.
Опубликовано 24.09.2013     Читать далее >>>
20/09/2013

Изменение имени Растрового изображения

В поле «имя» в палитре свойств AutoCAD для Растрового изображения отображается имя из записи словаря, используемого для хранения RasterImageDef в словаре именованных объектов "ACAD_IMAGE_DICT". Чтобы изменить имя Растрового изображения мы создадим новый RasterImageDef и ассоциируем все существующие Растровые изображения с ним. Важно также отключить реакторы растрового изображения перед тем как RasterImageDef будет выгружен и удален.

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

Изменение путей к внешним ссылкам из абсолютных в относительные

Чтобы поменять пути к внешним ссылкам (XREF) из абсолютных в относительные нужно просто изменить строку BlockTableRecord.PathName так, чтобы она определяла относительный путь (или вообще без пути если мы полагаемся на то, что FindFile может найти наш Xref).
Опубликовано 11.09.2013     Читать далее >>>