楼梯盖板+挡板能识别,侧板识别不了,异形件没法办用固定公式计算
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板吧,每个种类模板分开写最好的好处就是,只需要写一个模板分类,然后对应的调用方法就好了,可以避免一个编码把所有方法跑一遍,节约时间.
网友评论