public Job JobFromShoporderJoistDetails() { Job job = new Job(); List<Joist> allJoists = new List<Joist>(); List<Girder> allGirders = new List<Girder>(); OpenFileDialog openBOMFileDialog = new OpenFileDialog(); openBOMFileDialog.Title = "SELECT JOIST DETAILS"; //openBOMFileDialog.Filter = "Excel WorkBook|*.xls"; if (openBOMFileDialog.ShowDialog()==true) { string fileName = openBOMFileDialog.FileName; job.Number = fileName.Split(new string[] { " -", ".xls" }, StringSplitOptions.RemoveEmptyEntries)[1]; string excelFileName = System.IO.Path.GetTempFileName(); Byte[] BOMinByteArray = System.IO.File.ReadAllBytes(openBOMFileDialog.FileName); System.IO.File.WriteAllBytes(excelFileName, BOMinByteArray); Excel.Application oXL; Excel._Workbook oWB; Excel._Worksheet oSheet; Excel.Range oRng; oXL = new Excel.Application(); oXL.Visible = false; oWB = oXL.Workbooks.Open(excelFileName); oSheet = (Excel._Worksheet)oWB.ActiveSheet; oRng = oSheet.UsedRange; oRng.get_Range("A1", Missing.Value); oRng = oRng.get_End(Excel.XlDirection.xlToRight); oRng = oRng.get_End(Excel.XlDirection.xlDown); string downJoistMarks = oRng.get_Address(Excel.XlReferenceStyle.xlA1, Type.Missing); oRng = oSheet.get_Range("A1", downJoistMarks); var joistDetailArray = (object[,])oRng.Value2; int joistDetailArrayRows = joistDetailArray.GetLength(0); for (int row = 2; row <= joistDetailArrayRows; row++) { string joistDescription = (string)joistDetailArray[row, 1]; if (joistDescription.Contains("G") == true) { Girder girder = new Girder(); girder.Mark = (string)joistDetailArray[row, 1]; girder.Quantity = Convert.ToInt32(joistDetailArray[row, 2]); girder.Description = (string)joistDetailArray[row, 3]; girder.dblBaseLength = Convert.ToDouble(joistDetailArray[row, 4]); girder.JoistType = (string)joistDetailArray[row, 5]; girder.SeatsBDL = Convert.ToDouble(joistDetailArray[row, 6]); girder.SeatsBDR = Convert.ToDouble(joistDetailArray[row, 7]); girder.TCXL = Convert.ToDouble(joistDetailArray[row, 8]); girder.TCXR = Convert.ToDouble(joistDetailArray[row, 9]); girder.BCXL = Convert.ToDouble(joistDetailArray[row, 10]); girder.BCXR = Convert.ToDouble(joistDetailArray[row, 11]); string TCandBC = (string)joistDetailArray[row, 12]; girder.TC = TCandBC.Split('/')[0]; girder.BC = TCandBC.Split('/')[1]; girder.MaterialCost = Convert.ToDouble(joistDetailArray[row, 13]); girder.WeightInLBS = Convert.ToDouble(joistDetailArray[row, 14]); girder.TotalLH = Convert.ToDouble(joistDetailArray[row, 15]); girder.BLDecimal = Convert.ToDouble(joistDetailArray[row, 19]); girder.Time = Convert.ToDouble(joistDetailArray[row, 20]); girder.UseWood = Convert.ToBoolean(joistDetailArray[row, 21]); allGirders.Add(girder); } else { Joist joist = new Joist(); joist.Mark = (string)joistDetailArray[row, 1]; joist.Quantity = Convert.ToInt32(joistDetailArray[row, 2]); joist.Description = (string)joistDetailArray[row, 3]; joist.dblBaseLength = Convert.ToDouble(joistDetailArray[row, 4]); joist.JoistType = (string)joistDetailArray[row, 5]; joist.SeatsBDL = Convert.ToDouble(joistDetailArray[row, 6]); joist.SeatsBDR = Convert.ToDouble(joistDetailArray[row, 7]); joist.TCXL = Convert.ToDouble(joistDetailArray[row, 8]); joist.TCXR = Convert.ToDouble(joistDetailArray[row, 9]); joist.BCXL = Convert.ToDouble(joistDetailArray[row, 10]); joist.BCXR = Convert.ToDouble(joistDetailArray[row, 11]); string TCandBC = (string)joistDetailArray[row, 12]; joist.TC = TCandBC.Split('/')[0]; joist.BC = TCandBC.Split('/')[1]; joist.MaterialCost = Convert.ToDouble(joistDetailArray[row, 13]); joist.WeightInLBS = Convert.ToDouble(joistDetailArray[row, 14]); joist.TotalLH = Convert.ToDouble(joistDetailArray[row, 15]); joist.BLDecimal = Convert.ToDouble(joistDetailArray[row, 19]); joist.Time = Convert.ToDouble(joistDetailArray[row, 20]); joist.UseWood = Convert.ToBoolean(joistDetailArray[row, 21]); allJoists.Add(joist); } } allJoists = allJoists.OrderBy(x => x.StrippedNumber).ToList(); allGirders = allGirders.OrderBy(x => x.StrippedNumber).ToList(); job.Joists = allJoists; job.Girders = allGirders; } return job; }
public Job JobFromBlueBeamMarkups() { Job job = new Job(); List<Joist> allJoists = new List<Joist>(); List<Girder> allGirders = new List<Girder>(); OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.Title = "SELECT BLUE BEAM MARKUP FILE (.XML)"; openFileDialog.Filter = "Markup File (.xml)|*.xml"; openFileDialog.Multiselect = true; if (openFileDialog.ShowDialog() == true) { List<Girder> girders = new List<Girder>(); List<Joist> joists = new List<Joist>(); foreach (String fileName in openFileDialog.FileNames) { //CREATE A COPY OF THE SELECTED FILE AND STORE IT IN A TEMPORARY FILE string markupFileName = System.IO.Path.GetTempFileName(); Byte[] markupInByteArray = System.IO.File.ReadAllBytes(fileName); System.IO.File.WriteAllBytes(markupFileName, markupInByteArray); //LOAD THE BLUEBEAM MARKUP FILE INTO AN XElement XElement markUpFile = XElement.Load(markupFileName); //QUERY THE MARKUP XElement TO FIND ALL GIRDER MARKUPS var girderMarkups = from el in markUpFile.Elements("Markup") where (string)el.Element("Subject") == "GIRDER" select el; //QUERY THE MARKUP XElement TO FIN ALL JOIST MARKUPS var joistMarkups = from el in markUpFile.Elements("Markup") where (string)el.Element("Subject") == "JOIST" select el; //EXTRACT ALL GIRDERS AND THEIR VALUES FROM THE QUERRIED GIRDERS foreach (XElement girderMarkup in girderMarkups) { Girder girder = new Girder(); girder.Mark = (string)girderMarkup.Element("Label"); girder.Description = (string)girderMarkup.Element("JOIST_DESC"); girder.Quantity = (int)girderMarkup.Element("Count"); string allNotes = (string)girderMarkup.Element("NOTES"); girder.Notes = Regex.Split(allNotes, "\n").ToList(); string allLoads = (string)girderMarkup.Element("LOADS"); girder.Loads = Regex.Split(allLoads, "\n").ToList(); girder.strBaseLength = (string)girderMarkup.Element("J-G_Length"); girders.Add(girder); } //EXTRACT ALL JOISTS AND THEIR VALUES FROM THE QUERRIED JOISTS foreach (XElement joistMarkup in joistMarkups) { Joist joist = new Joist(); joist.Mark = (string)joistMarkup.Element("Label"); joist.Description = (string)joistMarkup.Element("JOIST_DESC"); string joistQuantity = (string)joistMarkup.Element("Count"); int joistQuantity_int = Convert.ToInt32(joistQuantity.Replace(",", "")); joist.Quantity = joistQuantity_int; string allNotes = (string)joistMarkup.Element("NOTES"); joist.Notes = Regex.Split(allNotes, "\n").ToList(); string allLoads = (string)joistMarkup.Element("LOADS"); joist.Loads = Regex.Split(allLoads, "\n").ToList(); joist.strBaseLength = (string)joistMarkup.Element("J-G_Length"); joists.Add(joist); } } //CREATE EXCEL COM OBJECT //TEST //foreach (Joist joist in joists) //{ // foreach(string str in joist.Loads) // { // MessageBox.Show(str); // } //} //ADD JOISTS AND GIRDERS TO JOB joists = joists.OrderBy(x => x.StrippedNumber).ToList(); girders = girders.OrderBy(x => x.StrippedNumber).ToList(); job.Joists = joists; job.Girders = girders; } return job; }