123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277 |
- 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<List<string>> info_all = new List<List<string>>();//obj信息
- private List<ObjectId> objid_all = new List<ObjectId>();
- public AttributeForm()
- {
- InitializeComponent();
- }
-
- public void GetInfo(List<List<string>> info_all, List<ObjectId> 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);
- }
-
- /// <summary>
- /// 缩放至指定范围
- /// </summary>
- /// <param name="extent"></param>
- 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<ObjectId> ids = new List<ObjectId>();
- for(int i =0; i<this.dataGridView_Info.Rows.Count;i++)
- {
- if (this.dataGridView_Info.Rows[i].Selected == true)
- {
- ids.Add(objid_all[i]);
- }
- }
- ObjectId[] objid = ids.ToArray();
- ed.SetImpliedSelection(objid);
- }
-
- private void dataGridView_Info_CellClick(object sender, DataGridViewCellEventArgs e)
- {
- Document doc = GrxCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
- Editor ed = doc.Editor;
- List<ObjectId> ids = new List<ObjectId>();
- ObjectId[] objid = ids.ToArray();
- ed.SetImpliedSelection(objid);
- }
- }
- }
|