Получить все виды элемента

Автор Тема: Получить все виды элемента  (Прочитано 4319 раз)

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

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

  • ADN OPEN
  • *****
  • Сообщений: 525
  • Карма: 2
каков наиболее эффективный способ поиска видов , на котором расположен (отображен) определенный элемент (Element.Id)?

Отмечено как Решение enot 01-10-2018, 13:53:54

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

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: Получить все виды элемента
« Ответ #1 : 01-10-2018, 10:22:36 »
Эффективный способ есть только для тех элементов, которые существуют только на каком-либо виде, т.е. аннотации, линии детализации, элементы узлов. У них есть свойство OwnerViewId.

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

  • ADN OPEN
  • *****
  • Сообщений: 525
  • Карма: 2
Re: Получить все виды элемента
« Ответ #2 : 01-10-2018, 13:53:47 »
Хорошо, понял. Значит только собрать коллектором виды и на них пробовать получить элемент. Спасибо

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: Получить все виды элемента
« Ответ #3 : 02-10-2018, 00:52:07 »
А если немного поразмыслить о сути Ревита как о базе данных, то такого вопроса даже не возникнет, ибо вид может знать об элементе, а вот элемент не может знать ничего ни о каких видах. Он даже может везде выглядеть по разному и тоже об этом не знать =))

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

  • ADN OPEN
  • *****
  • Сообщений: 525
  • Карма: 2
Re: Получить все виды элемента
« Ответ #4 : 06-10-2018, 09:06:41 »
Почему элемент не может знать на каком виде он расположен , если есть свойство ownerviewid ?
Мы собираем все экземпляры элемента , например FamilyInstance во всем документе, и для каждого получаем вид
Если мы собираем экземпляры элементов через FilteredElementCollector(doc)... FamilyInstance то получаем все экземпляры, которые точно расположены на каком либо виде, верно?
Другое дело, если мы пытаемся получить ownerview , например family. Тут должна быть ошибка

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Получить все виды элемента
« Ответ #5 : 06-10-2018, 15:04:40 »
Почему элемент не может знать на каком виде он расположен , если есть свойство ownerviewid ?
Простое объяснение. А если элемент виден не на одном, а на нескольких видах? Какое тогда значение у его ownerviewid? ownerviewid имеет смысл только для элементов, которые есть только на виде и их нет в модели, как написал Александр Игнатович.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • *****
  • Сообщений: 525
  • Карма: 2
Re: Получить все виды элемента
« Ответ #7 : 06-10-2018, 16:23:43 »
которые есть только на виде и их нет в модели
Да об этом было сказано ранее, но только сейчас это понял...
Спасибо

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Получить все виды элемента
« Ответ #8 : 06-10-2018, 16:26:00 »
которые есть только на виде и их нет в модели
Только сейчас понял...
Спасибо
Есть еще одна особенность. Элемент может иметь свойство Visible на конкретном виде, но реально не виден (он за пределами области видимости данного вида). Так что это тоже нужно учитывать.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • *****
  • Сообщений: 525
  • Карма: 2
Re: Получить все виды элемента
« Ответ #9 : 06-10-2018, 16:29:45 »
он за пределами области видимости данного вида
область видимости? речь идет об границах обрезки вида ? или о чем

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Получить все виды элемента
« Ответ #10 : 06-10-2018, 16:31:23 »
речь идет об границах обрезки вида ?
Да.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • *****
  • Сообщений: 525
  • Карма: 2
Re: Получить все виды элемента
« Ответ #11 : 06-10-2018, 16:59:38 »
Есть еще одна особенность. Элемент может иметь свойство Visible на конкретном виде, но реально не виден (он за пределами области видимости данного вида). Так что это тоже нужно учитывать.
Как это можно учесть (если элемент Visible но находится за пределами обрезки)? Как вариант собрать коллектором все элементы на виде, а затем сравнить с текущим элементом ? так как коллектор дает элементы , которые реально видны на виде...

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Получить все виды элемента
« Ответ #12 : 06-10-2018, 18:47:54 »
так как коллектор дает элементы , которые реально видны на виде...
Если это так, то ничего делать не нужно. Если это не так, то нужно сравнивать CropBox вида с BoundingBox для элемента.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: Получить все виды элемента
« Ответ #13 : 08-10-2018, 09:52:48 »
Не надо усложнять =) При использовании FilteredElementCollector с указанием конкретного вида в результат попадают только видимые на этом виде элементы

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

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: Получить все виды элемента
« Ответ #14 : 08-10-2018, 10:41:09 »
Не надо усложнять =) При использовании FilteredElementCollector с указанием конкретного вида в результат попадают только видимые на этом виде элементы

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