NX二次开发C#---从原点创建射线,获得射中的面和点

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);
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值