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

16/05/2015

Метод ScheduleDefinition.GetSchedulableFields возвращает больше полей чем в интерфейсе

Когда мы создаем спецификацию в Revit, то мы можем выбирать поля:

 

Соответствующий способ получить эти поля при помощи Revit API – это использование метода ViewSchedule.ScheduleDefinition.GetSchedulableFields(). Но по каким-то причинам он возвращает больше полей, чем мы видим в интерфейсе. Что за невидимые поля?

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

Использование ресурсной dll для CUIx с прозрачными растрами

Эту статью и пример кода любезно предоставил один из членов ADN: Michael Csikos. Спасибо Михаил!

Здесь показывается, как можно использовать ico-файлы в ресурсных dll для ваших cuix-файлов. По умолчанию, cuix-файлы принимают из dll bmp-файлы растров. Но bmp-файлы не поддерживают прозрачность, которая могла бы помочь сделать кнопки иконок намного симпатичнее в интерфейсе AutoCAD.

К сожалению этот подход нигде не документирован в документации, так что Michael раскопал следующее решение: редактирование вручную файла ресурсов (.rc) для вашей ресурсной dll позволяет добавить поддержку ico-файлов. Достаточно просто добавить новый ico-ресурс при помощи редактора Visual Studio и отредактировать свойства “ICO” ресурса в “RCDATA” как показано ниже:

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

Еще раз о списке элементов инженерной системыАвтор: Виктор Чекалин

Еще раз о списке элементов инженерной системы

Я уже писал о том, как можно получить список элементов инженерной системы, а также об улучшении алгоритма.

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

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

Выравнивание MTEXT по кривой в указанной точке

На форуме Autodesk возник вопрос об автоматическом выравнивании объекта MText параллельно некоторой кривой без дополнительных запросов угла поворота.
Опубликовано 12.05.2015     Читать далее >>>
08/05/2015

Переключение между вариантами конструкции с помощью UI Automation

Рассмотрим приложение, демонстрирующее функциональность по определению, перечислению и установки варианта конструкции с помощью самостоятельного отдельного приложения.

Приложение было создано пользователем Revitalizer. Вот его комментарии:

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

Как определить, что PaletteSet только что создан в первый раз

В ряде случаев вам может понадобиться узнать создан ли ваш PaletteSet в первый раз или нет, для того чтобы задать его пристыковку (Docking) или еще для каких-то целей. Чтобы сделать это, можно сохранить собственное значение одновременно с сохранением PaletteSet, и которого нет и быть не может при первом создании этого PaletteSet.

Ниже пример кода, который устанавливает пристыковку по умолчанию к левой границе (DockSides.Left) при первом создании PaletteSet. В следующей сессии вариант пристыковки уже не меняется и PaletteSet должен вернуть позицию, в которую его установил пользователь.

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

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

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

Типы сценариев PLM 360 - Библиотечный сценарий

Рассматриваются бибилотечные типы сценариев
Опубликовано 30.04.2015     Читать далее >>>
26/04/2015

Пользовательский выбор файла, подчиняющийся системной переменной FILEDIA

Когда мы создаем пользовательскую команду, мы хотим чтобы она подчинялась общим правилам AutoCAD. Одним из правил является подчинение переменной FILDEIA, которая управляет появлением диалога при выборе файлов.

Многие разработчики используют напрямую класс Autodesk.AutoCAD.Windows.OpenFileDialog, который напрямую вызывает диалог. Альтернативой ему является класс PromptSaveFileOptions, который подчиняется системной переменной FILEDIA.

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

Улучшение алгоритма по вычислению общей и полезной площади стен

Продолжаем обсуждать решение проблемы по вычислению общей и полезной площади стен. После того, как мы немного переделали алгоритм и стали использовать метод FindInserts для поиска всех проемов, пользователь Håkon Clausen нашел пару недочетов в этом алгоритме и оставил их в комментарии (ориг.):

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

Получение всех доступных имен плоттеров

Для того чтобы получить все доступные для AutoCAD плоттеры можно воспользоваться менеджером конфигурация плоттеров (класс PlotConfigManager). У этого класса есть свойство Devices, которое дает доступ ко всем плоттерам. Ниже процедура получения имён плоттеров:

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

Как задать виды для печати с помощью Revit API

Если вы хотим изменить настройки печати в Revit, то первое, с чего мы должны начать – это свойство Document.PrintManager. PrintManager.ViewSheetSetting используется для установки видов, которые вы хотите напечатать.

Однако, когда вы обращаетесь к методу PrintManager.ViewSheetSetting вы можете получить вот такое исключение: This property is only available when user choose Select of Print Range (Свойство доступно только когда пользователь выбрал ‘выбранные виды’ в настройках печати.)

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

Использование метода FindInserts для поиска всех проемов в стене

Недавно я представил новый пример использования класса SpatialElementGeometryCalculator для вычисления полезной и общей площади стен.

В статье обсуждалось несколько интересных моментов:

  • Использование класса SpatialElementGeometryCalculator
  • Портирование надстройки, написанной на VB.NET в C#
  • Использование временной транзакции для решения задач
  • Использование FilteredElementCollector для поиска всех проемов в стене
  • Оптимизация поиска при использовании FilteredElementCollector
Опубликовано 24.04.2015     Читать далее >>>
23/04/2015

Запланированные сценарии действия рабочего процесса

Особенности управления рабочими процессами в PLM 360
Опубликовано 23.04.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     Читать далее >>>
22/04/2015

Написание и отладка сценария для Fusion 360

Возможности написания и отладки приложений для Fusion 360 на Python и JavaScript
Опубликовано 22.04.2015     Читать далее >>>
22/04/2015

Как найти сплайн в AutoCAD между двумя другими сплайнами в .NET

Я получил вопрос в комментариях к блогу:

Как найти «центральную» линию NurbCurve3dмежду двумя другими линиями NurbCurve3d?

Я интерпретирую это следующим образом: с учетом двух объектов NurbCurve3d, создать NurbCurve3d, который находится точно между ними. NurbCurve3d являются AcGe-классом - это означает, что это объект неграфический - так что я решил работать со сплайнами (Spline), поскольку они тесно связаны с классом NurbCurve3d (есть удобные методы для преобразования между этими двумя классами). Вот еще для интересующихся некоторая информация о NURBS.

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

Где хранит свои настройки монитор системных переменных AutoCAD 2016?

Во время проведения вебинара по новинкам AutoCAD 2016 мне задали вопрос: где и как хранятся настройки монитора системных переменных? Точнее, где и как хранится список системных переменных?
Опубликовано 21.04.2015     Читать далее >>>