Autodesk.Revit.DB.PointOnFace 类表示三维空间中在面(Autodesk.Revit.DB.Face)上的点。
PointOnFace 类可以通过以下两个构造函数进行实例化:
public PointOnFace(Face face, UV uv);
public PointOnFace(Face face, UV uv, XYZ normal);
其中,参数解释如下:
face: 代表点所在的面。uv: 代表点在面上的二维坐标,取值范围为 [0,1]x[0,1],其中 (0, 0) 表示面的左下角。normal: 可选参数,代表点所在的平面的法向量。PointOnFace 类包含以下属性:
Face 属性public Face Face { get; }
代表点所在的面。该属性只读。
UVPoint 属性public UV UVPoint { get; }
代表点在面上的二维坐标。该属性只读。
XYZPoint 属性public XYZ XYZPoint { get; }
代表点在三维空间中的坐标。该属性只读。
Normal 属性public XYZ Normal { get; }
代表点所在的平面的法向量。如果在构造函数中没有提供该值,则返回 (0, 0, 0)。该属性只读。
PointOnFace 类包含以下方法:
IsValid() 方法public bool IsValid()
判断当前点是否在面上,并且二维坐标的取值范围为 [0,1]x[0,1]。如果是,则返回 true;否则返回 false。
以下代码演示了如何从三维空间中的点实例化 PointOnFace 类:
// 假设有一个三维空间中的点 xyz 和一个面 face
UV uv = face.Project(xyz).UVPoint;
PointOnFace pointOnFace = new PointOnFace(face, uv, face.ComputeNormal(uv));