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

ADN Club => Revit API => Тема начата: Agens от 25-11-2020, 16:03:16

Название: BoundarySegment
Отправлено: Agens от 25-11-2020, 16:03:16
Можно ли BoundarySegment привести к другому объекту или взять геометрию?
Иногда в примерах проскакивает:

Код - C# [Выбрать]
  1. foreach (BoundarySegment bs in bsa)
  2. {
  3. Wall revitWall = bs.Element as Wall;
  4. ...
  5.  

но у меня так не получается...

в данном примере: https://thebuildingcoder.typepad.com/blog/2013/10/determining-a-room-boundary-segment-generating-element.html

{Element e = seg.Element;}

Код - C# [Выбрать]
  1.       foreach( BoundarySegment seg in loop )
  2.       {
  3.         Element e = seg.Element;
  4.  
  5.         string s = "Element property";
  6.  
  7.         if( null == e )
  8.         {
  9.           s = "GetElementByRay";
  10.  
  11.           e = GetElementByRay( uiapp, doc, view3d,
  12.             seg.Curve );
  13.         }
  14.  

Что за магия? Или все зависит от пути, по которому мы получаем элемент?
Название: Re: BoundarySegment
Отправлено: Александр Игнатович от 26-11-2020, 11:20:22
API немного поменялось

(https://i.postimg.cc/kB8HHgwZ/boundary-segment.png) (https://postimg.cc/kB8HHgwZ)

Геометрия - метод GetCurve(), сам ограничивающий элемент ElementId / ElementId+LinkElementId
Название: Re: BoundarySegment
Отправлено: Agens от 26-11-2020, 11:33:15
курву я то получу, хотелось бы трехмерный кусок стены заполучить.
все равно я не понял, как они получили стену, без LinkElementId. может API поменялось с 2013 года.
Название: Re: BoundarySegment
Отправлено: Александр Игнатович от 26-11-2020, 11:54:28
API немного поменялось
Название: Re: BoundarySegment
Отправлено: Agens от 27-11-2020, 08:47:44
Спасибо, если так...
Т.е раньше Wall наследовало Element, а Element BoundarySegment, тогда
можно ли простым способом получить кусок стены (3D геометрию), или нужно тупо ее построить, взяв WallType и Curve?