这可能是一个新的问题,但我还没有找到任何信息。我已经找到了关于如何的信息 创建新的细节线 但仅此而已。
我想检索现有细节线的原点和方向,但我不知道怎么做。我能够访问几何曲线,但这似乎只能给我线的起点和终点与此。
有人知道如何实现吗?
这是我的代码。
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
感谢所有的帮助和指导
差不多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;
}
恭喜你使用RevitLookup发现了正确的数据路径。你可能已经注意到了,你有RevitLookup的完整源代码,所以你可以简单的在调试器中运行它,一步一步的查看如何访问你想要的数据。
路径是这样的 GeometryCurve
--> Curve
--> GetEndPoint
. 后者采用的是 index
参数;0代表起点,1代表终点。两者之间的差值为你提供了方向。