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

12/02/2014

Обработка ошибки при создании не валидного элемента с помощью Failure API

Мы уже ранее обсуждали примеры использования Failure API:

Вот еще одна немного запутанная ситуация, заставляющая нас снова вернуться к обсуждению этой темы с другого ракурса. Проблему озвучил Стефен Фауст (Stephen Faust) из компании Revolution Design, Inc.

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

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

Как-то во время проведения тренинга по Revit API, участники тренинга придумали вопрос, решение которого можно использовать для демонстрации использования FilteredElementCollector. В результате получилось вполне полезная команда. Необходимо было удалить все опорные плоскости, которые не содержат ни одного элемента. Так я создал команду DeleteUnnamedNonHostingReferencePlanes.

Команда удаляет из проекта все опорные плоскости, которые не имеют названия и не содержат ни одного элемента.

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

Настройки видимости с использованием параметра GEOM_VISIBILITY_PARAM

В статье обсуждается полезный и интересный пример с форума Revit API, в котором принимали участие  Remy van den Bor из компании ICN Solutions, Rudolf Honke из Mensch und Maschine acadGraph, а также Joe Ye и команда разработчиков Revit. В теме обсуждалось как можно задать настройки видимости элемента в редакторе семейств.

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

Легкое создание кнопок на ленте для вызова внешних командАвтор: Виктор Чекалин

Создавая собственную внешнюю команду в интерфейсе Revit ее можно вызвать двумя способами:

Описать внешнюю команду в файле манифеста addin

Код - XML: [Выделить]
 <?xml version="1.0" encoding="utf-8"?>

<RevitAddIns>

  <AddIn Type="Command">

    <Text>Command PipeCreation</Text>

    <Description>Some description for PipeCreation</Description>

    <Assembly>PipeCreation.dll</Assembly>

    <FullClassName>PipeCreation.Command</FullClassName>

    <ClientId>da5307a6-0182-4f28-8387-dd0de47446ec</ClientId>

    <VendorId>ADNCIS</VendorId>

    <VendorDescription>http://adn-cis.org </VendorDescription>

  </AddIn>

</RevitAddIns>

В этом случае Revit автоматически добавит команду в раскрывающийся список Внешние инструменты на вкладке Надстройки

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

Создание трубы с помощью метода Pipe.CreateАвтор: Виктор Чекалин

В статье создание наклонного сегмента между двумя трубами Джереми столкнулся с проблемой создания трубы с помощью метода Pipe.Create.

Статический метод Pipe.Create появился в Revit API 2014 на замену методу Document.Create.NewPipe.

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

  • document. Проект, в котором нужно создать трубу.
  • systemTypeId. Идентификатор типа системы.
  • pipeTypeId. Идентификатор типа трубы.
  • levelId. Идентификатор уровня, на котором нужно создать трубу.
  • firstPoint. Координаты начала трубы
  • secondPoint. Координаты окончания трубы.
Опубликовано 26.01.2014     Читать далее >>>
23/01/2014

Простое создание наклонного сегмента трубопровода с отводами

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

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

Явное создание отводов при создании наклонного сегмента трубопровода

Продолжаем усовершенствовать создание наклонного сегмента трубопровода. Мы уже научились вычислять длину наклонного сегмента, создавать трубу, и также присоединять все элементы трубопровода в одну систему.

В завершении рассмотрим создание и вставку соответствующих фитингов.

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

Присоединение наклонного сегмента трубопровода к соседним трубам

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

Следующий шаг состоит в том, что нужно корректно соединить все трубы в единую систему.

До сих пор я предполагал, что просто соединив трубы друг с другом, Revit автоматически создаст соответствующие фитинги.

К сожалению, мое предположение было ошибочным.

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

Создание наклонного сегмента между двумя трубами

Недавно я рассказывал о своем небольшим проекте по вычислению наклонного сегмента между двумя трубами.

Сразу же возникает очевидный вопрос: «отлично. Но только как же теперь вставить реальный сегмент трубы, вместо того, чтобы просто отобразить линию, отображающую результат расчета сегмента?».

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

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

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

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Определение типа общего параметра

В статье обсудим вопрос, который задали мне недавно, но его мы также обсуждали и ранее, о том как определить является ли параметр, из списка всех общих параметров проекта, параметром Типа или Экземпляра.

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

Создание цветовой области, похожей на область маскировки

Вопрос: Как можно программно создать область маскировки?

Ответ: К сожалению, в текущей версии API этого сделать нельзя.

Но есть и хорошая новость. В Revit 2013 API добавилась возможность создавать цветовую область.

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

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

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

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

Как и всегда, для доступа к элементам из базы данных Revit воспользуемся классом FilteredElementCollector.

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

Изменение рабочего набора элемента

Мы уже обсуждали как можно получить текущий рабочий набор у отдельного элемента либо с помощью встроенного параметра ELEM_PARTITION_PARAM, или более легким способом с помощью метода Document.GetWorksetId.

 

Это еще один пример того, что одно и тоже свойство можно получить как с помощью параметра элемента, так и с помощью отдельного метода или свойства, помимо того, что мы недавно обсуждали в статье Изменение типа Видового экрана.

Однако хоть Revit API и содержит отдельное свойство для определения рабочего набора элемента, отдельного метода для изменения рабочего набора нет.

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

Группировка заголовков спецификации

Вопрос: Я пытаюсь сгруппировать заголовки спецификации с помощью метода ViewSchedule.GroupHeaders, но все время выскакивает ошибка: "Headers could not be grouped. Parameter name: right" (Заголовки не могут быть сгруппированы. Имя параметра: right)

Ответ: Действительно. Такая проблема существует. Мы уже обсуждали ее в прошлом и предлагали некоторые решения.

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