Добрый день!
Столкнулся с задачей создания размера для арматурного стержня. По поводу размеров для стен было написано неоднократно, я думал, что для стержня (для простоты взят стержень стандартной формы без отгибов) это будет так же. Однако столкнулся с проблемой: для создания размера нам нужны как минимум 2 Reference, соответственно нам нужны ссылки на концы стержня.
Методом
- var rebcc = (vertreb as Rebar).GetCenterlineCurves(false, false, false, MultiplanarOption.IncludeOnlyPlanarCurves).First(); 
мы получаем центральную линию стержня, но у этой линии нет возможности получить Reference концов.
- Reference rebendref = ((vertreb as Rebar).GetCenterlineCurves(false, false, false, MultiplanarOption.IncludeOnlyPlanarCurves).First() as Line).GetEndPointReference(0); 
выдает null. Это так же можно посмотреть через Revit LookUp, где в свойстве Rebar GetCenterlineCurves видно, что у Line нет EndReference (точнее они null)
В комментарии к свойству Reference класса Line я вычитал 
This value is set for curve geometry obtained from Revit elements. a null reference ( Nothing in Visual Basic) if the curve was created via parameters, copying, transform, or other operations.
 то есть построить параллельные линии по координатам конечных точек стержня и привязать к ним размер не получится. Поэтому я решил получить Line через геометрию стержня:
-             Options ropt = new Options(); 
-             ropt.ComputeReferences = true; 
-             ropt.IncludeNonVisibleObjects = false; 
-             ropt.DetailLevel = ViewDetailLevel.Medium; 
-             var rebg = vertreb.get_Geometry(ropt); 
-   
в результате снятия геометрии при настройке детализации "Средняя" или "Низкая" мы получаем единственный объект типа Line, у которого уже можем получить конечные точки, а так же, что нам и надо, ссылки на эти точки. 
но при добавлении полученных Reference в referenceArray для создания размера происходит непонятная штука - размер создается, но нулевой и не понятно куда привязанный.

Через Revit lookup я сравнил References созданного размера и References размера, поставленного вручную (правильного), отличий нет и в самих Reference нет указания на точку привязки, только на родительский элемент. 
Может кто-то сталкивался с такой проблемой? как образмерить линейный элемент?
код создания размера:
-            FilteredElementCollector rcollector = new FilteredElementCollector(doc,doc.ActiveView.Id).WhereElementIsNotElementType(); 
-             IList<Element> rebsonview =rcollector.OfCategory(BuiltInCategory.OST_Rebar).ToElements(); 
-                
-             var vertRebar = rebsonview.FirstOrDefault(x => ((x as Rebar).GetCenterlineCurves(false, false, false, MultiplanarOption.IncludeOnlyPlanarCurves).First() as Line).Direction.IsAlmostEqualTo(doc.ActiveView.UpDirection.Normalize()) || 
-                                                    ((x as Rebar).GetCenterlineCurves(false, false, false, MultiplanarOption.IncludeOnlyPlanarCurves).First() as Line).Direction.IsAlmostEqualTo(doc.ActiveView.UpDirection.Negate().Normalize())); 
-               
-             ReferenceArray secrefarr = new ReferenceArray(); 
-                
-             Options ropt = new Options(); 
-             ropt.ComputeReferences = true; 
-             ropt.View = doc.ActiveView; 
-             ropt.IncludeNonVisibleObjects = false; 
-   
-             GeometryElement rebg = vertRebar.get_Geometry(ropt); 
-   
-             secRefarr.Append((rebg.First() as Line).GetEndPointReference(0)); 
-             secRefarr.Append((rebg.First() as Line).GetEndPointReference(1)); 
-   
-            Line dmmline1 = Line.CreateUnbound(dimmPoint1,doc.ActiveView.UpDirection); 
-   
-            doc.Create.NewDimension(doc.ActiveView,dmmline2,secRefarr);