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

ADN Club => Revit API => Тема начата: shss от 08-11-2019, 14:28:23

Название: Получение элемента из связанного файла, находящегося в виде центральной модели
Отправлено: shss от 08-11-2019, 14:28:23
Добрый день!

У меня есть два файла модель с архитектурой (стенами/комнатами) и модель с фурнитурой, и модель с фурнитурой связана с архитектурной моделью. Каждый вид созданный в центральной(архитектурной) модели представляет собой отдельную комнату, в которой находится определенное количество фурнитуры из связанного файла. Есть ли возможность получить все связанные элементы, которые находятся, в выбранном виде?

Пробовал получить элементы из связанного файла, сравнивая, трансформированные координаты элемента с координатами CropBox и если элемент внутри, то работал с ним. Все работало неплохо до тех пор пока я не стокнулся с тем, что элемент связанного файла присутствует на виде, но по координатам он не попадает в CropBox, что очень странно.
Название: Re: Получение элемента из связанного файла, находящегося в виде центральной модели
Отправлено: Александр Игнатович от 08-11-2019, 14:35:59
Абсолютно ничего странного. Когда Вы работаете с документом связанной модели, Вы получаете координаты в пространстве модели связанного документа.

Чтобы перейти к координатам основной модели, нужно получить трансформ из RevitLinkInstance. Метод GetTotalTransform()
Название: Re: Получение элемента из связанного файла, находящегося в виде центральной модели
Отправлено: shss от 08-11-2019, 14:37:55
трансформированные координаты элемента с координатами CropBox
Да, я произвожу трансформацию координат элемента. В этом-то странность и заключается.
Через RevitLookup - Snoop Linked Element - Location (453, 122)
Snoop Active View - CropBox - Max (444, 108)
Название: Re: Получение элемента из связанного файла, находящегося в виде центральной модели
Отправлено: Александр Игнатович от 08-11-2019, 14:42:30
Принято.

Чтож, тогда, вероятно, дело в этом:

Цитировать
For elements which are outside of a crop region, they may still be passed by the collector because Revit relies on later processing to eliminate the elements hidden by the crop. This effect may more easily occur for non-rectangular crop regions, but may also happen even for rectangular crops. You can compare the boundary of the region with the element's boundary if more precise results are required.

Это цитата из документации к Revit 2020:
Цитировать
FilteredElementCollector Constructor (Document, ElementId)

В документации более ранних версий этого параграфа может не быть, участвовал в дискусии, благодаря которой добавилось это примечание
Название: Re: Получение элемента из связанного файла, находящегося в виде центральной модели
Отправлено: shss от 08-11-2019, 14:45:43
То есть - это баг? :)
И получается кроме, как через сравнение координат, другого способа получения элементов с вида нет?
Название: Re: Получение элемента из связанного файла, находящегося в виде центральной модели
Отправлено: Александр Игнатович от 08-11-2019, 14:48:07
Да, я произвожу трансформацию координат элемента. В этом-то странность и заключается.
Через RevitLookup - Snoop Linked Element - Location (453, 122)
Snoop Active View - CropBox - Max (444, 108)

В код RevitLookup-а не смотрел, но 99.9% координаты он для Linked Element не переводит.
Название: Re: Получение элемента из связанного файла, находящегося в виде центральной модели
Отправлено: Александр Игнатович от 08-11-2019, 14:49:58
И получается кроме, как через сравнение координат, другого способа получения элементов с вида нет?

Вообще есть CustomExporter, с 2020 можно любой вид обрабатывать, до этого - только 3D.

То есть - это баг?

ну и да и нет.

Тут вообще до 2020 плохо то, что вот так проверить видимость на конкретном виде элементов из связанного файла на 100% нельзя, ну, точнее, можно, но только для 3D. Например, можно скрыть элемент, применить фильтры, применить настройки вида для связанной модели.

С 2020 CustomExporter работает для любых видов, с его помощью уже 100% задача решается.
Название: Re: Получение элемента из связанного файла, находящегося в виде центральной модели
Отправлено: shss от 08-11-2019, 14:59:01
CustomExporter, мне не подходит, потому как у меня планы, а не 3D виды.
Название: Re: Получение элемента из связанного файла, находящегося в виде центральной модели
Отправлено: shss от 08-11-2019, 15:08:28
В код RevitLookup-а не смотрел, но 99.9% координаты он для Linked Element не переводит.
Да, верно, только что проверил, на другом примере.
Просто в первом примере линк и центральная модель в идентичной системе координат.
Название: Re: Получение элемента из связанного файла, находящегося в виде центральной модели
Отправлено: Александр Игнатович от 08-11-2019, 15:12:36
Ну в 2020 любой вид можно CustomExporter скормить :)

Попробуйте ещё пересечение с BoundingBox-ом элемента (естественно, с учётом Transform-а, в т.ч., возможно, поворота), может у него и правда Location где-то за пределами CropBox-а находится
Название: Re: Получение элемента из связанного файла, находящегося в виде центральной модели
Отправлено: shss от 08-11-2019, 15:16:43
Ну в 2020 любой вид можно CustomExporter скормить
Вот это полезная информация. К сожалению, пока на 2018.
может у него и правда Location где-то за пределами CropBox-а находится
А разве в этом случае он будет виден на View?
Название: Re: Получение элемента из связанного файла, находящегося в виде центральной модели
Отправлено: Александр Игнатович от 08-11-2019, 15:21:39
Ну вроде бы без проблем:

(https://i.postimg.cc/Hr0yxbqh/Cut.png) (https://postimg.cc/Hr0yxbqh)
Название: Re: Получение элемента из связанного файла, находящегося в виде центральной модели
Отправлено: shss от 08-11-2019, 15:24:32
Ааа, я про это и говорю :) У меня на виде-то он виден. А по координатам он находится з пределами
Название: Re: Получение элемента из связанного файла, находящегося в виде центральной модели
Отправлено: shss от 08-11-2019, 15:25:51
Ну тогда, буду пробовать CustomExporter в 20ой версии. А там, может и получится перевести пользователей на 20ую версию
Название: Re: Получение элемента из связанного файла, находящегося в виде центральной модели
Отправлено: Александр Игнатович от 08-11-2019, 15:25:56
Ну да, я предлагаю по BoundingBox проверить, а не по Location
Название: Re: Получение элемента из связанного файла, находящегося в виде центральной модели
Отправлено: Александр Игнатович от 08-11-2019, 15:26:34
Ну тогда, буду пробовать CustomExporter в 20ой версии. А там, может и получится перевести пользователей на 20ую версию


Ну это да, самое надёжное для таких задач.