private void button2_Click(object sender, EventArgs e)
        {
            List <string> lstAddStr = new List <string>();  //读取的结果存在这里

            Database db  = HostApplicationServices.WorkingDatabase;
            Document doc = Application.DocumentManager.MdiActiveDocument;

            SetFocus(doc.Window.Handle);       //选择完文件在切换焦点
                                               //锁定文档
            using (DocumentLock acLckDoc = doc.LockDocument())
            {
                //框选获取文字 选择集知识点
                //设置选择集过滤器为只选择单行文字
                TypedValue[] acTypValAr = new TypedValue[1];
                acTypValAr.SetValue(new TypedValue(0, "MTEXT"), 0); // 单行文本DBText

                // 创建个人类OtherToosClass对象 用来调用里面的方法
                OtherToolsClass otl    = new OtherToolsClass();
                SelectionSet    acSSet = otl.SelectSsGet("GetSelection", null, acTypValAr);

                if (acSSet != null)
                {
                    foreach (SelectedObject selObj in acSSet)
                    {
                        // 确认返回的是合法的SelectedObject对象
                        if (selObj != null) //
                        {
                            //开始启动事物调整文字位置点和对齐点
                            using (Transaction trans = db.TransactionManager.StartTransaction())
                            {
                                MText myent = trans.GetObject(selObj.ObjectId, OpenMode.ForWrite) as MText;
                                lstAddStr.Add(myent.Contents);  //文字对象复制
                            }
                        }
                    }
                }
            }


            SaveFileDialog saveDlg = new SaveFileDialog();

            saveDlg.Title  = "输出文本内容";
            saveDlg.Filter = "文本文件(*.txt)|*.txt";

            saveDlg.InitialDirectory = Path.GetDirectoryName(db.Filename);
            string fileName = Path.GetFileName(db.Filename);

            saveDlg.FileName = fileName.Substring(0, fileName.IndexOf('.'));
            DialogResult saveDlgRes = saveDlg.ShowDialog();

            if (saveDlgRes == DialogResult.OK)
            {
                string[] contents = new string[lstAddStr.Count];
                for (int i = 0; i < lstAddStr.Count; i++)
                {
                    contents[i] = lstAddStr[i].ToString();
                }
                File.WriteAllLines(saveDlg.FileName, contents);
            }
        }
        public void TextBatchAlign()
        {
            Database db = HostApplicationServices.WorkingDatabase;
            Editor   ed = Application.DocumentManager.MdiActiveDocument.Editor;

            ed.WriteMessage("\n 欢迎使用文字批量对齐程序!!!");



            // 选择一个基准点
            Point3d point = otl.SelectPoint("\n>>>>请选择基准点!!");

            // 创建一个 TypedValue 数组来定义过滤器条件
            //TypedValue[] typeValue = new TypedValue[1];
            TypedValue[] typeValue = new TypedValue[2];
            // 过滤条件 只选择单行文本
            typeValue.SetValue(new TypedValue(0, "TEXT"), 0);
            // 文本内容
            //typeValue.SetValue(new TypedValue((int)DxfCode.Text, "数据智能笔记A"), 1);
            // 选择集 区域手动选择方式
            SelectionSet sSet = otl.SelectSsGet("GetSelection", null, typeValue);

            // 判断选择集是否为空
            if (sSet != null)
            {
                // 如果选择集不为空 遍历选择图元对象
                foreach (SelectedObject sSetObj in sSet)
                {
                    // 开启事务处理
                    using (Transaction trans = db.TransactionManager.StartTransaction())
                    {
                        // 单行文本对象 打开方式为写
                        DBText dbText = trans.GetObject(sSetObj.ObjectId, OpenMode.ForWrite) as DBText;
                        // 垂直方向左对齐
                        dbText.HorizontalMode = TextHorizontalMode.TextLeft;
                        // 判断对齐方式是否是左对齐
                        if (dbText.HorizontalMode != TextHorizontalMode.TextLeft)
                        {
                            // 对齐点
                            Point3d aliPoint = dbText.AlignmentPoint;
                            ed.WriteMessage("\n" + aliPoint.ToString());
                            // 位置点
                            Point3d position = dbText.Position;
                            dbText.AlignmentPoint = new Point3d(point.X, position.Y, 0);
                        }
                        // 如果是左对齐只需要调整插入点
                        else
                        {
                            Point3d position = dbText.Position;
                            dbText.Position = new Point3d(point.X, position.Y, 0);
                        }
                        trans.Commit();
                    }
                }
            }
        }
        private void button1_Click(object sender, EventArgs e)
        {
            List <string> lstAddStr = new List <string>();  //读取的结果存在这里

            Database db  = HostApplicationServices.WorkingDatabase;
            Document doc = Application.DocumentManager.MdiActiveDocument;

            SetFocus(doc.Window.Handle);       //选择完文件在切换焦点
                                               //锁定文档
            using (DocumentLock acLckDoc = doc.LockDocument())
            {
                //框选获取文字
                //设置选择集过滤器为只选择多行文本
                TypedValue[] typeValue = new TypedValue[1];
                typeValue.SetValue(new TypedValue(0, "MTEXT"), 0);

                // 创建个人类OtherToosClass对象 用来调用里面的方法
                OtherToolsClass otl    = new OtherToolsClass();
                SelectionSet    acSSet = otl.SelectSsGet("GetSelection", null, typeValue);

                if (acSSet != null)
                {
                    foreach (SelectedObject selObj in acSSet)
                    {
                        // 确认返回的是合法的SelectedObject对象
                        if (selObj != null) //
                        {
                            //开始启动事物调整文字位置点和对齐点
                            using (Transaction trans = db.TransactionManager.StartTransaction())
                            {
                                MText myent = trans.GetObject(selObj.ObjectId, OpenMode.ForWrite) as MText;
                                lstAddStr.Add(myent.Contents);  //文字对象复制
                            }
                        }
                    }
                }


                //数据接下来输出到EXCEL表格
                IWorkbook wk = null;  //新建IWorkbook对象

                string localFilePath = "D:\\TEST.xlsx";

                // 调用一个系统自带的保存文件对话框 写一个EXCEL
                SaveFileDialog saveFileDialog = new SaveFileDialog();                                          //新建winform自带保存文件对话框对象
                saveFileDialog.Filter = "Excel Office97-2003(*.xls)|*.xls|Excel Office2007及以上(*.xlsx)|*.xlsx"; //过滤只能存储的对象
                DialogResult result = saveFileDialog.ShowDialog();                                             //显示对话框
                localFilePath = saveFileDialog.FileName.ToString();
                //07版之前和之后创建方式不一样
                if (localFilePath.IndexOf(".xlsx") > 0)     // 2007版
                {
                    wk = new XSSFWorkbook();                //创建表格对象07版之后
                }
                else if (localFilePath.IndexOf(".xls") > 0) // 创建表格对象 2003版本
                {
                    wk = new HSSFWorkbook();                //03版
                }
                //创建工作簿
                ISheet tb = wk.CreateSheet("输出的文本");
                for (int i = 0; i < lstAddStr.Count; i++)
                {
                    ICell cell = tb.CreateRow(i).CreateCell(0); //单元格对象 第i行第0列  cell 单元格对象
                    cell.SetCellValue(lstAddStr[i]);            //循环往单元格赋值
                }
                //创建文件
                using (FileStream fs = File.OpenWrite(localFilePath)) //打开一个xls文件,如果没有则自行创建,如果存在myxls.xls文件则在创建是不要打开该文件!
                {
                    wk.Write(fs);                                     //文件IO 创建EXCEL
                    MessageBox.Show("提示:创建成功!");
                    fs.Close();
                }
            }
        }