private bool SelectTemplateFileAndLoad(ref DxExtractionSettings extractionSettings, out string fileName) { // set no urls or ftp sites var flags = OpenFileDialog.OpenFileDialogFlags.NoUrls | OpenFileDialog.OpenFileDialogFlags.NoFtpSites; // create a new select dialog var ofd = new OpenFileDialog("Select Template file", string.Empty, "dxe", "BrowseTemplateFile", flags); var bCheckFile = true; while (bCheckFile) { if (ofd.ShowDialog() == DialogResult.OK) { fileName = ofd.Filename; if (LoadTemplateFromFile(ofd.Filename, ref extractionSettings)) { bCheckFile = false; return(true); } MessageBox.Show("Failed to open that template file, please try again..."); } else { bCheckFile = false; } } fileName = null; return(false); }
private bool LoadTemplateFromFile(string fileName, ref DxExtractionSettings extractionSettings) { try { extractionSettings = (DxExtractionSettings)DxExtractionSettings.FromFile(fileName); return(extractionSettings != null); } catch (Exception e) { var ed = Application.DocumentManager.MdiActiveDocument.Editor; ed.WriteMessage("\nProblem reading template " + fileName + "\n" + e.Message); } return(false); }
public static Dictionary <string, object> GetData(string dxeFile) { if (string.IsNullOrEmpty(dxeFile)) { return(null); } if (!File.Exists(dxeFile)) { return(null); } var extractionSettings = DxExtractionSettings.FromFile(dxeFile); var dwgExtractor = extractionSettings.DrawingDataExtractor; dwgExtractor.OnError += (s, e) => Debug.WriteLine($"Error: {string.Join(",", e.Filenames)}"); var succes = dwgExtractor.ExtractData(dxeFile); var table = dwgExtractor.ExtractedData; var data = new List <List <string> >(); var columns = new List <string>(); var handles = new List <string>(); for (var i = 0; i <= table.Rows.Count - 1; i++) { data.Add(new List <string>()); handles.Add(table.Rows[i][0].ToString()); for (var j = 2; j <= table.Columns.Count - 1; j++) { data[i].Add(table.Rows[i][j].ToString()); } } for (var j = 2; j <= table.Columns.Count - 1; j++) { columns.Add(table.Columns[j].ColumnName); } return(new Dictionary <string, object> { { "Columns", columns }, { "Data", data }, { "Handles", handles } }); }
public void Cmd_DataExtract() { var rowHeight = SettingsUser.TableRowHeight; var colWidth = SettingsUser.TableColumnWidth; var textHeight = SettingsUser.TableTextHeight; var acCurDoc = Application.DocumentManager.MdiActiveDocument; var acCurDb = acCurDoc.Database; var acCurEd = acCurDoc.Editor; var dwgFolder = Path.GetDirectoryName(acCurDoc.Name); var dwgName = Path.GetFileName(acCurDoc.Name); DxExtractionSettings extractionSettings = null; if (SelectTemplateFileAndLoad(ref extractionSettings, out var templatePath)) { var xmlName = Path.GetFileNameWithoutExtension(templatePath); _ = dwgFolder + "\\" + xmlName + ".csv"; var destPath = dwgFolder + "\\" + Path.GetFileName(templatePath); File.Copy(templatePath, destPath, true); extractionSettings = DxExtractionSettings.FromFile(destPath) as DxExtractionSettings; var dwgList = extractionSettings.DrawingDataExtractor.Settings.DrawingList as DxFileList; foreach (var dwg in dwgList.Files) { extractionSettings.DrawingDataExtractor.Settings.DrawingList.RemoveFile(dwg); } var dxFileReference = new DxFileReference(dwgFolder, dwgFolder + "\\" + dwgName); extractionSettings.DrawingDataExtractor.Settings.DrawingList.AddFile(dxFileReference); dwgList.CurrentFile = dxFileReference; extractionSettings.Save(destPath); //Create a DataLink ObjectId dlId; var dlm = acCurDb.DataLinkManager; using (var dl = new DataLink()) { var dataLinkName = "MyDataLink2"; dlId = dlm.GetDataLink(dataLinkName); if (dlId.IsNull) { // create a datalink dl.ConnectionString = destPath; dl.ToolTip = "My Data Link"; dl.Name = dataLinkName; var da = DataAdapterManager.GetDataAdapter("Autodesk.AutoCAD.DataExtraction.DxDataLinkAdapter"); if (da != null) { dl.DataAdapterId = da.DataAdapterId; } dlId = dlm.AddDataLink(dl); } } // Ask for the table insertion point var pr = acCurEd.GetPoint("\nEnter table insertion point: "); if (pr.Status == PromptStatus.OK) { // Create a table _ = ObjectId.Null; using (var acTrans = acCurDb.TransactionManager.StartTransaction()) { var acTable = new Table(); acTable.Position = pr.Value; acTable.TableStyle = acCurDb.Tablestyle; acTable.SetSize(2, 1); acTable.SetRowHeight(rowHeight); acTable.SetColumnWidth(colWidth); var header = acTable.Cells[0, 0]; header.Value = string.Empty; header.Alignment = CellAlignment.MiddleCenter; header.TextHeight = textHeight; acTable.Cells[1, 0].DataLink = dlId; acCurDb.AppendEntity(acTable, acTrans); //Generate the layout acTable.GenerateLayout(); acTrans.MoveToAttachment(acTable, SettingsUser.TableAttach, pr.Value, SettingsUser.TableXOffset, SettingsUser.TableYOffset); acTrans.Commit(); } } } }