using GrxCAD.ApplicationServices; using GrxCAD.DatabaseServices; using GrxCAD.EditorInput; using GrxCAD.Geometry; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace HCTools { public partial class AttributeForm : Form { private List> info_all = new List>();//obj信息 private List objid_all = new List(); public AttributeForm() { InitializeComponent(); } public void GetInfo(List> info_all, List objid_all) { this.info_all = info_all; this.objid_all = objid_all; } private void AttributeForm_Load(object sender, EventArgs e) { this.dataGridView_Info.ColumnCount = 9; this.dataGridView_Info.Columns[0].HeaderText = "ID"; this.dataGridView_Info.Columns[1].HeaderText = "名称"; this.dataGridView_Info.Columns[2].HeaderText = "图层"; this.dataGridView_Info.Columns[3].HeaderText = "类型"; this.dataGridView_Info.Columns[4].HeaderText = "X"; this.dataGridView_Info.Columns[5].HeaderText = "Y"; this.dataGridView_Info.Columns[6].HeaderText = "Z"; this.dataGridView_Info.Columns[7].HeaderText = "长度(m)"; this.dataGridView_Info.Columns[8].HeaderText = "面积(m²)"; this.dataGridView_Info.AllowUserToAddRows = false; this.dataGridView_Info.AllowUserToResizeRows = false; this.dataGridView_Info.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; this.dataGridView_Info.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter; //this.dataGridView_Info.RowHeadersVisible = false; this.dataGridView_Info.ReadOnly = true; for (int i = 0; i < info_all.Count; i++) { dataGridView_Info.Rows.Add(); } for (int i = 0; i < this.dataGridView_Info.Rows.Count; i++) { this.dataGridView_Info[0, i].Value = info_all[i][0]; this.dataGridView_Info[1, i].Value = info_all[i][1]; this.dataGridView_Info[2, i].Value = info_all[i][2]; this.dataGridView_Info[3, i].Value = info_all[i][3]; this.dataGridView_Info[4, i].Value = info_all[i][4]; this.dataGridView_Info[5, i].Value = info_all[i][5]; this.dataGridView_Info[6, i].Value = info_all[i][6]; this.dataGridView_Info[7, i].Value = info_all[i][7]; this.dataGridView_Info[8, i].Value = info_all[i][8]; } } private void dataGridView_Info_SortCompare(object sender, DataGridViewSortCompareEventArgs e) { int column = e.Column.Index; int row1 = e.RowIndex1; int row2 = e.RowIndex2; if (column == 0|| column == 4 || column == 5 || column == 6) { double value1 = Convert.ToDouble(e.CellValue1.ToString().Replace("_", "")); double value2 = Convert.ToDouble(e.CellValue2.ToString().Replace("_", "")); if (value1 > value2) e.SortResult = 1; else if (value2 == value1) e.SortResult = 0; else e.SortResult = -1; e.Handled = true; } } private void 缩放至ToolStripMenuItem_Click(object sender, EventArgs e) { DataGridViewRow row = this.dataGridView_Info.CurrentRow; ObjectId id = objid_all[Convert.ToInt32(row.Cells[0].Value) - 1]; Entity current_entity = BasicFunction.GetDBObject(id); current_entity.Highlight();//高亮显示实体 //缩放至实体 ZoomToExtent(current_entity.GeometricExtents); } /// /// 缩放至指定范围 /// /// public static void ZoomToExtent(Extents3d extent) { try { Point3d pMin = extent.MinPoint; Point3d pMax = extent.MaxPoint; //获取当前文档及数据库 Document acDoc = GrxCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument; Database acCurDb = acDoc.Database; // 启动事务 using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction()) { using (ViewTableRecord acView = acDoc.Editor.GetCurrentView()) { //设置视图的高 acView.Height = Math.Abs(pMin.Y - pMax.Y); //设置视图的宽 acView.Width = Math.Abs(pMin.X - pMax.X); // 设置视图中心 acView.CenterPoint = new Point2d((pMin.X + pMax.X) / 2, (pMin.Y + pMax.Y) / 2); // 更新当前视图 acDoc.Editor.SetCurrentView(acView); } // 提交更改 acTrans.Commit(); } } catch (Exception) { throw; } } private void button1_Click(object sender, EventArgs e) { SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.Filter = "Text Files|*.txt"; saveFileDialog.Title = "保存txt文件"; saveFileDialog.FileName = "导出数据.txt"; if (saveFileDialog.ShowDialog() == DialogResult.OK) { // 使用 StreamWriter 写入文件 using (StreamWriter writer = new StreamWriter(saveFileDialog.FileName, false, Encoding.UTF8)) { // 写入列标题 for (int i = 0; i < dataGridView_Info.Columns.Count; i++) { writer.Write(dataGridView_Info.Columns[i].HeaderText); if (i < dataGridView_Info.Columns.Count - 1) { writer.Write("\t"); } } writer.WriteLine(); // 写入数据 //判断是否有被选中数据,有的话导出选中的 int flag = 0; foreach (DataGridViewRow row in dataGridView_Info.Rows) { if (row.Selected == true) flag = 1; } if (flag == 0) { for (int i = 0; i < dataGridView_Info.Rows.Count; i++) { for (int j = 0; j < dataGridView_Info.Columns.Count; j++) { writer.Write(dataGridView_Info.Rows[i].Cells[j].Value.ToString()); if (j < dataGridView_Info.Columns.Count - 1) { writer.Write("\t"); } } writer.WriteLine(); } } else if (flag == 1) { for (int i = 0; i < dataGridView_Info.Rows.Count; i++) { if (dataGridView_Info.Rows[i].Selected == true) { for (int j = 0; j < dataGridView_Info.Columns.Count; j++) { writer.Write(dataGridView_Info.Rows[i].Cells[j].Value.ToString()); if (j < dataGridView_Info.Columns.Count - 1) { writer.Write("\t"); } } writer.WriteLine(); } } } } MessageBox.Show("数据导出成功!", "成功", MessageBoxButtons.OK, MessageBoxIcon.Information); } } private void button_show_Click(object sender, EventArgs e) { Document doc = GrxCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument; Editor ed = doc.Editor; PromptSelectionResult selectionResult = ed.SelectImplied(); if (selectionResult.Status == PromptStatus.OK) { SelectionSet selectionSet = selectionResult.Value; using (Transaction trans = doc.TransactionManager.StartTransaction()) { foreach (SelectedObject selectedObject in selectionSet) { ObjectId objectId = selectedObject.ObjectId; for (int i = 0; i < objid_all.Count; i++) { if (objectId == objid_all[i]) this.dataGridView_Info.Rows[i].Selected = true; } } trans.Commit(); } foreach (DataGridViewRow row in dataGridView_Info.Rows) { row.Visible = row.Selected; } } } private void button_cancelshow_Click(object sender, EventArgs e) { foreach (DataGridViewRow row in dataGridView_Info.Rows) { row.Visible = true; } } private void AttributeForm_FormClosed(object sender, FormClosedEventArgs e) { info_all.Clear(); objid_all.Clear(); } private void dataGridView_Info_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e) { Document doc = GrxCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument; Editor ed = doc.Editor; List ids = new List(); for(int i =0; i ids = new List(); ObjectId[] objid = ids.ToArray(); ed.SetImpliedSelection(objid); } } }