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

02/07/2015

Как получить формат файла для сохранения по-умолчанию

Я недавно получил вопрос от партнера ADN о возможности получить формат файла по-умолчанию для сохранения файла при помощи API или команды. Я не уверен можно ли это сделать командными методами, но вот небольшой пример как это сделать при помощи API.
Опубликовано 02.07.2015     Читать далее >>>
26/06/2015

Загрузка DVB и запуск макроса VBA при помощи AutoCAD COM API в ObjectARX

Вопрос:
Как я могу загрузить dvb-файл и выполнить макро при помощи AutoCAD COM интерфейса?

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

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

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

Как вам возможно уже известно, тип линии в AutoCAD состоит из серий значений, представляющих образцы, которые могут содержать тексты и формы. Ниже пример кода, который проходится по типам линий, загруженным в базу и показывающий их определения. В случае вложенных форм создаются формы в Пространстве Модели.
Опубликовано 17.06.2015     Читать далее >>>
15/06/2015

Как определить какие свойства слоя переопределены в ВЭкране?

Ниже пример кода, который позволяет определить какие слои имеют переопределения и какие свойства слоя переопределены в ВЭкране. Метод AcDbLayerTableRecord::hasAnyOverrides позволяет нам быстро узнать есть ли какие-то переопределения у слоя для ВЭкранов. Если есть, то мы можем узнать подробности при помощи метода AcDbLayerTableRecord::hasOverrides с указанием ObjectId ВЭкрана, для которого мы хотим узнать переопределения.

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

Почему не загружается в AutoCAD мой ARX-файл и как с этим бороться?Автор: Александр Ривилис

Причин по которым arx-файл не загружается в AutoCAD может быть много. В этом случае обычно выдаётся сообщение типа:
AcRxDynamicLinker failed to load ”....\myArxFile.arx”.....

C:\Program Files\Autodesk\AutoCAD 2015\acad.exe

can't load the myArxFile.arx file。

Или:

“....\myArxFile.arx” не является корректным ARX-файлом.

Сбой AcRxDynamicLinker при загрузке .”...\myArxFile.arx”

C:\Program Files\Autodesk\AutoCAD 2015\acad.exe

Module ”...\myArxFile.arx” failed to load.

Опубликовано 09.06.2015     Читать далее >>>
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     Читать далее >>>