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

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     Читать далее >>>
13/07/2014

Использование объекта DataStorage для хранения настроекАвтор: Виктор Чекалин

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

Традиционно для этих целей использовались общие параметры, затем, расширяемая область хранения Extensible Storage. Но у обоих вариантов возникала проблема, какой элемент нужно использовать для хранения параметра или к какому применить расширяемую область. Одним из вариантов – использовать элемент ProjectInfo, содержащий в себе информацию о проекте.

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

В Revit 2013 API для этих целей появился специальный объект – DataStorage. Объект наследуется от класса Element, а, следовательно, его можно и нужно использовать для хранения расширяемой области хранения.

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

Отслеживание изменения семейства

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

Вот один из подобных вопросов:

Вопрос: Меня все время спрашивают, как можно защитить мои семейства от изменения их пользователями.

Было бы очень неплохо, если я хотя бы смог определить, что в семейство были внесены некие изменения.

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

Доступ к значению параметра "Экспортировать виды на листах и ссылки на внешние связи" в диалоге экспорта в формат САПР через API

Вопрос: При экспорте модели в файл DWG (или другие форматы САПР) в диалоге «Экспорт в форматы САПР» есть галочка «Экспортировать виды на листах и ссылки на внешние связи». Как можно управлять этим же параметром програмно через API?

 

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

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

В Revit 2014 появилась еще одна реализация перегруженного метода PickObject, позволяющая выбрать элемент из связанного файла – PickObject(ObjectType.LinkedElement). Многие разработчики оценили это нововведение. Тем не менее, у многих возникает проблема – как в итоге получить сам выбранный элемент. Свойство Reference.ElementId не возвращало идентификатор выбранного элемента.

 

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

Как определить тип выступающего профиля стены (Wall Sweep Type) для использования в методе WallSweep.Create()

Вопрос: В Revit SDK есть метод для создания выступающего профиля стены. Он объявлен как:

Код - C#: [Выделить]
 WallSweep.Create( Wall wall,

ElementId wallSweepType,

WallSweepInfo wallSweepInfo)

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

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

Открытие пользовательского файла справки при нажатии F1 в кнопке на ленте

Для открытия вашего собственного файла справки (файл .chm), при нажатии на кнопку F1 в момент выделения кнопки на ленте, нужно воспользоваться классом ContextualHelp. ContextualHelp позволяет открыть файл справки, находящемся на локальной машине пользователя, или перейти по внешней ссылке для отображения справки по работе с вашей надстройкой.

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

Как определить является ли текущий пользователь владельцем элемента при совместной работеАвтор: Виктор Чекалин

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

 

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

Обновлять или добавлять схему расширяемой области хранения (Extensible Storage)

Вопрос: Я выпустил релиз своей надстройки, где я использую схему.

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

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

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

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

Минимальный размер DirectShape

В Revit 2015 API появилась возможность импортировать геометрию элементов напрямую в проект. В API, класс DirectShape представляет собой геометрическую фигуру.

У одного из пользователей возник вопрос, касающийся использования данного класса

Вопрос: Я создаю фигуры (DirectShape)  в Revit 2015 API из имеющегося набора поверхностей при помощи класса TessellatedShapeBuilder.

Проблема в том, что минимально допустимая длина грани, с которой Revit может работать равна 0,0026 фута. Если я пытаюсь использовать грань длиной 0,0025 фута, то Revit падает с ошибкой.

Можно ли изменить этот минимальный допуск?

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

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

Обработка ошибок и предупреждений

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

Вопрос: Возможно ли с помощью Revit MEP 2011 API обрабатывать сообщения с предупреждениями?

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

И еще, если предупреждения могут быть перехвачены и обработаны, можно ли так же обработать сообщения об ошибках? Например, если при работе возникает ошибка, можно ли программно определить номер ошибки, выбрать подходящее действие для обработки этой ошибки и продолжить выполнение некоторых действий без фактического отображения диалога?

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

Новые примеры в Revit SDK 2015

Новые примеры в Revit SDK 2015

Первый релиз Revit SDK 2015 включает в себя 4 новых примера, демонстрирующих функциональность нового Revit API:

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

Идентификаторы элементов в Revit - Часть 4. Числовой и уникальный идентификатор меняется при повторном импорте

Предыдущие части:

Вопрос: Мы столкнулись с проблемой при повторном импорте измененного IFC файла в Revit, так как числовой и уникальный идентификатор оказались не надежными.

В результате, все ссылки на связанную модель (вне IFC), такие как размерность, потерялись, после того, как мы заново импортировали отредактированную модель. Нам пришлось повторно подгонять импортированную модель.

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

Идентификаторы элементов в Revit - Часть 3. Отрицательные значения ElementId

Предыдущие части:

Вопрос: Иногда я вижу отрицательные значения ElementId. Что это, и почему такое может быть?

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

Revit как сервис

За довольно короткое время уже несколько человек задавали вопрос о том можно ли использовать приложение Revit как услугу (сервис). Видимо пришло время разобрать этот вопрос поподробней.

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

Доступ к Revit из внешнего приложенияАвтор: Виктор Чекалин

Как известно, официального API для доступа к Revit из внешнего приложения не существует.

Тем не менее, можно реализовать его самостоятельно, хоть и с некоторыми ограничениями.

Обращаться к методам Revit API можно только в определенных контекстах:

  • открытие/закрытие приложения (IExternalApplication.OnStartup и IExternalApplication.OnShutdown)
  • Выполнение внешней команды (IExternalCommand.Execute)
  • Событие Idling (UIApplication.Idling)
  • Внешние события (ExternalEvents)

Ни один из этих способов недоступен вне приложения Revit.

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