0

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

我正在尝试检索现有详细信息线的原点和方向,但我不知道如何。我能够访问几何曲线,但这似乎只给了我这条线的起点和终点。

有谁知道如何实现这一目标?

这是我的代码:

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

在此处输入图像描述

感谢所有帮助和指导。

4

2 回答 2

1

差不多两个月后终于弄清楚了,而且非常简单。

如果你有一个现有的 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;
    }

于 2020-06-04T15:29:45.597 回答
0

恭喜您使用 RevitLookup 并发现了您所追求的数据的正确路径。您可能已经注意到,您可以随意使用 RevitLookup 的完整源代码,因此您只需在调试器中运行它,即可逐步了解如何访问所需的数据。

路径类似于GeometryCurve--> Curve--> GetEndPoint。后者接受一个index论点;0 代表起点,1 代表终点。两者之间的差异为您指明了方向。

于 2020-05-19T14:54:58.977 回答