有谁知道 ReferenceIntersector 是否与 TopografySurfaces 一起使用?不能让它工作。我需要根据与线的交点在表面上找到一个点。
问问题
340 次
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 回答