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

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

Идентификаторы элементов в Revit. Часть 2

Продолжаем серию статей об идентификаторах в Revit

Часть 1: Уникальный идентификатор (UniqueId) или числовой (Element.Id)

Уникальность уникального идентификатора UniqueId

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

Идентификаторы элементов в Revit. Часть 1

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

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

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

Определение размера и месторасположения видов на листе

Рассмотрим, как можно определить размер и месторасположение листа и всех видов на нем.

В предыдущих версиях Revit сделать это было довольно проблематично.

Вот несколько статей на эту тему:

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

Определение категорий, поддерживающих привязку параметра типа или экземпляра

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

Код - C#: [Выделить]
  SortedList<string, Category> CatList

    = new SortedList<string, Category>();

 

  Categories cats = doc.Settings.Categories;

 

  foreach( Category cat in cats )

  {

    if( cat.AllowsBoundParameters )

    {

      CatList.Add( cat.Name, cat );

    }

  }  

Но как мне из этого списка понять, поддерживает ли категория привязку параметра типа или экземпляра?

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