我试图获得垂直圆柱实体和梁中心线的相交线,但是当这些元素的创建顺序改变时,结果却改变了。
案例1:当我创建2根垂直柱然后在它们之间添加梁时,我收到了正确的结果。
案例2:当我首先创建梁时,然后在梁的任一端添加2个垂直列,结果是荒谬的:
默认连接顺序(列优先):未找到交集
第一次切换加入顺序(光束优先):找不到交叉点
第2次切换连接顺序(列再次优先):正确的结果
元素创建的顺序如何影响我的代码?该如何解决?
private static double GetIntersectionLength ( Solid solid, Line line )
{
SolidCurveIntersectionOptions opntions = new SolidCurveIntersectionOptions ();
SolidCurveIntersection intersection = solid.IntersectWithCurve ( line, opntions );
for ( int index = 0; index < intersection.SegmentCount; index++ )
{
Curve segment = intersection.GetCurveSegment ( index );
if ( segment.Length > 0 )
return ( segment as Line ).Length;
}
return 0;
}
期望结果:intersection.SegmentCount = 1并获取相交线段的长度,但当调试交点时为I。SegmentCount= 0。
答案 0 :(得分:0)
我刚刚在SolidCurveIntersection
cannot find intersection segment curve的Revit API论坛中回答了您的相同问题。我也在这里重复一遍:
我建议使用射线投射功能沿光束定位线发射射线,而不要使用SolidCurveIntersection.IntersectWithCurve。查看三个FindReferencesByDirection SDK示例,尤其是FindColumns。
这里是blog post discussing that sample and the FindReferencesByDirection
method,在以后引入ReferenceIntersector
class之前,它提供了对Revit API光线跟踪功能的访问。