楼梯篇,盖板和挡板识别2020-11-13

作者: new_blash | 来源:发表于2020-11-13 14:54 被阅读0次

    楼梯盖板+挡板能识别,侧板识别不了,异形件没法办用固定公式计算

    public static string[] 楼梯核心算法(string LT_编码, string LT_数量)
            {
                //楼梯有楼梯盖板,楼梯挡板,楼梯侧板,这里仅仅只计算楼梯盖板和挡板,因为侧板是异形件不能用固定公式算
                //260LTGB1200,166.7LTDB1200(ZW编码体系,可以根据自己公司所用的代码改为其他体系)
                //算法比较复杂,盖板由底板+封板+三角片+矩形管焊接而成,挡板由L型板材+短封板+加强筋+长封板焊接而成,返回值会有变化,所以不能直接定义好所有的结果,改为动态结果
                String[] LT_无字母参数;
                String[] LT_无数字参数;
                string[] 盖板结果 = new string[6];//结果
                string[] 挡板结果 = new string[5];//结果
                string[] 错误结果 = new string[1];//结果
                //判断编码和数量是否符合标准
                if (LT_编码 != "" && LT_数量 != "" && (LT_编码.Contains("LTGB") || LT_编码.Contains("LTDB")))
                {
                    //去除编码中的符号和字母
                    LT_无字母参数 = LT_编码.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);
                    //去除编码中的数字
                    LT_无数字参数 = LT_编码.Split(new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.' }, StringSplitOptions.RemoveEmptyEntries);
                    //编码转化为string类型
                    String LT_字符串 = String.Join("", LT_无数字参数);
                    switch (LT_字符串)
                    {
                        case "LTGB":
                            //计算盖板,首先判断有几个参数,此处是2个参数(可以写一个通用判断,但是嵌套套多,看起来费力,所以放弃)
                            //根据自己家公司大样图来计算辅材(此处使用忠旺体系中的楼梯大样图)
                            if (LT_无字母参数.Length == 2)
                            {
                                盖板结果[0] = "底板:"+ (int.Parse(LT_无字母参数[0])+10).ToString()+ "*"+ LT_无字母参数[1]+"共"+ LT_数量+"件";
                                盖板结果[1] = "封板:6mm铝板59*119共" + (int.Parse(LT_数量)*2).ToString()+"件";
                                盖板结果[2] = "三角板:40*40共" + (int.Parse(LT_数量) * 2).ToString() + "件";
                                盖板结果[3] = "长矩管:20*25*" + (int.Parse(LT_无字母参数[1]) - 12).ToString() + "共" + LT_数量 + "件";
                                盖板结果[4] = "短矩管:20*25*" + (int.Parse(LT_无字母参数[0]) - 70).ToString() + "共" + (int.Parse(LT_数量) * 3).ToString() + "件";
                                盖板结果[5] = "模板信息:标准楼梯盖板";
                                return 盖板结果;
                            }
                            else {
                                if (LT_无字母参数.Length > 2)
                                {
                                    错误结果[0] = "模板信息:完犊子了,你编码里面的数多了啊!!";
                                }
                                else if (LT_无字母参数.Length < 2) {
                                    错误结果[0] = "模板信息:完犊子了,你编码里面的数少了啊!!";
                                }
                                return 错误结果;
                            }
                        case "LTDB":
                            //计算挡板,首先判断有几个参数,此处是2个参数
                            //根据自己家公司大样图来计算辅材(此处使用忠旺体系中的楼梯大样图)
                            if (LT_无字母参数.Length == 2)
                            {
                                挡板结果[0] = "L型板:" + (int.Parse(LT_无字母参数[0]) - 6).ToString() + "*" + LT_无字母参数[1] + "共" + LT_数量 + "件";
                                挡板结果[1] = "两端8mm封板:60.5*" + (int.Parse(LT_无字母参数[0]) - 15).ToString() + "共" + (int.Parse(LT_数量) * 2).ToString() + "件";
                                挡板结果[2] = "底封板:55*"+ LT_无字母参数[1]+" " +LT_数量+ "件";
                                挡板结果[3] = "加筋:60.5*" + (int.Parse(LT_无字母参数[0]) - 15).ToString() + "共" + (int)四舍五入((float.Parse(LT_无字母参数[1]) / 200-1), 0 )* int.Parse(LT_数量) + "件";
                                挡板结果[4] = "模板信息:标准楼梯挡板";
                                return 挡板结果;
                            }
                            else
                            {
                                if (LT_无字母参数.Length > 2)
                                {
                                    错误结果[0] = "模板信息:完犊子了,你编码里面的数多了啊!!";
                                }
                                else if (LT_无字母参数.Length < 2)
                                {
                                    错误结果[0] = "模板信息:完犊子了,你编码里面的数少了啊!!";
                                }
                                return 错误结果;
                            }
                        default:
                            //其他
                            错误结果[0] = "模板信息:无效编码";
                            return 错误结果;
                    }
    
                }
                else {
                    if(LT_编码 == ""&& LT_数量 == "")
                    {
                        错误结果[0] = "模板信息:编码和数量都是空的";
                    }
                    else if (LT_编码 == "")
                    {
                        错误结果[0] = "模板信息:编码是空的";
                    }
                    else if (LT_数量 == "")
                    {
                        错误结果[0] = "模板信息:数量是空的";
                    }
                    else if (LT_编码.Contains("LTCB"))
                    {
                        错误结果[0] = "模板信息:这可能是一块楼梯侧板";
                    }
                    else {
                        错误结果[0] = "模板信息:无效编码";
                    }
                    return 错误结果;
                }
            }
    
    

    调用方法:

    ruslt5 = MBCore.楼梯核心算法(textBox6.Text, textBox5.Text);
                if (ruslt5 != null)
                {
                    foreach (string str in ruslt5)
                    {
                        .............
                    }
                }
    

    盖板结果:


    image.png

    挡板结果:


    image.png
    侧板结果:
    image.png

    编码不齐全结果:


    image.png
    编码和数量不填的结果:
    image.png
    下一篇,写个K板吧,每个种类模板分开写最好的好处就是,只需要写一个模板分类,然后对应的调用方法就好了,可以避免一个编码把所有方法跑一遍,节约时间.

    下一篇K板,下周一再见~~~~~

    相关文章

      网友评论

        本文标题:楼梯篇,盖板和挡板识别2020-11-13

        本文链接:https://www.haomeiwen.com/subject/ktnvbktx.html