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

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

經(jīng)過(guò)前面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ù)雜,類型較多,而且沒(méi)有太多好方法,只能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)度過(guò)小";
                                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)度過(guò)小";
                                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)度過(guò)小";
                                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)度過(guò)小";
                                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)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市魏保,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌扬跋,老刑警劉巖秃踩,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件惹恃,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡沛硅,警方通過(guò)查閱死者的電腦和手機(jī)福青,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門摄狱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人无午,你說(shuō)我怎么就攤上這事媒役。” “怎么了宪迟?”我有些...
    開封第一講書人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵酣衷,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我次泽,道長(zhǎng)穿仪,這世上最難降的妖魔是什么席爽? 我笑而不...
    開封第一講書人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮啊片,結(jié)果婚禮上拳昌,老公的妹妹穿的比我還像新娘。我一直安慰自己钠龙,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開白布御铃。 她就那樣靜靜地躺著碴里,像睡著了一般。 火紅的嫁衣襯著肌膚如雪上真。 梳的紋絲不亂的頭發(fā)上咬腋,一...
    開封第一講書人閱讀 52,441評(píng)論 1 310
  • 那天,我揣著相機(jī)與錄音睡互,去河邊找鬼根竿。 笑死,一個(gè)胖子當(dāng)著我的面吹牛就珠,可吹牛的內(nèi)容都是我干的寇壳。 我是一名探鬼主播,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼妻怎,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼壳炎!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起逼侦,我...
    開封第一講書人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤匿辩,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后榛丢,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體铲球,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年晰赞,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了稼病。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡宾肺,死狀恐怖溯饵,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情锨用,我是刑警寧澤丰刊,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站增拥,受9級(jí)特大地震影響啄巧,放射性物質(zhì)發(fā)生泄漏寻歧。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一秩仆、第九天 我趴在偏房一處隱蔽的房頂上張望码泛。 院中可真熱鬧,春花似錦澄耍、人聲如沸噪珊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)痢站。三九已至,卻和暖如春选酗,著一層夾襖步出監(jiān)牢的瞬間阵难,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工芒填, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留呜叫,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓殿衰,卻偏偏與公主長(zhǎng)得像朱庆,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子闷祥,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容