Navisworks C#: ClashResult.

Автор Тема: Navisworks C#: ClashResult.  (Прочитано 2350 раз)

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

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

  • ADN OPEN
  • ***
  • Сообщений: 106
  • Карма: 6
Navisworks C#: ClashResult.
« : 22-11-2015, 19:33:52 »
Добрый день, у меня есть результаты теста на пересечения.
Мне необходимо получить ID Revit  элементов.
 
Код - C# [Выбрать]
  1.  DocumentClash documentClash = document.GetClash();
  2.     DocumentClashTests oDCT = documentClash.TestsData;
  3.     foreach (ClashTest test in oDCT.Tests)
  4.     {
  5.      
  6.                 foreach (SavedItem issue in test.Children)
  7.                 {
  8.                     ClashResult rt = issue as ClashResult;
  9.                 }
  10.   }
  11.  

Я пробовал получать через modelItem.PropertyCategories. При сравнении с результатами в GUI Navisworks выяснилось, что не всегда совпадает только  ID элемента. Может быть есть другой способ получения?

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

  • Administrator
  • *****
  • Сообщений: 692
  • Карма: 104
  • Skype: chekalin-v
Re: Navisworks C#: ClashResult.
« Ответ #1 : 23-11-2015, 10:09:53 »
Антон, Id ревитовского элемента для Navisworks'a представляет собой обычное свойства элемента. Больше он нигде не хранится. кроме как из свойств его вытянуть больше не откуда.
Мне не понятно что значит 
не всегда совпадает только  ID элемента
Можете пояснить?

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

  • ADN OPEN
  • ***
  • Сообщений: 106
  • Карма: 6
Re: Navisworks C#: ClashResult.
« Ответ #2 : 23-11-2015, 10:32:01 »
Виктор, из объекта я беру ряд свойств (слой, тип и др.). Я решил сравнить с данными, которые выдает отчет о пересечениях в Clash Detective Navisworks. И тут стало видно, что встречаются такие объекты, где разнятся ID с моими данными, другие свойства совпадают.

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

  • Administrator
  • *****
  • Сообщений: 692
  • Карма: 104
  • Skype: chekalin-v
Re: Navisworks C#: ClashResult.
« Ответ #3 : 23-11-2015, 10:46:02 »
где разнятся ID с моими данными, другие свойства совпадают.
Если совпадает тип, слой, материал и другие свойства, но не совпадает Element ID, то это и похоже на то, что работаете с другим объектом:) Ведь по сути Element ID это то что и различает ревитовские элементы одного типоразмера в Navisworks.
У вас много элементов в ClashReuslt? Я к тому что вы можете все результаты проверить визуально? Для того ID, который вы получаете в коде вы действительно не находите этот элемент в ClashResult?

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

  • ADN OPEN
  • ***
  • Сообщений: 106
  • Карма: 6
Re: Navisworks C#: ClashResult.
« Ответ #4 : 23-11-2015, 11:02:27 »
Виктор,вообще пересечений много, каждое возвращает два элемента. Визуально все проверить неудобно, но из тех, что я проверил, примерно 25-30 процентов ошибочные айдишники.

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

  • ADN OPEN
  • ***
  • Сообщений: 106
  • Карма: 6
Re: Navisworks C#: ClashResult.
« Ответ #5 : 23-11-2015, 11:05:09 »
Мне интересно почему один и тот же метод, возвращает ложные и верные данные. В чем тут может быть зависимость?

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

  • Administrator
  • *****
  • Сообщений: 692
  • Карма: 104
  • Skype: chekalin-v
Re: Navisworks C#: ClashResult.
« Ответ #6 : 23-11-2015, 13:09:53 »
примерно 25-30 процентов ошибочные айдишники
На самом деле я склоняюсь к тому, что Navisworks выдает все верно а не верно идет проверка.
Я не очень знаком с нависом в плане проверки коллизий. Есть ли возможность осуществить поиск элемента по параметру (в данном случае Element ID), среди полученных результатов?
Я бы проверял так:
1) Программным способом нашел Element ID
2) Поискал бы объект с этим ID среди результатов проверки.

А вы как проверяли?
Либо вообще на какой то тестовой просто модели проверял.

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

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

  • ADN OPEN
  • ***
  • Сообщений: 106
  • Карма: 6
Re: Navisworks C#: ClashResult.
« Ответ #7 : 23-11-2015, 13:21:02 »
Виктор, разобрался. ClashResult  возвращает два объекта типа ModelItem. У них  я и брал ID через PropertyCategories.DataProperty. Иногда возвращается ModelItem с существенно меньшим набором свойств. Именно они и были ошибочными. Для этого я беру его Parent, этот объект по такому же принципу возвращает валидный ID.
Только вот мне кажется ClashResult изначально должен был возвращать необходимый объект в цепочки  наследования.