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

ADN Club => Revit API => Тема начата: enot от 15-08-2019, 12:47:50

Название: CurtainWall Host
Отправлено: enot от 15-08-2019, 12:47:50
Витраж CurtainWall и Стена Wall относятся к классу Wall ,не имеющего свойства Host
Витраж можно вставить в стену и при этом будет вырезан контур, как в случае вставки двери или окна.
Вопрос : как определить вставлен ли витраж в стену ?
Название: Re: CurtainWall Host
Отправлено: Александр Пекшев aka Modis от 15-08-2019, 12:53:53
Если стена является витражной, то у нее будут элементы в свойстве CurtainGrid. Если стена обычная, то CurtainGrid == null
Название: Re: CurtainWall Host
Отправлено: Александр Игнатович от 15-08-2019, 12:57:31
У стены, в которую вставляется витраж в списке, возвращаемом методом FindInserts, могут быть элементы витражных стен. 3 параметр includeEmbeddedWalls
Название: Re: CurtainWall Host
Отправлено: enot от 15-08-2019, 13:04:36
FindInserts
Стенка линкованная , FindInserts вообще ничего не возвращает (не знаю может что то не так делаю...)

3 параметр includeEmbeddedWalls
это где можно посмотреть?
Название: Re: CurtainWall Host
Отправлено: Александр Игнатович от 15-08-2019, 13:06:44
Метод вызывать надо у стены, в которую вставляется витраж.

Что значит "линкованная"?
Название: Re: CurtainWall Host
Отправлено: enot от 15-08-2019, 13:07:23
линкованная
из связанного документа )
Название: Re: CurtainWall Host
Отправлено: enot от 15-08-2019, 13:09:39
Метод вызывать надо у стены
у стены нет такого свойстсва...
https://www.revitapidocs.com/2019/d0678575-843b-42ea-c91d-c94b13d7dd4f.htm
Название: Re: CurtainWall Host
Отправлено: Александр Игнатович от 15-08-2019, 13:22:02
у стены нет такого свойстсва...
Э? Шта?

(https://i.ibb.co/zHMyZXS/image.png) (https://ibb.co/CsckQbn)

https://www.revitapidocs.com/2019/58990230-38cb-3af7-fd25-96ed3215a43d.htm

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

Название: Re: CurtainWall Host
Отправлено: Александр Игнатович от 15-08-2019, 14:01:47
Так. Для связанных файлов этот вопрос не имеет смысла. В одном файле по одной линии создаются 2 стены, а затем из одной вырезается вторая (витраж). Вырезать из стены в связанном файле витражную стену в текущем нельзя. Так что витражная стена просто имеет какое-то положение и геометрию.
Название: Re: CurtainWall Host
Отправлено: Александр Пекшев aka Modis от 15-08-2019, 14:03:42
У стены, в которую вставляется витраж в списке, возвращаемом методом FindInserts, могут быть элементы витражных стен. 3 параметр includeEmbeddedWalls
А к EmbeddedWalls может относится что-то еще, кроме витражных стен?
Название: Re: CurtainWall Host
Отправлено: Александр Игнатович от 15-08-2019, 14:13:27
Да не должно вообще говоря.
Название: Re: CurtainWall Host
Отправлено: enot от 15-08-2019, 14:43:10
Так. Для связанных файлов этот вопрос не имеет смысла. В одном файле по одной линии создаются 2 стены, а затем из одной вырезается вторая (витраж). Вырезать из стены в связанном файле витражную стену в текущем нельзя. Так что витражная стена просто имеет какое-то положение и геометрию.
Видимо еще не вник в суть ответа...

у меня вся геометрия , стены с вставленными в них окнами /дверьми / витражными стенами находятся в связанном документе.

Подскажите, у Вас вообще FindInserts из линк-стены что то возращает - двери /окна?
Название: Re: CurtainWall Host
Отправлено: Александр Игнатович от 15-08-2019, 15:18:46
А, ну тогда другой вопрос. FindInserts работает без проблем, как в основном, так и в связанном файле.

Вероятно, Вы таки не внимательно читаете ответы. Insert-ы ищем не у витражной стены, а у той, в которую витражная вставлена
Название: Re: CurtainWall Host
Отправлено: enot от 15-08-2019, 15:22:29
Вероятно, Вы таки не внимательно читаете ответы. Insert-ы ищем не у витражной стены, а у той, в которую витражная вставлена
у меня как раз в первый вопрос был:
как определить вставлен ли витраж в стену ?
То есть имея витраж в связанном файле , определить вставлен ли он в стену, если да то в какую.
Тут видимо надо идти от обратного : ищем вначале все стены потом через Embedeed находим CurtainWall и сравниваем с текущим CurtainWall связанного файла (а спец метода по моему вопросу нет)
Название: Re: CurtainWall Host
Отправлено: Александр Игнатович от 15-08-2019, 15:25:56
Разверните задачу, пройдитесь по стенам в проекте, найдите вставленные в них витражи, соберите новый кортеж - (витраж, родительская стена)
Название: Re: CurtainWall Host
Отправлено: enot от 15-08-2019, 15:30:34
Разверните задачу, пройдитесь по стенам в проекте, найдите вставленные в них витражи, соберите новый кортеж - (витраж, родительская стена)

Финальный вопрос : если мне конкретно витражи нужны , то стоит ли в свойстве FinInserts для addRectOpenings поставить false (насколько я понимаю здесь будет поиск дверей и окон)

 
Цитировать
IList<ElementId> FindInserts(
   bool addRectOpenings,
   bool includeShadows,
   bool includeEmbeddedWalls,
   bool includeSharedEmbeddedInserts
)

т.е. для ускорения поиска вставленных витражей производить поиск так : FindInserts(false, false, true, false) ?

------------------------------------------------------------------------
ps постфинальный вопрос includeSharedEmbeddedInserts - что это...  :-\
Название: Re: CurtainWall Host
Отправлено: Александр Игнатович от 15-08-2019, 15:57:05
т.е. для ускорения поиска вставленных витражей производить поиск так : FindInserts(false, false, true, false) ?

Да

ps постфинальный вопрос includeSharedEmbeddedInserts - что это...  :-\

Например, вент.фасады моделируют отдельной параллельной стеной и объединяют геометрию этих 2 стен. В этом случае, дверь или окно также прорезает стену, моделирующую вент.фасад. При запуске FindInserts на вент.фасадной стенке будут найдены экземпляры семейств, у которых host не совпадает с этой стеной
Название: Re: CurtainWall Host
Отправлено: enot от 15-08-2019, 16:09:07
При запуске FindInserts на вент.фасадной стенке будут найдены экземпляры семейств, у которых host не совпадает с этой стеной
Вы имеете  ввиду такое будет при запуске FindInserts  с опцией includeSharedEmbeddedInserts  = true ?
Название: Re: CurtainWall Host
Отправлено: Александр Игнатович от 15-08-2019, 16:42:28
Да, конечно.
Название: Re: CurtainWall Host
Отправлено: enot от 15-08-2019, 17:02:55
Большущее спасибо ! Очень благодарен!
Название: Re: CurtainWall Host
Отправлено: enot от 15-08-2019, 22:52:18
Обнаружил пару проблем для витража из связанного документа
1.) FindInserts ничего не возвращает
2.) Не получается получить Solid этого витража
Название: Re: CurtainWall Host
Отправлено: Александр Игнатович от 16-08-2019, 10:18:25
1) FindInserts работает, проверяйте свой код/модель
2) Витражные стены твердотельной геометрии не имеют, да. В связанном или не связанном файле значения не имеет. Геометрия есть у импостов и панелей.
Название: Re: CurtainWall Host
Отправлено: enot от 16-08-2019, 11:29:37
FindInserts не находит ничего ни в связанном, ни в самом документе.

Возможно проблема в самом витраже?

https://cloud.mail.ru/public/5t1W/4xNcnixXJ 
Название: Re: CurtainWall Host
Отправлено: Александр Игнатович от 16-08-2019, 12:23:58
Э?? У Вас в модели ровно одна стена. Витражная. Что по вашему должен найти метод FindInserts?
Название: Re: CurtainWall Host
Отправлено: enot от 16-08-2019, 12:25:01
Панели витража/импосты
Название: Re: CurtainWall Host
Отправлено: Александр Игнатович от 16-08-2019, 12:28:22
Код - C# [Выбрать]
  1. wall.CurtainGrid.GetPanelIds();

Код - C# [Выбрать]
  1. wall.CurtainGrid.GetMulionIds();
Название: Re: CurtainWall Host
Отправлено: enot от 16-08-2019, 12:32:35
Точно..
Мда, а то уже залез в  GetDependentElements и там их нашел...
А возможно , что стена вставлена в другую стену ? или в стену можно вставить только витраж ?
Название: Re: CurtainWall Host
Отправлено: enot от 16-08-2019, 12:35:13
Код - C# [Выбрать]
wall.CurtainGrid.GetPanelIds();

Код - C# [Выбрать]
wall.CurtainGrid.GetMulionIds();

В витраж могут быть вставлены двери (где то такое видел, если не ошибаюсь), GetPanelIds мне кажется их не определит ?
Название: Re: CurtainWall Host
Отправлено: Александр Игнатович от 16-08-2019, 12:39:14
В витраж могут быть вставлены двери , GetPanelIds мне кажется их не определит ?

чойто?

А возможно , что стена вставлена в другую стену ? или в стену можно вставить только витраж ?

Бывают составные стены ещё.

Вроде как вырезание геометрии работает только между обычной и витражной стенкой
Название: Re: CurtainWall Host
Отправлено: Александр Игнатович от 16-08-2019, 12:44:38
Кстати, в витражные стены двери / окна напрямую не вставляются.  Но есть возможность панели витража задать типоразмер стены, тогда можно вставлять уже в эту панель окно/дверь. Либо моделировать окна/двери теми же панелями витража
Название: Re: CurtainWall Host
Отправлено: enot от 16-08-2019, 12:51:57
Но есть возможность панели витража задать типоразмер стены, тогда можно вставлять уже в эту панель окно/дверь.
Воот , как тогда эту дверь получить?

https://cloud.mail.ru/public/UDB6/5LTp61P2R
Название: Re: CurtainWall Host
Отправлено: Александр Игнатович от 16-08-2019, 12:57:34
Вот она
(https://i.ibb.co/8Kjz69c/image.png) (https://ibb.co/znS8GZJ)
Название: Re: CurtainWall Host
Отправлено: enot от 16-08-2019, 13:09:15
Вот она
Значит витражная дверь входит в состав панелей... Добрались таки с Вашей помощью до истины)

Жаль что нет метода , определяющего в какую стену вставлен витраж (типа CurtainWall.OwnerWall ),
так что лучшим решением пока остается :
Разверните задачу, пройдитесь по стенам в проекте, найдите вставленные в них витражи, соберите новый кортеж - (витраж, родительская стена)

а с остальным все ок

Спасибо ! :)


Название: Re: CurtainWall Host
Отправлено: Александр Игнатович от 16-08-2019, 13:12:37
Так эта дверь и создавалась как панель витража. Её в обычную стену и не вставишь. Ну и FindInserts находит вставленные витражные стены, так что претензий особых не должно быть