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

21/03/2015

Событие по изменению выделенного элемента

Много разработчиков интересуются возможностью получить оповещения, когда меняется выделение текущего объекта в пользовательском интерфейсе.

Я уже обсуждал реализацию данной возможности в статье Использования события Idling для отслеживания выделения объектов (на англ.) и одним из ключевых аспектов обсуждения являлись так называемые уровни возникновения события, т.е. различные возможности приложения реагировать на изменения объектов в модели.

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

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

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

Сохранение чертежа в DXF-формате

Вы можете использовать метод Database.DxfOut для экспорта/сохранения чертежа в DXF-файле. Ниже простой код показывает процедуру сохранения текущего чертежа в различные версии DXF

DwgVersion.AC1027 – для AutoCAD 2013 версии
DwgVersion.AC1024 – для AutoCAD 2010 версии
DwgVersion.AC1021 – для AutoCAD 2007 версии
DwgVersion.AC1800 – для AutoCAD 2004 версии
DwgVersion.AC1015 – для AutoCAD 2000 версии
DwgVersion.AC1009 – для AutoCAD R12 версии

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

Написание Hello World в Autodesk PLM360

Ваше первое приложение под PLM360
Опубликовано 17.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     Читать далее >>>
12/03/2015

Установка направления пристыковки палитры по-умолчанию

Я получил запрос от партнера ADN о возможности установить направление пристыковки палитры по-умолчанию при первом запуске и при этом чтобы пользователь мог в дальнейшем пристыковывать палитру в любом направлении: Вниз, Влево, Вверх, Вправо.

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

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

Автозагрузчик (Autoloader) - интеграция клавиши помощи F1

Следующая возможность автозагрузчика была представлена в AutoCAD 2013 – простой способ соединения команды и вашего файла помощи. Я занялся адаптацией под AutoCAD 2013 моего плагина DimensionPatrol который размещен в Магазине Приложений Autodesk. (Вы можете его скачать и изучить работающий пример).

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

Пример использования метода PostRequestForElementTypePlacement

Метод NewFamilyInstance предоставляет возможность программно создать новый экземпляр семейства в проекте или вложенный экземпляр семейства в редакторе семейств.

Но он совсем не поддерживает какие-либо взаимодействие с пользователем.

Небольшое взаимодействие с пользователем появилось в методе PromptForFamilyInstancePlacement, который был представлен в Revit 2011 API.

По крайней мере он показывает пред просмотр экземпляра семейства и предлагает пользователю выбрать месторасположение экземпляра.

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

Разрешаем использование глобальных имён команд в AutoCAD с помощью .NET

Идея заключается в том, чтобы позволить использование вводить английские имена команд без необходимости использовать подчеркивание. В коде определяется что команда неизвестна (“unknown”) и выполняется попытка выполнить её повторно с префиксом подчеркивания для запуска глобальной команды. Это конечно может сработать или не сработать и чтобы предотвратить бесконечный цикл необходимо установить флаг установки подчеркивания.

Кроме того нам придётся отключить автокоррекцию и автозавершение команд для того чтобы наш код работал корректно. Так как нет специальных системных переменных то это придётся сделать при помощи команды.

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

Открытие файла проекта в событиях Revit API

Вопрос: Довольно понятная и четкая ошибка возникает при попытке выполнить метод Application.OpenandActivateDocument() дважды (т.е. пока нет активных документов, метод работает).

Я пробую выполнить этот метод в обработчике события Idling. Я думал я могу выполнять открытие документа в обработчике события.

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

Определение типа поверхности под выбранной точкой

Вопрос: Я пишу надстройку для Revit 2015 где мне нужно вставить семейство в проект.

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

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

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

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

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

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

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

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

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

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

Еще один способ обновить cвойства

Обновление свойств в файлов при помощи новых API функций Vault 2015 R2
Опубликовано 27.02.2015     Читать далее >>>
25/02/2015

Как добавить связь с файлом Revit

В Revit можно создать связь с другим файлом Revit в помощью команды Вставка > Связать с Revit.

 

А как можно сделать то же самое, но используя API?

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

Как программно извлечь список горячих клавиш

Вопрос: Подскажите как можно получить список горячих клавиш с помощью Revit API.

Опубликовано 24.02.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     Читать далее >>>
23/02/2015

Как получить параметры доступные для использования фильтрации спецификации

В Revit мы можем создать спецификацию с определенным фильтром. Таким образом, только элементы, удовлетворяющие фильтру, будут выведены в спецификации. Например, мы можем выбрать элементы, находящиеся только на уровне 1.

Есть ли какой-либо способ, получить все параметры, по которым можно отфильтровать для заданной категории?

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