Ошибка при получении геометрии арматуры

Автор Тема: Ошибка при получении геометрии арматуры  (Прочитано 1836 раз)

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

Оффлайн VladislavАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 116
  • Карма: 0
Добрый день.
При попытке получить геометрию арматурных элементов возникает такая ошибка
(скрин прилагаю). Не могу понять, в чем дело...
Это возникает не со всеми файлами, где есть армирование.
Спасибо за ответы.

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 734
  • Карма: 240
  • Skype: alexandr.ignatovich.itc
Такое в твоем приложении только? В Revit lookup пробовал посмотреть, то же самое выдаст?

Оффлайн VladislavАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 116
  • Карма: 0
Нет, а где взять Lookup?

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 734
  • Карма: 240
  • Skype: alexandr.ignatovich.itc

Оффлайн VladislavАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 116
  • Карма: 0
А что нужно смотреть в Lookup?
По Snoop DB никаких ошибок нет...
« Последнее редактирование: 14-02-2020, 12:34:22 от Vladislav »

Оффлайн Agens

  • ADN OPEN
  • ***
  • Сообщений: 163
  • Карма: 0
очень похоже, что не находит какую-то сборку
VS2019, VBA 7.1, VB.NET, C#, ACAD2019, Revit 2020

Оффлайн VladislavАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 116
  • Карма: 0
Если перед получением геометрии я добавляю проверку Rebar.IsValidObject, то для части арматуры все хорошо.
Но это только половина всей арматуры. Получается, что вторая половина - это невалидные объекты...
Почему, не ясно...

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 734
  • Карма: 240
  • Skype: alexandr.ignatovich.itc
что не находит какую-то сборку
Кто не находит?

Геометрию случаем не в рамках активной транзакции получаешь? Если да, то стОит попробовать регенерировать документ сначала

Оффлайн VladislavАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 116
  • Карма: 0
Перед получением геометрии я делаю отображение всей арматуры на виде в форме сплошного тела.
Это в рамках транзакции. Потом она закрывается. И уже после этого происходит получение геометрии.
А как регенерировать документ средствами API? Может, это в любом случае стоит сделать?

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 734
  • Карма: 240
  • Skype: alexandr.ignatovich.itc
Правильно ли я понял, что ты
1) получаешь какие-то элементы
2) вносишь изменения в модель
3) работаешь со списком элементов из п.1
?

Тогда невалидность элементов, в общем-то, может и не ожидаемое (т.к., в большинстве случаев Revit обрабатывает весьма корректно), но не удивительное явление, попробуй после внесения изменений получить элементы, геометрия которых тебя интересует заново.

А как регенерировать документ средствами API?
Код - C# [Выбрать]
  1. document.Regenerate();

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

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

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

Оффлайн VladislavАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 116
  • Карма: 0
Примерно так.
Но все изменения, которые я делаю - это превращение армирования по площади в одиночные стержни
и отображение всей арматуры в виде тела.

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 734
  • Карма: 240
  • Skype: alexandr.ignatovich.itc
Но все изменения, которые я делаю - это превращение армирования по площади в одиночные стержни
и отображение всей арматуры в виде тела.

Тогда, скорее удивительно, что в каких-то случаях вообще работает  ;D

Оффлайн VladislavАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 116
  • Карма: 0
А как тогда нужно поступить правильно?
Я разрабатываю и дорабатываю конвертер Revit-моделей.
И мне необходима геометрия арматуры.

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 734
  • Карма: 240
  • Skype: alexandr.ignatovich.itc
Как в ответе выше. После коммита транзакции заново получить из документа элементы

Оффлайн VladislavАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 116
  • Карма: 0
Это только арматуры касается?
То есть я заново должен получить объекты класса Rebar
после "удаления" армирования по площади?