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;
}
这可能是一个新问题,但我还没有找到关于它的任何信息。我找到了有关如何 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;
}