예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
    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 }
        });
    }
예제 #4
0
        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();
                    }
                }
            }
        }