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

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     Читать далее >>>
25/04/2014

Сохранение и получение значений enum в ResBuf в .NET

Если вы сохраняете значение перечисления (enum) в resbuf как "ExtendedDataInteger16", тогда вы можете получить исключение неверного типа при попытке прочитать сохраненное значение из resbuf в перечисление.

Чтобы исключить эту ошибку, нужно сохранять значение как "ExtendedDataIneger32" или использовать "Enum.ToObject" как показано ниже:

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

Используем ActiveX API GetBoundingBox в .NET

Ниже код, показывающий как использовать activeX API GetBoundingBox в AutoCAD.NET. Так как GetBoundingBox возвращает точки, нам понадобится вызывать метод "InvokeMember" с параметром "ParameterModifier".
Опубликовано 25.04.2014     Читать далее >>>
23/04/2014

Штриховка при помощи AutoCAD .NET API

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

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

Вызов PInvoke ObjectARX AcArray для Hatch.AppendLoop in C#

Это смешно, но иногда такие вещи встречаются. Совсем недавно общался с разработчиком, который рассказывал мне о проблемах использования смешанного (“mixed”) кода (C++) Ему приходилось привязываться к конкретной версии .NET, так как без этого не работали другие связанные с этой части программы.
Опубликовано 18.04.2014     Читать далее >>>
16/04/2014

Изменения в графике в AutoCAD 2015

Ниже важные изменения в графике (модули Autodesk.AutoCAD.GraphicsSystem и Autodesk.AutoCAD.GraphicsInterface) произошедшие в AutoCAD 2015.

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

Создание выноски-сплайна при помощи Jig

Ниже код, который позволяет создать выноску-сплайн при помощи EntityJig. Это модифицированная версия из этой статьи в блоге Киана.

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

Перемещение выбранного примитива в центр вида

Ниже код, который позиционирует выбранный примитив в центр вида. Большая часть кода подобна тому, который используется при зумировании примитива, за исключением того, что не меняется ни высота, ни ширина вида. Меняется лишь центр вида в DCS.
Опубликовано 11.04.2014     Читать далее >>>
29/03/2014

API для восстановления чертежа - новый API в AutoCAD 2015

В течении продолжительного времени сообщество программистов просило дать возможность восстановления чертежей с помощью API. Этот запрос наконец-то был реализован в AutoCAD 2015. Теперь класс коллекции документов (DocumentCollection) приобрел новый метод AppContextRecoverDocument, которому передается имя чертежа для восстановления. Этот API присутствует и в ObjectARX и в .NET. В ObjectARX используется метод AcApDocManager::appContextRecoverDocument().

Опубликовано 29.03.2014     Читать далее >>>
29/03/2014

API для проверки чертежа - новый в AutoCAD 2015

В AutoCAD 2015 вы можете программно проверить файл чертежа с использованием API для проверки чертежа. Вы можете даже попробовать исправить ошибки в чертеже если использовать соответствующий аргумент API. Это API появилось и в ObjectARX и в AutoCAD .NET API.

В ObjectARX используется функция Acad::ErrorStatus acedAudit(AcDbDatabase* , bool bFixErrors, bool bEcho).

Опубликовано 29.03.2014     Читать далее >>>
29/03/2014

SystemVariableEnumerator - новый класс в AutoCAD 2015

Новый класс SystemVariableEnumerator обеспечивает возможность пройтись по всем публичным системным переменным и получить их имена, типы данных, диапазон изменения (если есть), статус «только для чтения» и где они хранятся. В ObjectARX соответствующий класс называется AcEdSysVarIterator

Пример использования:

Опубликовано 29.03.2014     Читать далее >>>
14/03/2014

Когда метод IsEffectivelyErased возвращает True

Для объектов, которые содержатся в базе данных и которые не были сами удалены может быть три причины по которым isEffectivelyErased() может вернуть true:

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

Создание блока с многострочным определением атрибута

Это пример кода, который создает определение блока с многострочным определением атрибута, а затем создает вставку блока из определения блока.

Опубликовано 12.03.2014     Читать далее >>>
10/03/2014

Где находятся сборки COM взаимодействия (Interop) ?

Начиная с AutoCAD 2013 мы прекратили регистрацию сборок взаимодействия с COM AutoCAD в Глобальном кэше сборок (GAC). Мы продолжаем поставлять их в составе ObjectARX SDK.

Правильный путь использования этих сборок следующий:

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

Нахождение примитивов под курсором в момент выбора примитивов

Функция обратного вызова PointMonitor в .Net позволяет получить доступ к примитивам, находящимся внутри апертуры курсора, когда пользователь наводит мышь, однако эта возможность заблокирована в момент, когда выполняется Editor.GetEntity.

Существует обходной путь для этой ситуации, который использует P/Invoke для вызова ряда методов ObjectARX. Ниже приводится пример на C#.

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