Сообщество программистов Autodesk в СНГ
ADN Club => Revit API => Тема начата: enot от 28-01-2019, 19:03:53
-
Возможно ли получить Solid из витража ?
-
Так посмотрите через Lookup что возвращается в геометрии
-
Нету у витража твердотельной геометрии, но можно получать геометрию панелей и импостов
-
Да, солид , вроде как извлекается (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)
-
Только solid тот номинальный, с 0 объемом и, скорее всего, без поверхностей. Ещё раз повторяю, твердотельной геометрии у витража нет, плавали-знаем, только панели / импосты
-
плавали-знаем
значит-таки, нужно плыть в направлении
Curtaingrid. GetPanelIds() => пробуем получить солиды ?
-
В точку
-
Мерси,
а потом все эти солиды еще и соединим => и будет цельный солид, как и хотелось
-
Скорее, сеточка, там же ещё импосты
-
+ GetMullionIds()
Получилось, спасибо!
-
В качестве альтернативного варианта, если таки будут какие-то проблемы, можно воспользоваться temporary transaction trick:
1) открываем транзакцию
2) меняем типоразмер стенки на типоразмер обычной стенки нужной толщины
3) doc.Regenerate()
4) получаем solid стенки, делаем нужные расчеты
5) откатываем транзакцию (RollBack)