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

ADN Club => Revit API => Тема начата: enot от 28-01-2019, 19:03:53

Название: Solid из витража
Отправлено: enot от 28-01-2019, 19:03:53
Возможно ли получить Solid из витража ?
Название: Re: Solid из витража
Отправлено: Александр Пекшев aka Modis от 28-01-2019, 19:08:25
Так посмотрите через Lookup что возвращается в геометрии
Название: Re: Solid из витража
Отправлено: Александр Игнатович от 28-01-2019, 19:30:03
Нету у витража твердотельной геометрии, но можно получать геометрию панелей и импостов
Название: Re: Solid из витража
Отправлено: enot от 28-01-2019, 19:32:49
Да, солид  , вроде как извлекается (MessageBox.Show(CurtainWall_Solid.SurfaceArea.ToString()); => дает положительное значение), но когда пытаюсь произвести операцию с солидом помещения:

Solid interSolid = BooleanOperationsUtils.ExecuteBooleanOperation(curtainGrid_Solid, Room_Solid, BooleanOperationsType.Intersect);
Получаю ошибку:

(https://i.postimg.cc/McmCcZcZ/Room-Curtain-Wall-Error.png) (https://postimg.cc/McmCcZcZ)
Название: Re: Solid из витража
Отправлено: Александр Игнатович от 28-01-2019, 19:35:08
Только solid тот номинальный, с 0 объемом и, скорее всего, без поверхностей. Ещё раз повторяю, твердотельной геометрии у витража нет, плавали-знаем, только панели / импосты
Название: Re: Solid из витража
Отправлено: enot от 28-01-2019, 19:37:34
плавали-знаем

значит-таки, нужно плыть в направлении
Curtaingrid.  GetPanelIds() => пробуем получить солиды ?
Название: Re: Solid из витража
Отправлено: Александр Игнатович от 28-01-2019, 19:38:53
В точку
Название: Re: Solid из витража
Отправлено: enot от 28-01-2019, 19:40:35
Мерси,
а потом все эти солиды еще и соединим => и будет цельный солид, как и хотелось
Название: Re: Solid из витража
Отправлено: Александр Игнатович от 28-01-2019, 19:42:27
Скорее, сеточка, там же ещё импосты
Название: Re: Solid из витража
Отправлено: enot от 28-01-2019, 19:47:27
+ GetMullionIds()
Получилось, спасибо!
Название: Re: Solid из витража
Отправлено: Александр Игнатович от 28-01-2019, 21:21:46
В качестве альтернативного варианта, если таки будут какие-то проблемы, можно воспользоваться temporary transaction trick:
1) открываем транзакцию
2) меняем типоразмер стенки на типоразмер обычной стенки нужной толщины
3) doc.Regenerate()
4) получаем solid стенки, делаем нужные расчеты
5) откатываем транзакцию (RollBack)