Revit API - 如何获取现有详图线的原点和方向?

Revit API - How to get existing detail line Origin and Direction?

这可能是一个新问题,但我还没有找到关于它的任何信息。我找到了有关如何 create new detail lines 的信息,但仅此而已。

我正在尝试检索现有详图线的原点和方向,但我不知道该怎么做。我能够访问几何曲线,但这似乎只能给我线的起点和终点。

有人知道如何实现吗?

这是我的代码:

FilteredElementCollector colFamDetailLineElements = new FilteredElementCollector(familyDoc)
    .OfClass(typeof(CurveElement)).OfCategory(BuiltInCategory.OST_Lines);

if (colFamDetailLineElements.Count() != 0)
    {
    foreach (DetailLine x in colFamDetailLineElements)
        {
        string length = x.GeometryCurve.ApproximateLength.ToString();                        
        string start = x.GeometryCurve.GetEndParameter(0).ToString();
        string stop = x.GeometryCurve.GetEndParameter(1).ToString();

        Debug.Print("line Id: " + x.Id + ". line start: " + start + ". line stop: " + stop);

         Debug.Print("Titleblock Line length: " + x.GeometryCurve.Length.ToString());
         }
    }

输出:

line Id: 2563. line start: 2.66453525910038E-15. line stop: 0.416666666666672
Titleblock Line length: 0.41666666666667

感谢所有帮助和指导。

祝贺您使用 RevitLookup 并发现了您所查找数据的正确路径。您可能已经注意到,您拥有 RevitLookup 的完整源代码供您使用,因此您可以简单地 运行 在调试器中使用它来逐步了解如何访问您想要的数据。

路径类似于 GeometryCurve --> Curve --> GetEndPoint。后者接受一个 index 参数; 0 为起点,1 为终点。两者的区别给你方向

差不多 2 个月后终于弄明白了,而且非常简单。

如果您已有 DetailLine,您可以这样做:

FilteredElementCollector detailLineCollection = 
new FilteredElementCollector(familyDoc).OfClass(typeof(CurveElement))
.OfCategory(BuiltInCategory.OST_Lines);

foreach (DetailLine x in detailLineCollection)
    {
        Line xline = x.GeometryCurve as Line;
        double xlineDirectionX = xline.Direction.X;
        double xlineDirectionY = xline.Direction.Y;
    }