C槽篇,標(biāo)準(zhǔn)C槽的識(shí)別2020-11-11

識(shí)別C槽的算法,僅支持不帶后綴的編碼,后面會(huì)更新非標(biāo)C槽算法

經(jīng)過前面2篇文章的學(xué)習(xí),你們已經(jīng)不是小白了,后面注釋會(huì)慢慢變少

public static string[] 標(biāo)準(zhǔn)C槽核心算法(string C_編碼, string C_數(shù)量)
        {
            //5C300 C300 3DC300 DC300(忠旺體系的編碼)
            //定義型材信息
            string C_主型材 = "";
            string C_主型材長(zhǎng)度 = "";
            string C_主型材數(shù)量 = "";
            string C_封板 = "";
            string C_封板數(shù)量 = "";
            string C_加筋型號(hào) = "";
            string C_加筋數(shù)量 = "";
            string C_信息 = "";

            string[] 結(jié)果 = null;//結(jié)果
            String[] C_無(wú)字母參數(shù) = null;
            String[] C_無(wú)數(shù)字參數(shù) = null;
            //C槽算法比較復(fù)雜,類型較多,而且沒有太多好方法,只能case多個(gè)值

            //去除編碼中的符號(hào)和字母,方便下一次計(jì)算
            C_無(wú)字母參數(shù) = C_編碼.Split(new char[] { '-', 'P', 'J', 'Q', 'C', 'D', 'K', 'L', '/', '(', ')', 'A', 'B', 'E', 'F', 'G', 'H', 'I', 'J', 'M', 'N', 'O', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' }, StringSplitOptions.RemoveEmptyEntries);
            //去除編碼中的數(shù)字,方便下一次計(jì)算
            C_無(wú)數(shù)字參數(shù) = C_編碼.Split(new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.' }, StringSplitOptions.RemoveEmptyEntries);
            //去除編碼中的空格,然后轉(zhuǎn)化為string類型,方便下一次計(jì)算
            String C_字符串 = String.Join("", C_無(wú)數(shù)字參數(shù).Select(y => y.ToString()).ToArray());
            char[] C_字符數(shù)組 = C_字符串.ToCharArray();

            //判斷獲取到的編碼是不是C類型,并保證編碼中只有一個(gè)C或者DC字符
            switch (C_字符串)
            {//這次升級(jí)一下判斷方法,不用if else了,用switch 看起來(lái)比較簡(jiǎn)潔,其實(shí)效率差不多
                case "C":
                    switch (C_無(wú)字母參數(shù).Length)
                    {
                        //一個(gè)參數(shù)的算法
                        case 1:
                            C_主型材 = "100*150";//固定參數(shù)
                            C_主型材長(zhǎng)度 = C_無(wú)字母參數(shù)[0];
                            C_主型材數(shù)量 = C_數(shù)量;
                            C_封板 = "93.5*143.5";//封板型號(hào)=主型材每邊-6.5的邊框和焊縫
                            C_封板數(shù)量 = (2 * int.Parse(C_數(shù)量)).ToString();

                            //計(jì)算加筋和最短長(zhǎng)度
                            if (float.Parse(C_無(wú)字母參數(shù)[0]) < 50) {
                                C_信息 = "C槽長(zhǎng)度過小";
                                C_加筋型號(hào) = "無(wú)";
                                C_加筋數(shù)量 = "無(wú)";
                            }
                            else if (float.Parse(C_無(wú)字母參數(shù)[0]) > 500)
                            {
                                C_加筋型號(hào) = "93.5*143.5";//=主型材每邊-6.5的邊框和焊縫
                                if (float.Parse(C_無(wú)字母參數(shù)[0]) < 600)
                                {
                                    C_加筋數(shù)量 = ((int)四舍五入(float.Parse(C_無(wú)字母參數(shù)[0]) / 300, 0) * int.Parse(C_數(shù)量)).ToString();
                                }
                                else
                                {
                                    C_加筋數(shù)量 = (((int)四舍五入((float.Parse(C_無(wú)字母參數(shù)[0]) / 300) - 1, 0)) * int.Parse(C_數(shù)量)).ToString();
                                }
                                C_信息 = "100*150標(biāo)準(zhǔn)C槽";
                            }
                            else
                            {
                                C_加筋型號(hào) = "無(wú)";
                                C_加筋數(shù)量 = "無(wú)";
                                C_信息 = "100*150標(biāo)準(zhǔn)C槽";
                            }
                            //放入結(jié)果數(shù)組
                            結(jié)果 = new string[8] { C_主型材, C_主型材長(zhǎng)度, C_主型材數(shù)量, C_封板, C_封板數(shù)量, C_加筋型號(hào), C_加筋數(shù)量, C_信息 };
                            return 結(jié)果;
                            //兩個(gè)參數(shù)的算法
                        case 2:
                            switch (C_無(wú)字母參數(shù)[0])
                            {
                                case "1"://1C300(舉例)
                                    C_加筋型號(hào) = "103.5*143.5";//=主型材每邊-6.5的邊框和焊縫
                                    C_主型材 = "110*150";
                                    C_封板 = "103.5*143.5";//=主型材每邊-6.5的邊框和焊縫
                                    C_信息 = "1C型材C槽";
                                    break;
                                case "2"://2C300,往下以此類推
                                    C_加筋型號(hào) = "113.5*143.5";//=主型材每邊-6.5的邊框和焊縫
                                    C_主型材 = "120*150";
                                    C_封板 = "113.5*143.5";//=主型材每邊-6.5的邊框和焊縫
                                    C_信息 = "2C型材C槽";
                                    break;
                                case "3":
                                    C_加筋型號(hào) = "123.5*143.5";//=主型材每邊-6.5的邊框和焊縫
                                    C_主型材 = "130*150";
                                    C_封板 = "123.5*143.5";//=主型材每邊-6.5的邊框和焊縫
                                    C_信息 = "3C型材C槽";
                                    break;
                                case "4":
                                    C_加筋型號(hào) = "133.5*143.5";//=主型材每邊-6.5的邊框和焊縫
                                    C_主型材 = "140*150";
                                    C_封板 = "133.5*143.5";//=主型材每邊-6.5的邊框和焊縫
                                    C_信息 = "4C型材C槽";
                                    break;
                                case "5":
                                    C_加筋型號(hào) = "143.5*143.5";//=主型材每邊-6.5的邊框和焊縫
                                    C_主型材 = "150*150";
                                    C_封板 = "143.5*143.5";//=主型材每邊-6.5的邊框和焊縫
                                    C_信息 = "5C型材C槽";
                                    break;
                                case "6":
                                    C_加筋型號(hào) = "153.5*143.5";//=主型材每邊-6.5的邊框和焊縫
                                    C_主型材 = "160*150";
                                    C_封板 = "153.5*143.5";//=主型材每邊-6.5的邊框和焊縫
                                    C_信息 = "6C型材C槽";
                                    break;
                                case "7":
                                    C_加筋型號(hào) = "163.5*143.5";//=主型材每邊-6.5的邊框和焊縫
                                    C_主型材 = "170*150";
                                    C_封板 = "163.5*143.5";//=主型材每邊-6.5的邊框和焊縫
                                    C_信息 = "7C型材C槽";
                                    break;
                                case "8":
                                    C_加筋型號(hào) = "173.5*143.5";//=主型材每邊-6.5的邊框和焊縫
                                    C_主型材 = "180*150";
                                    C_封板 = "173.5*143.5";//=主型材每邊-6.5的邊框和焊縫
                                    C_信息 = "8C型材C槽";
                                    break;
                                case "9":
                                    C_加筋型號(hào) = "183.5*143.5";//=主型材每邊-6.5的邊框和焊縫
                                    C_主型材 = "190*150";
                                    C_封板 = "183.5*143.5";//=主型材每邊-6.5的邊框和焊縫
                                    C_信息 = "9C型材C槽";
                                    break;
                                case "20":
                                    C_加筋型號(hào) = "193.5*143.5";//=主型材每邊-6.5的邊框和焊縫
                                    C_主型材 = "200*150";
                                    C_封板 = "193.5*143.5";//=主型材每邊-6.5的邊框和焊縫
                                    C_信息 = "20C型材C槽";
                                    break;
                                default://除以上類型之外的型號(hào),這里不支持
                                    C_加筋型號(hào) = "";
                                    C_主型材 = "";
                                    C_封板 = "";
                                    C_信息 = "不支持的型號(hào),請(qǐng)檢查";
                                    break;
                            }
                            //計(jì)算加筋
                            if (float.Parse(C_無(wú)字母參數(shù)[1]) < 50)
                            {
                                C_信息 = "C槽長(zhǎng)度過小";
                                C_加筋型號(hào) = "無(wú)";
                                C_加筋數(shù)量 = "無(wú)";
                            }
                            else if (float.Parse(C_無(wú)字母參數(shù)[1]) > 500)
                            {
                                if (float.Parse(C_無(wú)字母參數(shù)[1]) < 600)
                                {
                                    C_加筋數(shù)量 = ((int)四舍五入(float.Parse(C_無(wú)字母參數(shù)[1]) / 300, 0) * int.Parse(C_數(shù)量)).ToString();
                                }
                                else
                                {
                                    C_加筋數(shù)量 = (((int)四舍五入((float.Parse(C_無(wú)字母參數(shù)[1]) / 300) - 1, 0)) * int.Parse(C_數(shù)量)).ToString();
                                }
                            }
                            else
                            {
                                C_加筋型號(hào) = "無(wú)";
                                C_加筋數(shù)量 = "無(wú)";
                            }

                            C_主型材長(zhǎng)度 = C_無(wú)字母參數(shù)[1];
                            C_主型材數(shù)量 = C_數(shù)量;
                            C_封板數(shù)量 = (2 * int.Parse(C_數(shù)量)).ToString();
                            //放入結(jié)果
                            結(jié)果 = new string[8] { C_主型材, C_主型材長(zhǎng)度, C_主型材數(shù)量, C_封板, C_封板數(shù)量, C_加筋型號(hào), C_加筋數(shù)量, C_信息 };
                            return 結(jié)果;

                        default://編碼不對(duì),不支持
                            C_信息 = "不支持的編碼,請(qǐng)檢查";
                            結(jié)果 = new string[8] { C_主型材, C_主型材長(zhǎng)度, C_主型材數(shù)量, C_封板, C_封板數(shù)量, C_加筋型號(hào), C_加筋數(shù)量, C_信息 };
                            return 結(jié)果;
                    }
                case "DC"://DC型號(hào)的C槽計(jì)算
                    switch (C_無(wú)字母參數(shù).Length)
                    {
                        //一個(gè)參數(shù)的DC
                        case 1:
                            C_主型材 = "100*100";//固定型號(hào)
                            C_主型材長(zhǎng)度 = C_無(wú)字母參數(shù)[0];
                            C_主型材數(shù)量 = C_數(shù)量;
                            C_封板 = "93.5*93.5";//=主型材每邊-6.5的邊框和焊縫
                            C_封板數(shù)量 = C_數(shù)量;
                            
                            //計(jì)算加筋
                            if (float.Parse(C_無(wú)字母參數(shù)[0]) < 50)
                            {
                                C_信息 = "C槽長(zhǎng)度過小";
                                C_加筋型號(hào) = "無(wú)";
                                C_加筋數(shù)量 = "無(wú)";
                            }
                            else if (float.Parse(C_無(wú)字母參數(shù)[0]) > 500)
                            {
                                C_加筋型號(hào) = "93.5*93.5";//=主型材每邊-6.5的邊框和焊縫
                                if (float.Parse(C_無(wú)字母參數(shù)[1]) < 600)
                                {
                                    C_加筋數(shù)量 = ((int)四舍五入(float.Parse(C_無(wú)字母參數(shù)[0]) / 300, 0) * int.Parse(C_數(shù)量)).ToString();
                                }
                                else
                                {
                                    C_加筋數(shù)量 = (((int)四舍五入((float.Parse(C_無(wú)字母參數(shù)[0]) / 300) - 1, 0)) * int.Parse(C_數(shù)量)).ToString();
                                }
                                C_信息 = "100*100型號(hào)C槽";
                            }
                            else
                            {
                                C_加筋型號(hào) = "無(wú)";
                                C_加筋數(shù)量 = "無(wú)";
                                C_信息 = "100*100型號(hào)C槽";
                            }
                            //結(jié)果
                            結(jié)果 = new string[8] { C_主型材, C_主型材長(zhǎng)度, C_主型材數(shù)量, C_封板, C_封板數(shù)量, C_加筋型號(hào), C_加筋數(shù)量, C_信息 };
                            return 結(jié)果;
                        case 2://2個(gè)參數(shù)的DC
                            switch (C_無(wú)字母參數(shù)[0])
                            {
                                case "1"://1DC300(舉例)
                                    C_加筋型號(hào) = "103.5*93.5";//=主型材每邊-6.5的邊框和焊縫
                                    C_主型材 = "110*100";
                                    C_封板 = "103.5*93.5";
                                    C_信息 = "1DC型材C槽";
                                    break;
                                case "2"://2DC300(后面以此類推)
                                    C_加筋型號(hào) = "113.5*93.5";
                                    C_主型材 = "120*100";
                                    C_封板 = "113.5*93.5";
                                    C_信息 = "2DC型材C槽";
                                    break;
                                case "3":
                                    C_加筋型號(hào) = "123.5*93.5";
                                    C_主型材 = "130*100";
                                    C_封板 = "123.5*93.5";
                                    C_信息 = "3DC型材C槽";
                                    break;
                                case "4":
                                    C_加筋型號(hào) = "133.5*93.5";
                                    C_主型材 = "140*100";
                                    C_封板 = "133.5*93.5";
                                    C_信息 = "4DC型材C槽";
                                    break;
                                case "5":
                                    C_加筋型號(hào) = "143.5*93.5";
                                    C_主型材 = "150*100";
                                    C_封板 = "143.5*93.5";
                                    C_信息 = "5DC型材C槽";
                                    break;
                                case "6":
                                    C_加筋型號(hào) = "153.5*93.5";
                                    C_主型材 = "160*100";
                                    C_封板 = "153.5*93.5";
                                    C_信息 = "6DC型材C槽";
                                    break;
                                case "7":
                                    C_加筋型號(hào) = "163.5*93.5";
                                    C_主型材 = "170*150";
                                    C_封板 = "163.5*93.5";
                                    C_信息 = "7DC型材C槽";
                                    break;
                                case "8":
                                    C_加筋型號(hào) = "173.5*93.5";
                                    C_主型材 = "180*100";
                                    C_封板 = "173.5*93.5";
                                    C_信息 = "8DC型材C槽";
                                    break;
                                case "9":
                                    C_加筋型號(hào) = "183.5*93.5";
                                    C_主型材 = "190*100";
                                    C_封板 = "183.5*93.5";
                                    C_信息 = "9DC型材C槽";
                                    break;
                                case "20":
                                    C_加筋型號(hào) = "193.5*93.5";
                                    C_主型材 = "200*100";
                                    C_封板 = "193.5*93.5";
                                    C_信息 = "20DC型材C槽";
                                    break;
                                default:
                                    C_加筋型號(hào) = "";
                                    C_主型材 = "";
                                    C_封板 = "";
                                    C_信息 = "不支持的型號(hào),請(qǐng)檢查";
                                    break;
                            }
                            //計(jì)算加筋
                            if (float.Parse(C_無(wú)字母參數(shù)[1]) < 50)
                            {
                                C_信息 = "C槽長(zhǎng)度過小";
                                C_加筋型號(hào) = "無(wú)";
                                C_加筋數(shù)量 = "無(wú)";
                            }
                            else if (float.Parse(C_無(wú)字母參數(shù)[1]) > 500)
                            {
                                if (float.Parse(C_無(wú)字母參數(shù)[1]) < 600)
                                {
                                    C_加筋數(shù)量 = ((int)四舍五入(float.Parse(C_無(wú)字母參數(shù)[1]) / 300, 0) * int.Parse(C_數(shù)量)).ToString();
                                }
                                else
                                {
                                    C_加筋數(shù)量 = (((int)四舍五入((float.Parse(C_無(wú)字母參數(shù)[1]) / 300) - 1, 0)) * int.Parse(C_數(shù)量)).ToString();
                                }
                            }
                            else
                            {
                                C_加筋型號(hào) = "無(wú)";
                                C_加筋數(shù)量 = "無(wú)";
                            }

                            C_主型材長(zhǎng)度 = C_無(wú)字母參數(shù)[1];
                            C_主型材數(shù)量 = C_數(shù)量;
                            C_封板數(shù)量 = (2 * int.Parse(C_數(shù)量)).ToString();

                            結(jié)果 = new string[8] { C_主型材, C_主型材長(zhǎng)度, C_主型材數(shù)量, C_封板, C_封板數(shù)量, C_加筋型號(hào), C_加筋數(shù)量, C_信息 };
                            return 結(jié)果;

                        default:
                            //不支持的編碼
                            C_信息 = "不支持的編碼,請(qǐng)檢查";
                            結(jié)果 = new string[8] { C_主型材, C_主型材長(zhǎng)度, C_主型材數(shù)量, C_封板, C_封板數(shù)量, C_加筋型號(hào), C_加筋數(shù)量, C_信息 };
                            return 結(jié)果;
                    }
                default:
                    //不是C槽的編碼,不支持
                    C_信息 = "編碼不是C槽,請(qǐng)檢查";
                    結(jié)果 = new string[8] { C_主型材, C_主型材長(zhǎng)度, C_主型材數(shù)量, C_封板, C_封板數(shù)量, C_加筋型號(hào), C_加筋數(shù)量, C_信息 };
                    return 結(jié)果;
                    //break;
            }
        }

調(diào)用方法:

ruslt1 = MBCore.標(biāo)準(zhǔn)C槽核心算法(textBox9.Text, textBox10.Text);
            if (ruslt1 != null)
            {
                foreach (string str in ruslt1)
                {
                     Console.Write(str);
                }
            }

結(jié)果:


image.png

image.png

下一篇:龍骨識(shí)別,未完待續(xù).......

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容