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

13/01/2014

Контекстное меню ручек с использованием AcDbMultiModesGripPE

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

Чтобы было веселее, я создал собственный примитив, который напоминает дерево. Контекстное меню его ручек показывает два режима: "Spring" (весна) and "Winter" (зима). После того как собственный примитив дерева создан, контекстное меню появляется, когда курсор оказывается возле ручки (ручка становится «теплой»). Выбор "Spring" (весна) приводит к тому, что у дерева появляются листья, а при выборе "Winter" (зима) дерево сбрасывает листья.

Опубликовано 13.01.2014     Читать далее >>>
11/01/2014

Создание и запуск приложенияАвтор: Алексей Терно

Создание приложения для Civil 3D начинается с выбора правильного типа проекта – библиотека классов:
Опубликовано 11.01.2014     Читать далее >>>
10/01/2014

Как завершить "Editor.GetSelection" при выборе ключевого слова

Один из путей выхода из метода “GetSelection” по ключевому слову – это создать исключение в обработчике события ввода ключевых слов. Ниже простой пример объясняющий эту технику. При нажатии любого ключевого слова генерируется исключение “Autodesk.AutoCAD.Runtime.ErrorStatus.OK” с передачей ключевого слова. Это исключение обрабатывается в коде для идентификации введенного ключевого слова.
Опубликовано 10.01.2014     Читать далее >>>
09/01/2014

Расчет длины наклонного сегмента между двумя трубами

В посте мы обсудим интересную команду, связанную с MEP, которую я реализовал для вычисления наклонного сегмента на хакатоне CASE BIM на AU по предложению Гарри Маттисона (Harry Mattison) и Мэтью Нельсона (Matthew Nelson).

 

Команда вычисляет длину сегмента между двумя выбранными трубами и создает видимую линию в модели, для визуализации результата.

Опубликовано 09.01.2014     Читать далее >>>
08/01/2014

Доступ к COM-приложениям из Таблицы исполняющихся объектов (ROT)

Вот тема, которая то и дело всплывает: как перейти к определенному экземпляру COM-приложения, если есть несколько экземпляров имеющих аналогичный ProgId? Вызов GetActiveObject (progId) может вернуть только один объект, так что нет никакого способа, чтобы выбрать нужный конкретный экземпляр.

Обойти это ограничение можно используя Таблицу исполняющихся объектов (Running Object Table), которая может предоставить вам доступ к каждому экземпляру COM, работающему на машине.

Опубликовано 08.01.2014     Читать далее >>>
07/01/2014

Как получить ссылку (Reference) центра дуги

Вопрос: Как можно получить доступ к ссылке на центр дуги?

 

Работая с выдавливанием в файле семейства, можно получить доступ к его эскизу и геометрии каждого элемента выдавливания, например, с помощью вот такого кода на Managed C++:

Код - C++: [Выделить]
  Extrusion ^ext = createExtrusion(...)

  CurveArrArray ^sketchCvArrArr = ext->Sketch->Profile;

  for each( CurveArray ^oneCvLoop in sketchCvArrArr )

  {

    for each( Curve ^oneSketchCv in oneCvLoop )

    {

      // ...

    }

  }

Опубликовано 07.01.2014     Читать далее >>>
06/01/2014

Кнопки "Да"/"Нет" в диалоговом окне "обнаружены ограничения"

Вопрос: Можете ли вы описать различие между кнопками «Да» и «Нет» для окна "Найдены ограничения"?

Опубликовано 06.01.2014     Читать далее >>>
06/01/2014

Запуск инструмента из инструментальной палитры

Это пример кода, который запускает инструмент "Шестигранная гайка - метрические" доступный в инструментальной палитре "Оборудование" в AutoCAD. Он проходит по каталогу инструментов, находит соответствующий и запускает инструмент. Это подобно нажатию левой кнопки мыши на инструменте в пользовательском интерфейсе AutoCAD.

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

Добавление файла и связывание его с существующим файлом в хранилище

Вам может потребоваться добавить файл и связать его с уже существующим в хранилище. Этот пример на VB.NET показывает как выполнить эту задачу. Пример добавляет файл Excel с диска к текстовому файлу в хранилище.

Опубликовано 04.01.2014     Читать далее >>>
02/01/2014

Планирование работы и работа по плану в PLM 360

С последним выпуском PLM 360 было проведено большое улучшение приложения по управлению программами и проектами. Теперь у нас есть доступ к данным по управлению проектами и связями.  Это позволяет вам легко свернуть проектные данные, если необходимо, и вы можете легко создавать и удалять связи.

Опубликовано 02.01.2014     Читать далее >>>
31/12/2013

Доступ к определениям общих параметров проектаАвтор: Виктор Чекалин

Работая со статьей Определение типа общего параметра я вспомнил об одной проблемке, с которой я сам сталкивался при работе с общими параметрами проекта.

Мне нужно было определить, есть ли в проекте общий параметр с определенным GUID или именем и в случае если такой есть в проекте, то удалить его из списка общих параметров проекта. Предпочтительней конечно по GUID, так как параметров с одинаковым именем может быть несколько.

Опубликовано 31.12.2013     Читать далее >>>
30/12/2013

Выбор вставок блоков с использованием фильтра

Этот пример запрашивает у пользователя выбор нескольких примитивов, а затем фильтрует все вставки блока с именем "ABC". А затем проходит по всему набору и вызывает метод erase() для каждой вставки блока.

Опубликовано 30.12.2013     Читать далее >>>
30/12/2013

API для работы с семействами. Типоразмеры вложенного семейства, поиск типоразмеров и экземпляров семейства

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

В последней части мы рассмотрим следующие темы:

  • Поиск определенных типоразмеров в проекте
  • Поиск определенных экземпляров конкретного семейства
  • Отображение типоразмеров семейства Дверь
  • Изменение типоразмера вложенного семейства.
Опубликовано 30.12.2013     Читать далее >>>
28/12/2013

Определение записи таблицы блоков связанной с Листом

Чтобы добавить примитивы на Лист, необходимо найти запись таблицы блоков, связанную с этим листом. Каждый лист хранит ObjectId записи таблицы блоков, с которой он ассоциирован. Ниже код добавляющий окружность к выбранному Листу.

Опубликовано 28.12.2013     Читать далее >>>
27/12/2013

Создаем блок из набора примитивов

Код ниже показывает алгоритм создания нового блока из выбранных на экране примитивов. Важнейшим методом для этого является “DeepCloneObjects” который получает набор ObjectId примитивов для копирования. Второй параметр – новый «владелец» скопированных примитивов. В следующем коде запись таблицы блоков с именем «тест» передаётся как новый владелец, так что копии выбранных примитивов попадают в этот блок.

Опубликовано 27.12.2013     Читать далее >>>
27/12/2013

API для работы с семействами. Создание типоразмеров. Выделение и изменение экземпляров семейства

Добро пожаловать во втроую часть подробного обсуждения API для работы с семействами.

Основная функциональность работы с семействами была представлена Стивеном Кэмпбелом (Steven Campbell) в его докладе Ключевые концепции при работе с семействами на Revit DevCamp в Москве. Первую часть статей по работе с семействами можете прочитать здесь.

Будет еще и третяя заключительная часть, которую мы рассмотрим чуть позднее.

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

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

Вы можете использовать метод “Editor.SetImpliedSelection” для очистки набора предварительного выбора. Код ниже получает список всех предварительно выбранных примитивов, а затем очищает его передавая пустой массив ObjectId в метод SetImpliedSelection.

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

Работа с семействами. Загрузка семейства и вставка экземпляра семейства

Начнем небольшую серию статей о работе с семействами и с редактором семейств с помощью Revit API.

Рассмотрим два главных аспекта работы с семействами с точки зрения программиста:

  1. Создание семейства. Т.е. работа с редактором семейства.
  2. Использование семейства. В большинстве случаев используются в файле проекта.

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

Опубликовано 25.12.2013     Читать далее >>>
23/12/2013

Добавление и удаление примитивов из набора предварительного выбора в ObjectARX

Вы можете воспользоваться функцией “acedSSSetFirst” для создания набора (с «ручками») предварительного выбора. Ниже пример команды, которая запрашивает выбор примитивов и помещает их в набор предварительного выбора. Код также показывает окно сообщений, и как только нажимаете «Да», набор удаляется из набора предварительного выбора. Заметим, что команда позволяющая выбирать и устанавливать набор предварительного выбора должна иметь флаги ACRX_CMD_USEPICKSET и ACRX_CMD_REDRAW

Опубликовано 23.12.2013     Читать далее >>>
21/12/2013

Editor.SelectAll с фильтром выбора примитивов и слоёв

При использовании метода “Editor.SelectAll” можно создать фильтр выбора для отсеивания ненужных примитивов. Код ниже показывает как можно отфильтровать Отрезки и Круги, которые находятся только на определённых слоях (0, Layer1, Layer2).

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