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

06/06/2015

Динамически размеры при помощи GripOverrule

Динамические размеры – это простой и интуитивно удобный способ дать возможность пользователю изменять примитивы при редактировании при помощи «ручек». Для того чтобы это работало необходимо установить системную переменную DYNMODE в значение 2 или 3. Если вы хотите изменить обычное поведение редактирования при помощи «ручек» и указать другой размер, что интуитивно и удобно для пользователя – Grip Overrule поможет вам в этом.

Для окружности, когда «ручка» выбрана, появляется запрос значения радиуса в динамическом размере. Следующий пример кода меняет стандартное поведение. При выборе «ручки» у пользователя спрашивается диаметр окружности и динамический размер помещается горизонтально в центре окружности. Также в командной строке отображается новое, введенное пользователем, значение диаметра.

Опубликовано 06.06.2015     Читать далее >>>
21/05/2015

Преобразование AcDbObjectIdArray в IAcadSelectionSet

Недавно я получил запрос от партнера ADN как передать массив ObjectID в Export COM API. Проблема заключается в том, что необходимо преобразование из C++ в COM

Прототип функции Export в COM описывается так :

Export ( /*[in]*/ BSTR FileName, /*[in]*/ BSTR Extension, /*[in]*/ struct IAcadSelectionSet * SelectionSet ) = 0;

Ей передаётся имя файла, расширение файла и IAcadSelectionSet – набор примитивов, тогда как у нас есть массив ObjectId.

Поставим перед собой цель выполнить экспорт набора примитивов в BMP-файл.

Опубликовано 21.05.2015     Читать далее >>>
13/05/2015

Управление SummaryInfo чертежа при помощи ObjectARX

Вам может понадобиться изменить свойства «Автор изменений» ("Last saved by") и «Редакция» ("Revision number"), а также другие пользовательские свойства чертежа. Класс AcDbDatabaseSummaryInfo из ObjectARX SDK вам поможет. Эквивалент в AutoCAD .Net API - структура "DatabaseSummaryInfo". Но в отличие от C++, некоторые свойства, такие как "LastSavedBy" и "RevisionNumber" только для чтения в .NET. Вы можете воспользоваться COM API для получения и установки этих свойств. Это особенно удобно в случае, когда вы управляете AutoCAD из внешнего приложения или используете VBA.

Опубликовано 13.05.2015     Читать далее >>>
12/05/2015

Реализация мультикопирования объектов с изюминкой

В недавнем запросе, разработчик упомянул о поведении команды _COPY в AutoCAD , которое, как я думаю, немного отличается от того, как ведут себя остальные команды. В команде _COPY, когда выбран режим мультикопирования, выбраны примитивы для копирования и после указания базовой точки AutoCAD размещает копии выбранных объектов. Но если нажать Enter, то мы как правило ожидаем прекращения команды, как и в большинстве других команд AutoCAD. Но в случае с командой _COPY , нажатие на клавишу Enter трактуется как "использовать первую точку в качестве смещения" и появляется новая копия до завершения команды.

Если вас не устраивает такое поведение, то возможно вам потребуется создать свою команду для копирования нескольких примитивов. Вот пример кода, который реализует это с помощью ObjectARX API и предоставляется в качестве Lisp-функции. Кроме того, при перетаскивании объектов позиция ограничена по оси X так же, как и координатный фильтр .YZ для родной команды _COPY.

Опубликовано 12.05.2015     Читать далее >>>
04/05/2015

Экспорт динамического блока из текущего чертежа как вариативного элемента

Динамические блоки из чертежа можно сохранять в новых чертежах как вариативные элементы. Это помогает создать архив динамических блоков для их повторного использования по мере необходимости. Новый чертеж может быть вставлен в другой чертеж, чтобы получить в нём динамический блок. Средствами интерфейса AutoCAD создать такой вариативный элемент можно при помощи команды ПБЛОК (_WBLOCK), выбрав один из динамических блоков, доступных из списка блоков. Тоже самое можно сделать и при помощи кода, указанного ниже:
Опубликовано 04.05.2015     Читать далее >>>
23/04/2015

Drag & Drop из немодального диалога в редактор AutoCAD

В составе ObjectARX SDK 2004 был прекрасный пример на C++, который демонстрировал реализацию технологии «drag &drop» («перетащи и брось») в AutoCAD как файлов из проводника, так и из немодального диалога внутрь AutoCAD. Здесь я выкладываю этот пример, переделанный для версии AutoCAD 2016. Чтобы проверить его, загрузите arx-файл и запустите команду arxdd. Прочитайте файл ReadMe.txt включенный в пример для объяснения методов, реализующих технологию «drag & drop».

Загрузить Arxdd

Источник: http://adndevblog.typepad.com/autocad/2015/04/drag-and-drop-from-a-modeless-dialog-into-autocad-editor.html

Опубликовано 23.04.2015     Читать далее >>>
15/04/2015

CreateInstance возвращает E_NOINTERFACE при обращении к экземпляру AutoCAD

Когда мы пытаемся запустить экземпляр AutoCAD из внешнего приложения используя функцию CreateInstance, иногда мы получаем ошибку E_NOINTERFACE. В этой статье мы рассмотрим некоторые причины, по которым это может происходить и пути решения этой проблемы.

Опубликовано 15.04.2015     Читать далее >>>
01/04/2015

Как перезагрузить типы линий из файла

Метод AcDbDatabase::loadLineTypeFile позволяет загрузить типы линий из lin-файла. Если в чертеже имеется одноименный тип линии, то метод loadLineTypeFile вернет код ошибки. Чтобы принудительно перезагрузить типы линий из lin-файла, нужно загрузить их в другую базу, а затем выполнить клонирование в текущую. Вот соответствующий код:

Опубликовано 01.04.2015     Читать далее >>>
23/03/2015

ObjectARX 2016 SDK уже доступен для загрузки

Как вы наверное слышали, уже вышел AutoCAD 2016. Прежде чем мы даже успели рассказать о новых функциях, мы получили вопрос: «Где мы можем получить последнюю версию ObjectARX? Её нет на сайте ADN …»

ObjectARX SDK 2016 выложен на общий сайт (или формально в Центр Разработки):
ObjectARX License & Download

Замечание: OMF (Object Modeling Framework), расширение C++ API SDK для AutoCAD Architecture будет выложено на сайт ADN для его членов в ближайшее время.

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

Блог "Between the Lines," автора Shaan Hurley:

Блог "Through the Interface" автора Kean Walmsley:

Они содержат отличное введение в новые возможности AutoCAD 2016.

Оставайтесь с нами чтобы не пропустить анонсы о новых возможностях API от экспертов AutoCAD API!

Источник: http://adndevblog.typepad.com/autocad/2015/03/objectarx-2016-sdk-available-for-download.html

Опубликовано 23.03.2015     Читать далее >>>
21/03/2015

Создание прозрачного растра при помощи ATIL

Вот пример кода, который реализует собственный фильтр растра ATIL для создания прозрачного растра. Реализация устанавливает Альфа-канал для пикселей красного цвета в растре. Вы можете изменить код для использования любого другого значения RGB цвета.
Опубликовано 21.03.2015     Читать далее >>>
16/03/2015

Программное добавление поля к тексту

Мы хотим знать как можно при помощи поля добавить к одному примитиву AcDbText содержимое другого примитива AcDbText.
Опубликовано 16.03.2015     Читать далее >>>
16/03/2015

Доступ к AcGsView ассоциированному с видом

В версиях до AutoCAD 2015, функция acgsGetGsView давала доступ к AcGsView вида. В AutoCAD 2015 этой функции нет и она заменена двумя другими новыми: acgsGetCurrentAcGsView и acgsGetCurrent3dAcGsView. Следующий пример кода показывает в чем разница и как их использовать:

Опубликовано 16.03.2015     Читать далее >>>
04/03/2015

Получение информации обо всех системных переменных

В AutoCAD 2015 появилось новое API - AcEdSysVarIterator.

Класс “AcEdSysVarIterator” обеспечивает возможность пройтись по всем доступным системным переменным и получить их имена, типы данных, диапазоны (если доступны), значение «только для чтения» и где они хранятся.

Внимание: системные переменные, которые имеют флаг скрытости (т.е. "*" в качестве первого символа в имени) пропускаются этим итератором. В настоящее время мы можем получить всю информацию при помощи утилиты "SYSVDLG", включая скрытые системные переменные. Это API может пригодиться тем, кто хочет автоматизировать работу с системными переменными в клиентском приложении.

Опубликовано 04.03.2015     Читать далее >>>
02/03/2015

Получение упорядоченного набора ребер граней с использованием BRep

При перемещении по ребрам граней с использованием BRep API, ребра могут быть не упорядочены так, чтобы конечная точка предыдущего ребра совпадала с начальной точкой следующего ребра. Это происходит потому, что ребра разделяются между несколькими гранями, и это же ребро возвращается, когда мы снова проходим по другой грани. Так как начальные и конечные точки ребра остаются неизменными, то это будет признаком ориентации одной из граней.

Опубликовано 02.03.2015     Читать далее >>>
24/02/2015

Получение значений свойств из COM-обертки примитива

Когда создаём AutoCAD-приложение, достаточно просто получить свойства примитива без использования COM-обертки примитива. Но когда создается приложение RealDWG, может быть необходимым получить свойства примитива именно из COM-обертки.

Если вы используете .NET-языки, то можно воспользоваться «отражением». Вот эта статья может помочь:

Получение свойств и методов класса ActiveX/COM из .NET

Если вы используете C++ вы можете таким образом изменить пример DumpDwg из RealDWG SDK. В этом примере мы получаем свойства примитива, используя интерфейс IDispatch его COM-обертки. Например, если чертеж содержит примитив "AsdkPoly" из примера "ObjectARX 2015\samples\entity\polysampPolySamp".

Опубликовано 24.02.2015     Читать далее >>>
20/02/2015

Используем геолокацию с помощью ObjectARX

Это пример кода работы с геолокацией в чертеже AutoCAD. Если вы ищете пример кода на .NET, тогда посмотрите эту статью.

Чтобы попробовать этот код, вы должны быть подписаны на использование Autodesk 360 внутри AutoCAD.

Опубликовано 20.02.2015     Читать далее >>>
06/02/2015

Ассоциация гиперссылки с BlockTableRecord

В ObjectARX BlockTableRecord обеспечивает доступ к коллекции своих гиперссылок при помощи AcDbEntityHyperlinkPE интерфейса. В AutoCAD 2015 к гиперссылкам можно получить доступ и при помощи AutoCAD .NET API.

Вот образцы кода на C++ и на .NET, которые создают блок с гиперссылкой к блогу AutoCAD DevBlog:

Опубликовано 06.02.2015     Читать далее >>>
26/01/2015

Просмотр нормалей к граням сети

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

В этом случае желательно было увидеть нормали к сети. Следующий код показывает как это сделать:

Опубликовано 26.01.2015     Читать далее >>>
12/01/2015

Прозрачность слоев в ObjectARX

Следующий код показывает процедуру изменения «прозрачности» слоя при помощи ObjectARX. Он устанавливает слою 0 прозрачность 60%. Чтобы на экране отобразились изменения требуется регенерация.

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

Разработка CRX приложений

Мы получили несколько общих вопросов от разработчиков использующих AcCoreConsole. Это два вопроса (и ответы любезно предоставленные членом нашей команды разработчиков AutoCAD) …

Вопрос 1: Какие библиотеки ObjectARX я могу прилинковать к моей DLL для загрузки в AcCoreConsole (или другого AcCore-продукта, который Autodeskможет выпустить в будущем)?

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