public void Trace_Ray(Tag tagBody, double[] origin, double[] direction, out double[] FacePnt, out Tag FaceTag)
{
FacePnt = new double[3];
FaceTag = Tag.Null;
// 设定射线函数的参数:
int num_bodies = 1; //允许被射线击中的实体的数量,这里直接给1,实际上可以给变量
Tag[] bodies = { tagBody }; //接受射线的实体列表
double[] transform = new double[16]; //定义转置坐标系矩阵。参数说明中有告知使用UF_MTX4_identity进行初始化
theUFSession.Mtx4.Identity(transform);
int num_desired = 0; //定义最大击中数量。 0代表不设限
int num_results; //返回值:击中数量
theUFSession.Modl.TraceARay(num_bodies, bodies, origin, direction, transform, num_desired, out num_results, out UFModl.RayHitPointInfo[] hit_list);
//判断num_results是否大于零 来确定射线是否击中目标
if (num_results > 0)
{
double[] Hit_pnt = hit_list[0].hit_point;
FacePnt = new double[3];
FacePnt[0] = Hit_pnt[0];
FacePnt[1] = Hit_pnt[1];
FacePnt[2] = Hit_pnt[2];
FaceTag = hit_list[0].hit_face;
// theUFSession.Obj.SetColor(FaceTag, 186);
// UF_OBJ_set_color(FaceTag, 6);
}
}
NX二次开发C#---从原点创建射线,获得射中的面和点
于 2025-04-09 16:55:12 首次发布