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

Автор Тема: Создание пользовательской закрепляемой панели  (Прочитано 2331 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Виктор Чекалин

  • Administrator
  • *****
  • Сообщений: 669
  • Карма: 90
  • Skype: chekalin-v
SatanaXIII, а как вы в итоге вызываете методы из закрепляемой панели?
Стоит отметить, что работа с Revit API возможна только в "правильных" контекстах. Вы не можете вызывать методы Revit API откуда попало. Случай с закрепляемой панелью похож на работу с немодальным окном.

Есть небольшая статья по этому поводу.

Оффлайн SatanaXIII

  • ADN OPEN
  • Сообщений: 13
  • Карма: 0
Есть небольшая статья по этому поводу.
Статью читал. В ней сказано, что через событие Idling все же можно добраться до модели ревита.
Стоит отметить, что работа с Revit API возможна только в "правильных" контекстах. Вы не можете вызывать методы Revit API откуда попало. Случай с закрепляемой панелью похож на работу с немодальным окном.
Опять же некоторые методы можно вызывать откуда попало, некоторые нельзя (см. пример). Эта неточность вносит некоторый сумбур.

SatanaXIII, а как вы в итоге вызываете методы из закрепляемой панели?
Приведу пример:
Извините, вам запрещён просмотр содержимого спойлеров.

Таким образом получить список выбранных элементов (GetElementIds) можно, а вот выбрать (PickElementsByRectangle) нет.

Оффлайн Виктор Чекалин

  • Administrator
  • *****
  • Сообщений: 669
  • Карма: 90
  • Skype: chekalin-v
SatanaXIII,
Когда вызывается метод EventSelect.Raise(); - вот тут то как раз и происходит выполнение метода RevitAPI в неправильном контексте. Последствия могут быть, а могут и не быть.
Вообще изначальная ошибка говорит о том, что вид не подходящий для выбора объектов.
Если вы обработке события Idling отобразить текущий вид, что там будет?
Код - C# [Выбрать]
  1. var currentView = uapp.ActiveUIDocument.ActiveView;
Интересует тип вида и название.

Оффлайн SatanaXIII

  • ADN OPEN
  • Сообщений: 13
  • Карма: 0
Когда вызывается метод EventSelect.Raise(); - вот тут то как раз и происходит выполнение метода RevitAPI в неправильном контексте. Последствия могут быть, а могут и не быть.
Почему же в неправильном? Событие же я могу вызвать в любом месте, главное чтобы обработчик был в правильном.

Вообще изначальная ошибка говорит о том, что вид не подходящий для выбора объектов.
Если вы обработке события Idling отобразить текущий вид, что там будет?
Интересует тип вида и название.
Конечно же первым делом я проверил не сбрасывается ли текущий вид на какой-либо другой. Не сбрасывается.
Название: 3D вид: {3D}
Тип вида: ThreeD