Revit API - 如何获得现有的细节线起源和方向?

问题描述 投票:0回答:1

这可能是一个新的问题,但我还没有找到任何信息。我已经找到了关于如何的信息 创建新的细节线 但仅此而已。

我想检索现有细节线的原点和方向,但我不知道怎么做。我能够访问几何曲线,但这似乎只能给我线的起点和终点与此。

有人知道如何实现吗?

这是我的代码。

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

enter image description here

感谢所有的帮助和指导

revit-api revit bim
1个回答
1
投票

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

如果你有一个现有的细节线,你可以做到这一点。

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;
    }


0
投票

恭喜你使用RevitLookup发现了正确的数据路径。你可能已经注意到了,你有RevitLookup的完整源代码,所以你可以简单的在调试器中运行它,一步一步的查看如何访问你想要的数据。

路径是这样的 GeometryCurve --> Curve --> GetEndPoint. 后者采用的是 index 参数;0代表起点,1代表终点。两者之间的差值为你提供了方向。

© www.soinside.com 2019 - 2024. All rights reserved.