コード例 #1
0
    public int CircleArguJudge(ref string error_string, ModalCode_Fanuc_M modal_state, ref Vector3 ijk_coo, ref float rValue)
    {
        //终点坐标在原地
        if (xyz_state[0] == false && xyz_state[1] == false && xyz_state[2] == false)
        {
            //若R有赋值,返回0停在原地
            if (ijk_state[3])
            {
                return(0);
            }
            //若R和IJK都没有赋值,返回0停在原地
            else if (ijk_state[0] == false && ijk_state[1] == false && ijk_state[2] == false)
            {
                return(0);
            }
            else
            {
                //三种平面下的判断及圆心增量坐标获取,如果返回1则为整圆情况
                switch (modal_state.PlaneCheck())
                {
                case (int)CheckInformation.XYPlane:
                    if (ijk_state[2])
                    {
                        error_string = "平面选择与输入坐标不符";
                        return(-1);
                    }
                    else
                    {
                        ijk_coo = new Vector3(i_value, j_value, 0);
                        return(1);
                    }

                case (int)CheckInformation.ZXPlane:
                    if (ijk_state[1])
                    {
                        error_string = "平面选择与输入坐标不符";
                        return(-1);
                    }
                    else
                    {
                        ijk_coo = new Vector3(i_value, 0, k_value);
                        return(1);
                    }

                case (int)CheckInformation.YZPlane:
                    if (ijk_state[0])
                    {
                        error_string = "平面选择与输入坐标不符";
                        return(-1);
                    }
                    else
                    {
                        ijk_coo = new Vector3(0, j_value, k_value);
                        return(1);
                    }

                default:
                    error_string = "平面选择错误,不存在这样的平面";
                    return(-1);
                }
            }
        }
        //有终点坐标
        else
        {
            //三种平面下的判断及圆心增量坐标和Display坐标(增量或最终值),如果返回2则为IJK,返回3则为R
            switch (modal_state.PlaneCheck())
            {
            case (int)CheckInformation.XYPlane:
                if (xyz_state[2])
                {
                    error_string = "平面选择与输入坐标不符";
                    return(-1);
                }
                else
                {
                    //有R在
                    if (ijk_state[3])
                    {
                        rValue = r_value;
                        return(3);
                    }
                    //没有R
                    else
                    {
                        if (ijk_state[2])
                        {
                            error_string = "平面选择与输入坐标不符";
                            return(-1);
                        }
                        else
                        {
                            ijk_coo = new Vector3(i_value, j_value, 0);
                            return(2);
                        }
                    }
                }

            case (int)CheckInformation.ZXPlane:
                if (xyz_state[1])
                {
                    error_string = "平面选择与输入坐标不符";
                    return(-1);
                }
                else
                {
                    //有R在
                    if (ijk_state[3])
                    {
                        rValue = r_value;
                        return(3);
                    }
                    //没有R
                    else
                    {
                        if (ijk_state[1])
                        {
                            error_string = "平面选择与输入坐标不符";
                            return(-1);
                        }
                        else
                        {
                            ijk_coo = new Vector3(i_value, 0, k_value);
                            return(2);
                        }
                    }
                }

            case (int)CheckInformation.YZPlane:
                if (xyz_state[0])
                {
                    error_string = "平面选择与输入坐标不符";
                    return(-1);
                }
                else
                {
                    //有R在
                    if (ijk_state[3])
                    {
                        rValue = r_value;
                        return(3);
                    }
                    //没有R
                    else
                    {
                        if (ijk_state[0])
                        {
                            error_string = "平面选择与输入坐标不符";
                            return(-1);
                        }
                        else
                        {
                            ijk_coo = new Vector3(0, j_value, k_value);
                            return(2);
                        }
                    }
                }

            default:
                error_string = "平面选择错误,不存在这样的平面";
                return(-1);
            }
        }
    }