private void btnJBI_Click(object sender, EventArgs e) { APTtoJBI apt2jbi = new APTtoJBI(); Txt2List txt2list = new Txt2List(); List2Txt list2txt = new List2Txt(); List <string> tmplist = new List <string>(); float parameter_a, parameter_b, parameter_c, Length, toolV; int bol; if (cmbpdMachineSurface.Text == "XY平面") { bol = 0; } else { bol = 1; } parameter_a = float.Parse(this.txbpda.Text); parameter_b = float.Parse(this.txbpdb.Text); parameter_c = float.Parse(this.txbpdc.Text); Length = float.Parse(this.txbpdToolLength.Text) + 375; toolV = float.Parse(this.txbpdToolV.Text); SaveFileDialog sfdlg = new SaveFileDialog(); sfdlg.ShowDialog(); sfdlg.Filter = "文本文件|*.JBI"; string pathstr = apt2jbi.Apt2JbiFirst("D:middleTranslation0.txt"); tmplist = apt2jbi.Apt2Jbi_math(pathstr, Length, parameter_a, parameter_b, parameter_c, toolV, bol); string tmpstrin = apt2jbi.writingJBItoText(tmplist); StreamReader sr = new StreamReader(tmpstrin, Encoding.Default); this.rtxbjbi.Text = sr.ReadToEnd(); sr.Close(); if (sfdlg.ShowDialog() == DialogResult.OK) { string savefile = sfdlg.FileName; string namestr = Path.GetFileNameWithoutExtension(savefile); string directoryname = Path.GetDirectoryName(savefile); int count = (int)(tmplist.Count / 2 / 850 + 1); int offset = 0; for (int i = 0; i < count; i++) { int pointNumbers = 0; int tmpoffset = offset; FileStream fsbegin = new FileStream(@directoryname + "\\" + namestr + i.ToString(), FileMode.Create, FileAccess.Write); StreamWriter swbegin = new StreamWriter(fsbegin); swbegin.Flush(); swbegin.BaseStream.Seek(0, SeekOrigin.Begin); swbegin.WriteLine("/JOB"); swbegin.WriteLine("//NAME " + namestr + i.ToString()); swbegin.WriteLine("//POS"); if (count == 1) { pointNumbers = tmplist.Count / 2 + 2; } else if ((i < count - 1) && count > 1) { if (tmplist[tmplist.Count / 2 + (i + 1) * 850].StartsWith("MOVL")) { pointNumbers = 850 - offset + 2; offset = 0; } else if (tmplist[tmplist.Count / 2 + (i + 1) * 850 + 1].StartsWith("MOVL")) { pointNumbers = 850 + 1 - offset + 2; offset = 1; } else if (tmplist[tmplist.Count / 2 + (i + 1) * 850 + 2].StartsWith("MOVL")) { pointNumbers = 850 + 2 - offset + 2; offset = 2; } else if (tmplist[tmplist.Count / 2 + (i + 1) * 850 + 3].StartsWith("MOVL")) { pointNumbers = 850 + 3 - offset + 2; offset = 3; } } else if (i == count - 1 && count > 1) { pointNumbers = tmplist.Count / 2 - 850 * i - tmpoffset + 2; } swbegin.WriteLine("///NPOS " + pointNumbers.ToString() + ",0,0,0,0,0"); swbegin.WriteLine("///TOOL 0"); swbegin.WriteLine("///POSTYPE PULSE"); swbegin.WriteLine("///PULSE"); swbegin.WriteLine("C00000=0,0,0,0,0,0"); int line = 1; for (int tmpN = tmpoffset; tmpN < pointNumbers - 2; tmpN++, line++) { string tmpstr = tmplist[850 * i + tmpN]; string str = "C" + string.Format("{0:00000}", line) + tmpstr.Remove(0, 6); swbegin.WriteLine(str); if (tmpN == pointNumbers - 3) { if (tmplist[i * 850 + tmpN + 1].StartsWith("MOVL")) { } else if (tmplist[i * 850 + tmpN + 2].StartsWith("MOVL")) { line++; tmpstr = tmplist[850 * i + tmpN + 1]; str = "C" + string.Format("{0:00000}", line) + tmpstr.Remove(0, 6); swbegin.WriteLine(str); } else if (tmplist[i * 850 + tmpN + 3].StartsWith("MOVL")) { line++; tmpstr = tmplist[850 * i + tmpN + 1]; str = "C" + string.Format("{0:00000}", line) + tmpstr.Remove(0, 6); swbegin.WriteLine(str); line++; tmpstr = tmplist[850 * i + tmpN + 2]; str = "C" + string.Format("{0:00000}", line) + tmpstr.Remove(0, 6); swbegin.WriteLine(str); } else if (tmplist[i * 850 + tmpN + 4].StartsWith("MOVL")) { line++; tmpstr = tmplist[850 * i + tmpN + 1]; str = "C" + string.Format("{0:00000}", line) + tmpstr.Remove(0, 6); swbegin.WriteLine(str); line++; tmpstr = tmplist[850 * i + tmpN + 2]; str = "C" + string.Format("{0:00000}", line) + tmpstr.Remove(0, 6); swbegin.WriteLine(str); line++; tmpstr = tmplist[850 * i + tmpN + 3]; str = "C" + string.Format("{0:00000}", line) + tmpstr.Remove(0, 6); swbegin.WriteLine(str); } } } swbegin.WriteLine("C" + string.Format("{0:00000}", line) + "=0,0,0,0,0,0"); swbegin.WriteLine("//INST"); swbegin.WriteLine("///DATE " + DateTime.Now.ToString("yyyy/MM/dd HH:mm")); swbegin.WriteLine("///ATTR SC,RW"); swbegin.WriteLine("///GROUP1 RB2"); swbegin.WriteLine("NOP"); swbegin.WriteLine("MOVL C00000 V=110.00 PL=0"); for (int j = 0; j < pointNumbers - 2; j++) { string tmpstr = tmplist[tmplist.Count / 2 + i * 850 + tmpoffset + j]; string str = tmpstr.Substring(0, 6) + string.Format("{0:00000}", j + 1) + " V=110.00 PL=0"; swbegin.WriteLine(str); } swbegin.WriteLine("MOVL C" + string.Format("{0:00000}", pointNumbers - 1) + " V=110.00 PL=0"); swbegin.WriteLine("END"); swbegin.Flush(); swbegin.Close(); fsbegin.Close(); } } }
private void btnJBI_Click(object sender, EventArgs e) { APTtoJBI apt2jbi = new APTtoJBI(); Txt2List txt2list = new Txt2List(); List2Txt list2txt = new List2Txt(); List<string> tmplist = new List<string>(); float parameter_a, parameter_b, parameter_c, Length, toolV; int bol; if (cmbpdMachineSurface.Text == "XY平面") bol = 0; else bol = 1; parameter_a = float.Parse(this.txbpda.Text); parameter_b = float.Parse(this.txbpdb.Text); parameter_c = float.Parse(this.txbpdc.Text); Length = float.Parse(this.txbpdToolLength.Text)+375; toolV = float.Parse(this.txbpdToolV.Text); SaveFileDialog sfdlg = new SaveFileDialog(); sfdlg.ShowDialog(); sfdlg.Filter = "文本文件|*.JBI"; string pathstr = apt2jbi.Apt2JbiFirst("D:middleTranslation0.txt"); tmplist = apt2jbi.Apt2Jbi_math(pathstr,Length ,parameter_a ,parameter_b ,parameter_c ,toolV,bol ); string tmpstrin = apt2jbi.writingJBItoText(tmplist); StreamReader sr = new StreamReader(tmpstrin, Encoding.Default); this.rtxbjbi.Text = sr.ReadToEnd(); sr.Close(); if (sfdlg.ShowDialog() == DialogResult.OK) { string savefile = sfdlg.FileName; string namestr = Path.GetFileNameWithoutExtension(savefile); string directoryname = Path.GetDirectoryName(savefile); int count = (int)(tmplist.Count / 2 / 850 + 1); int offset = 0; for (int i = 0; i < count; i++) { int pointNumbers = 0; int tmpoffset = offset; FileStream fsbegin = new FileStream(@directoryname + "\\" + namestr + i.ToString(), FileMode.Create, FileAccess.Write); StreamWriter swbegin = new StreamWriter(fsbegin); swbegin.Flush(); swbegin.BaseStream.Seek(0, SeekOrigin.Begin); swbegin.WriteLine("/JOB"); swbegin.WriteLine("//NAME " + namestr + i.ToString()); swbegin.WriteLine("//POS"); if (count == 1) { pointNumbers = tmplist.Count / 2 + 2; } else if ((i < count - 1) && count > 1) { if (tmplist[tmplist.Count / 2 + (i + 1) * 850].StartsWith("MOVL")) { pointNumbers = 850 - offset + 2; offset = 0; } else if (tmplist[tmplist.Count / 2 + (i + 1) * 850 + 1].StartsWith("MOVL")) { pointNumbers = 850 + 1 - offset + 2; offset = 1; } else if (tmplist[tmplist.Count / 2 + (i + 1) * 850 + 2].StartsWith("MOVL")) { pointNumbers = 850 + 2 - offset + 2; offset = 2; } else if (tmplist[tmplist.Count / 2 + (i + 1) * 850 + 3].StartsWith("MOVL")) { pointNumbers = 850 + 3 - offset + 2; offset = 3; } } else if (i == count - 1 && count > 1) { pointNumbers = tmplist.Count / 2 - 850 * i - tmpoffset + 2; } swbegin.WriteLine("///NPOS " + pointNumbers.ToString() + ",0,0,0,0,0"); swbegin.WriteLine("///TOOL 0"); swbegin.WriteLine("///POSTYPE PULSE"); swbegin.WriteLine("///PULSE"); swbegin.WriteLine("C00000=0,0,0,0,0,0"); int line = 1; for (int tmpN = tmpoffset; tmpN < pointNumbers - 2; tmpN++, line++) { string tmpstr = tmplist[850 * i + tmpN]; string str = "C" + string.Format("{0:00000}", line) + tmpstr.Remove(0, 6); swbegin.WriteLine(str); if (tmpN == pointNumbers - 3) { if (tmplist[i * 850 + tmpN + 1].StartsWith("MOVL")) { } else if (tmplist[i * 850 + tmpN + 2].StartsWith("MOVL")) { line++; tmpstr = tmplist[850 * i + tmpN + 1]; str = "C" + string.Format("{0:00000}", line) + tmpstr.Remove(0, 6); swbegin.WriteLine(str); } else if (tmplist[i * 850 + tmpN + 3].StartsWith("MOVL")) { line++; tmpstr = tmplist[850 * i + tmpN + 1]; str = "C" + string.Format("{0:00000}", line) + tmpstr.Remove(0, 6); swbegin.WriteLine(str); line++; tmpstr = tmplist[850 * i + tmpN + 2]; str = "C" + string.Format("{0:00000}", line) + tmpstr.Remove(0, 6); swbegin.WriteLine(str); } else if (tmplist[i * 850 + tmpN + 4].StartsWith("MOVL")) { line++; tmpstr = tmplist[850 * i + tmpN + 1]; str = "C" + string.Format("{0:00000}", line) + tmpstr.Remove(0, 6); swbegin.WriteLine(str); line++; tmpstr = tmplist[850 * i + tmpN + 2]; str = "C" + string.Format("{0:00000}", line) + tmpstr.Remove(0, 6); swbegin.WriteLine(str); line++; tmpstr = tmplist[850 * i + tmpN + 3]; str = "C" + string.Format("{0:00000}", line) + tmpstr.Remove(0, 6); swbegin.WriteLine(str); } } } swbegin.WriteLine("C" + string.Format("{0:00000}", line) + "=0,0,0,0,0,0"); swbegin.WriteLine("//INST"); swbegin.WriteLine("///DATE " + DateTime.Now.ToString("yyyy/MM/dd HH:mm")); swbegin.WriteLine("///ATTR SC,RW"); swbegin.WriteLine("///GROUP1 RB2"); swbegin.WriteLine("NOP"); swbegin.WriteLine("MOVL C00000 V=110.00 PL=0"); for (int j = 0; j < pointNumbers - 2; j++) { string tmpstr = tmplist[tmplist.Count / 2 + i * 850 + tmpoffset + j]; string str = tmpstr.Substring(0, 6) + string.Format("{0:00000}", j + 1) + " V=110.00 PL=0"; swbegin.WriteLine(str); } swbegin.WriteLine("MOVL C" + string.Format("{0:00000}", pointNumbers - 1) + " V=110.00 PL=0"); swbegin.WriteLine("END"); swbegin.Flush(); swbegin.Close(); fsbegin.Close(); } } }