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

26/06/2014

Установка набора предварительного выбора в .NET API

Вы можете воспользоваться методом Editor.SetImpliedSelection для установки набора предварительного выбора (выбора с ручками). Ниже код команды, которая запрашивает у пользователя выбрать примитивы и устанавливает набор предварительного выбора. Обратите внимание на флаги команды, которые являются обязательными для установки pickfirst :
Опубликовано 26.06.2014     Читать далее >>>
25/06/2014

Итерация системных переменных AutoCAD через .NET, часть 2

В предыдущей части был предоставлен код, показывающий реализацию двух доступных механизмов итерации по системным переменным AutoCAD: SystemObects.Variables и новый класс SystemVariableEnumerator.
Опубликовано 25.06.2014     Читать далее >>>
25/06/2014

Итерация системных переменных AutoCAD через .NET, часть 1

Просматривая документацию по .NET API AutoCAD (раздел "Что нового"), можно увидеть новый класс SystemVariableEnumerator. Это очень интересно, поскольку уже есть способ получить системные переменные AutoCAD'a, используя коллекции...
Опубликовано 25.06.2014     Читать далее >>>
24/06/2014

Вставка блока из другого DWG-файла с помощью .NET

С помощью метода WblockCloneObjects() можно скопировать блок из одного чертежа в другой. Код на C# показывает как можно использовать метод WblockCloneObjects чтобы скопировать определенный блок с именем "test" из чертежа, находящегося по пути "C:\TEMP\test.dwg".

Опубликовано 24.06.2014     Читать далее >>>
23/06/2014

Поиск удаленных примитивов

Чтобы получить запись таблицы блоков, в которой имеются удаленные примитивы, можно воспользоваться методом BlockTableRecord.IncludingErased. Например таким образом можно восстановить удаленные примитивы в блоке, как показано ниже.
Опубликовано 23.06.2014     Читать далее >>>
20/06/2014

Установка относительного порядка отрисовки примитивов с помощью .NET

Чтобы установить относительный порядок отрисовки одних примитивов относительно других можно воспользоваться методами DrawOrderTable.MoveAbove или DrawOrderTable.MoveBellow как показано ниже в коде.
Опубликовано 20.06.2014     Читать далее >>>
20/06/2014

Ошибка запуска VLIDE во время отладки .NET-сборки

При отладке .NET-сборки далеко не всегда удается вызвать VLIDE
Опубликовано 20.06.2014     Читать далее >>>
18/06/2014

Изменение порядка отрисовки примитивов

Каждый блок в AutoCAD содержит информацию о порядке отрисовки примитивов в нём. Порядок отрисовки (DrawOrderTable) хранится в словаре расширения записи таблицы блоков. В .NET можно работать с этим словарем используя метод BlockTableRecord.DrawOrderTableId. Порядок отрисовки (DrawOrderTable), обеспечивает методы, такие как MoveToBottom, MoveToTop, MoveBelow, MoveAbove и так далее, которые позволяют изменить порядок отрисовки примитивов в блоке.

Опубликовано 18.06.2014     Читать далее >>>
12/06/2014

Создание нового слоя и установка его текущим

Следующий код показывает процедуру создания нового слоя. Все слои хранятся в символьной таблице, называемой таблицей слоёв. Чтобы сделать любой слой текущим, нужно установить свойство Clayer объекта Database в идентификатор объекта слоя.
Опубликовано 12.06.2014     Читать далее >>>
11/06/2014

Обновление выравнивания текста

В ряде случаев выравнивание текста примитива DBText не выполняется. Для того чтобы заставить выполнится выравнивание используется метод DBText.AdjustAlignment. Этот метод для работы использует рабочую базу данных. Таким образом особенно важно указать ему рабочую базу данных, когда DBText еще не добавлен в рабочую базу данных.
Опубликовано 11.06.2014     Читать далее >>>
09/06/2014

Создание анонимного слоя

Чтобы создать анонимный слой необходимо вызвать метод AcDbLayerTableRecord::setIsHidden()как показано ниже в коде. Анонимные слои не видны в диспетчере слоёв и соответственно пользователь не может редактировать/удалить анонимный слой.

Опубликовано 09.06.2014     Читать далее >>>
05/06/2014

Создание мультиполигона в AutoCAD средствами .NET API

Мультиполигон (MPolygon) – это пользовательский объект созданный для AutoCAD Map 3D. Но он доступен и в чистом AutoCAD и с ним можно работать средствами ObjectARX. Чтобы работать с ним в .NET необходимо добавить добавить ссылку на AcMPolygonMGD.dllи кроме того требуется, чтобы файл AcMPolygonObjNN.dbx (где NN = 19 для AutoCAD 2013 и 2014 и NN = 20 для AutoCAD 2015) загружен в AutoCAD до вызова любого из методов MPolygon. Оба этих файла содержатся в корневом каталоге AutoCAD.
Опубликовано 05.06.2014     Читать далее >>>
03/06/2014

Получение штриховки (Hatch) из мультиполигона (MPolygon)Автор: Александр Ривилис

Вопрос: В dwg-файле имеется множество мультиполигонов (MPolygon). Как из них можно получить штриховки (Hatch)? Метод MPolygon.Hatch в большинстве случаев дает штриховку, у которой в панели свойств неопределенна площадь.

Ответ: Ниже приводится код, который позволяет получить из MPolygon корректную (т.е. имеющую площадь) штриховку.

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

Создание Polyline3d без использования транзакции

Вы возможно в курсе, а может и не в курсе, что управлять примитивами в базе данных AutoCAD можно без использования транзакций... В примере ниже показано как с помощью методов Open и Close (Close происходит при выполнении закрывающейся фигурной скобки оператора using) создать Polyline3d и связанные с ней вершины PolylineVertex3d.

Мне нравится использовать Open и Close вместо транзакций по ряду причин:

Опубликовано 26.05.2014     Читать далее >>>
22/05/2014

Событие закрытия PaletteSet

PaletteSet в AutoCAD становится невидимым когда нажимается кнопка закрытия. Чтобы узнать что палитра закрыта можно использовать событие "StateChanged".
Опубликовано 22.05.2014     Читать далее >>>
19/05/2014

Зумирование до границ окна с использованием CommandASync

В этой статье я проиллюстрирую пример использования AutoCAD 2015 API "Editor.CommandAsync".

Вопрос: Можно ли зумировать в пределах окна до тех пор пока не будет нажата кнопка ESC или отмена?

Ответ: Да. Это возможно с помощью CommandAsync.

Опубликовано 19.05.2014     Читать далее >>>
16/05/2014

Добавление значка к курсору в AutoCAD 2015 с помощью .NET

В AutoCAD API 2015 появилась возможность добавлять свой значок к курсору.

Следует отметить, что значок курсора – это BITMAP-объект. Для того, чтобы у вас был прозрачный фон помните, что в качестве прозрачного фона AutoCAD использует пикселы (R=192, G=192, B=192)

Я решил добавить значок курсора в одной команде и удалить его в другой – для того чтобы увидеть как это будет работать в начале выбора примитивов и в других случаях - но более характерно добавлять значок при запуске JIG и удалять его сразу после его завершения.

Опубликовано 16.05.2014     Читать далее >>>
07/05/2014

Не-DWG окна в AutoCAD 2015 с использованием .NET

AutoCAD 2015 позволяет создавать Не-DWG окна документов. Такие Не-DWG окна документов появляются как вкладки наряду с другими окнами документов чертежей.

В конце этой статьи я приложил готовый C# проект для создания Не-DWG окна документа и демонстрации его использования.

Опубликовано 07.05.2014     Читать далее >>>
30/04/2014

UNDO удаляет обновленные записи словаря

У меня есть команда, которая добавляет новую запись в Словарь Именованных Объектов (NOD) или обновляет значение существующего.

Проблема в том, что когда я запускаю команду дважды (во второй раз запись уже есть, так что в этот раз только обновляется ее значение) и когда мы запускаем команду _UNDO, тогда вместо того, чтобы вернуть предыдущее значение записи NOD, она удаляется полностью.

Опубликовано 30.04.2014     Читать далее >>>
28/04/2014

Серилизация класса .NET в базу чертежа AutoCAD

Вопрос:

Я хотел бы выполнить серилизацияю моего .NET класса в чертеж AutoCAD, так чтобы я мог воссоздать этот класс (десерилизация его), когда чертеж снова открывается. Как можно это сделать?

Ответ:
Вы можете использовать средства серилизации .NET вашего класса в двоичный поток, а затем можно сохранить в кучу бинарных кусков. Вы можете сохранить в XData объекта или в Xrecord.Data примитива или в объект в Словаря Именованных Объектов (NOD). DevNote TS2563 рассказывает нам отличия в использовании XData и Xrecord. Если вы сохраняете в XData, тогда ResultBuffer должен начинаться с имени зарегистрированного приложения REGAPP. Вот пример, который это показывает:

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