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

23/09/2014

Получение поверхности (Face) из ReferenceIntersector

Вопрос: С помощью API мне нужно получить поверхность, которая находится на пересечении заданной точки и заданного направления. Для этого я использую класс ReferenceIntersector. Вот пример моего кода:

Код - C#: [Выделить]
  ReferenceIntersector refIntersector

    = new ReferenceIntersector( id,

      FindReferenceTarget.Face, selectedView );

 

  XYZ origin = new XYZ( x, y, z );

 

  ReferenceWithContext refContext

    = refIntersector.FindNearest(

      origin, new XYZ( 0, 0, -1 ) );

 

  Reference refObject = refContext.GetReference();

А что мне делать дальше с refObject? Как мне в итоге получить ссылку на поверхность?

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

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

Вопрос: Есть ли какой-нибудь метод, с помощью которого можно определить, присоединен ли экземпляр семейства к чему-либо?

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

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

Доступ к настройкам из ленты и закрепление всплывающей панели

Вопрос: Как можно с помощью Revit API получить доступ к кнопке закрепления всплывающей панели и стрелочке, по которой открываются настройки?

 

 

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

Как удалить описание общего параметра

Еще один небольшой пример, демонстрирующий достоинства утилиты RevitLookup.

В данной статье покажем это на примере удаления описания общего параметра, который предоставил нам Trevor Taylor из компании ZGF.

Задача

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

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

Определение типа электрооборудования

Вопрос: Как правильно определить различия между распределительным щитом и щитом осветительных и бытовых приборов с помощью API? Например, из базового примера проекта Revit MEP, как мне определить тип оборудования SWB и MDP-1?

 

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

Уникальность наименования и класс NamingUtils

В Revit API полно сюрпризов. Вот один из них, которых правел нас к новому вспомогательному классу, который раньше был не замеченным.

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

Версия документа и количество сохранений

Александр Бушман (Alexander Buschmann) из компании IDAT Ingenieurbüro für Datenverarbeitung in der Technik GmbH прокомментировал статью о том, как отследить изменение семейства:

В Revit 2015 есть класс DocumentVersion, в котором есть свойства GUID и количество сохранений файла.

Имея эту информацию можно определить, были ли сделаны изменения или нет.

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

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

Обработка случая дублирования типоразмеров при копировании элементов через API

При использовании метода ElementTransformUtils.CopyElements можно получить вот такое вот предупреждение:

 

Обработка случая дублирования типоразмеров при копировании элементов через API

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

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

Изменение стадии вида

Вопрос: Возможно ли изменение стадии вида? Например, хотелось бы видеть свойство типа View.Phase.

Я попробовал изменить стадию, но безрезультатно.

Спасибо за помощь.

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

Каждая кнопа на ленте привязана только к одной команде

Вопрос: Я бы хотел реализовать только одну внешнюю команду и вызывать ее при нажатии любой из кнопок, которые я создал в своем приложении. Все дело в том, что я хочу уменьшить количество кнопок на ленте, так как некоторые из них должны быть активны только в определенный момент. Как в методе Execute я могу определить какая именно кнопка была нажата, чтобы выполнить соответствующие действия? Например, можно ли определить название кнопки, на которую нажал пользователь?

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

Обновление файлов семейств без отображения диалога. Часть 2

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

Предложения были такими:

Разработчик, которого интересовал этот вопрос, попытался использовать эти способы. Я хотел бы обсудить что в итоге вышло.

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

Преобразование ссылок на геометрию объекта в связанных файлах

В Revit API 2014 появились дополнительные методы для работы со связанными файлами. Среди них:

  • Reference.LinkedElementId
  • Reference.CreateLinkReference
  • Reference.CreateReferenceInLink

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

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

Обновление файлов семейств без отображения диалога

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

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

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

Фильтрация системных семейств

Вопрос: Возможно ли создать такой фильтр, чтобы получить только системные семейства, игнорируя пользовательские? Я пробовал использовать пример, описанный в статье http://adndevblog.typepad.com/aec/2012/05/accessing-system-families-in-a-revit-template.html, однако, этот фильтр возвратил все семейства.

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

Работа с кодом надстройки для различных версий RevitАвтор: Виктор Чекалин

Как правило, с выпуском новой версии Revit меняется и его API – появляются новые методы, исчезают старые. Надстройка же зачастую должна работать как в новой версии, так и в старой. Разработчик должен при этом должен как-то обслуживать код для различных версий Revit.

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

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

Revit 2015 Обновление 3

Вышло третье обновление для Revit 2015.

Обновление включает в себя большое количество важных улучшений из них:

  • 45 – для Revit Architecture
  • 18 – для Revit MEP
  • 7 – для Revit Structure
  • 9 – для Revit API
Опубликовано 06.08.2014     Читать далее >>>
24/07/2014

Извлечение полезной информации об элементе

Вопрос: Я бы хотел определить, какие элементы лежат на другом элементе.

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

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

Секция конструкции

Следующий пример по созданию секции конструкции был реализован Andrzej Trelinski из команды разработчиков Revit, за что ему большое спасибо.

В примере демонстрируется, как можно программно создать секцию конструкции для балки. Интересной особенностью, является то, что метод FamilySymbol.HasStructuralSection, не смотря на свое название (имеет секцию конструкции – прим. переводчика), возвращает ИСТИНА, в том случае, если типоразмер лишь может содержать в себе секцию конструкции.

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

Список элементов инженерной системы. ПродолжениеАвтор: Виктор Чекалин

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

Для этого я использовал значение параметра элемента Имя системы и затем сравнивал его с наименованием конкретной системы. Для этого я использовал фильтр ElementParameterFilter, позволяющий выбирать элементы по значению параметра:

Код - C#: [Выделить]
            FilterableValueProvider valueProvider =

                new ParameterValueProvider(new ElementId(BuiltInParameter.RBS_SYSTEM_NAME_PARAM));

 

            FilterRule filterRule =

                new FilterStringRule(valueProvider, new FilterStringEquals(), system.Name, true);

 

            ElementParameterFilter systemNameParameterFilter =

                new ElementParameterFilter(filterRule);

 

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

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