1

有谁知道 ReferenceIntersector 是否与 TopografySurfaces 一起使用?不能让它工作。我需要根据与线的交点在表面上找到一个点。

4

2 回答 2

2

你解决了吗?如果没有,我试了一下,对我来说,这里的代码可以正常工作:

    public XYZ ProjectPointOnTopographySurface(XYZ point, int direction)
    {
        // For getting the 3D view
        View3D view3D = new FilteredElementCollector(Document)
            .OfClass(typeof(View3D))
            .Cast<View3D>()
            .Where(v => v.Name == "{3D}")
            .FirstOrDefault();

        XYZ vectorDirection = new XYZ(0, 0, direction);
        ElementClassFilter intersectionFilter = new ElementClassFilter(typeof(TopographySurface));

        ReferenceIntersector referenceIntersector = new ReferenceIntersector(intersectionFilter, FindReferenceTarget.All, view3D);
        ReferenceWithContext referenceWithContext = referenceIntersector.FindNearest(point, vectorDirection);

        return referenceWithContext.GetReference().GlobalPoint;
    }
于 2019-01-05T13:44:26.757 回答
1

无论是否ReferenceIntersector适用于地形表面,您都可以使用其他方式轻松解决您描述自己的问题。只需向表面询问其镶嵌表示。这将返回一堆三角形。然后,实现您自己的算法以使三角形与线相交。那应该给你所有你需要的,真的。

于 2018-07-28T15:03:36.833 回答