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

07/07/2015

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

Функция acedEntSel даёт возможность пользователю выбрать примитив и также позволяет получить точку, которая была указана при выборе примитива. Когда эту функцию используют с 2D-примитивом, тока возвращаемая acedEntSel очень удобна в случае если нужна информация для таких задач как РАЗОРВАТЬ (Break), ОБРЕЗАТЬ (Trim) и т.д.

Однако если acedEntSel используется с 3DSolid, точка возвращается в плоскости XY текущей ПСК вне зависимости от того где указали точку на 3DSolid. Если включена объектная привязка (OSNAP) при выборе примитива, тогда точка будет на поверхности 3DSolid. Если важно получить точку на 3DSolid, которая использовалась при выборе объекта именно при помощи кода, то можно использовать следующий алгоритм:

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