using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using DevComponents.DotNetBar; using GeoScene.Globe; using GeoScene.Data; using GeoScene.Engine; namespace Cyberpipe.FormAnalysis { public partial class FormFT : Office2007Form { GSOGlobeControl globeControl1 = null; int maxPageIndex = 20; int rows = 0; public static GSODataSource ds = null; private GSOFeatures features = null; private GSOLayer layerTemp = null; public FormFT(GSOFeatures _features, GSOGlobeControl _globeControl, GSOLayer _layerTemp) { InitializeComponent(); features = _features; globeControl1 = _globeControl; layerTemp = _layerTemp; } private void FormFT_Load(object sender, EventArgs e) { addFeaturesToDataGridView(features); } private void addFeaturesToDataGridView(GSOFeatures features) { DataTable dt = new DataTable(); dt.Columns.Add("审核图层"); dt.Columns.Add("编号"); for (int i = 0; i < features.Length; i++) { DataRow r = dt.NewRow(); r[0] = features[i].Dataset.Name; r[1] = features[i].Name; dt.Rows.Add(r); } dataGridViewX1.DataSource = dt; } private void buttonOK_Click(object sender, EventArgs e) { if (textBoxFTSD.Text.Trim() == "") { MessageBox.Show("覆土深度不能为空!", "提示"); return; } double dFuTuShenDu = 0; if (!double.TryParse(textBoxFTSD.Text.Trim(), out dFuTuShenDu)) { MessageBox.Show("请输入正确的覆土深度!", "提示"); return; } DataTable dt = new DataTable(); dt.Columns.Add("审核图层"); dt.Columns.Add("审核编号"); dt.Columns.Add("埋深/m"); for (int i = 0; i < dataGridViewX1.Rows.Count; i++) { GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption( dataGridViewX1.Rows[i].Cells[0].Value.ToString()); GSOFeatures features = layer.GetFeatureByName(dataGridViewX1.Rows[i].Cells[1].Value.ToString(), true); GSOFeature rowFeature = features[0]; GSOGeoPolyline3D line = rowFeature.Geometry as GSOGeoPolyline3D; if (line == null) { continue; } GSOPipeLineStyle3D style = line.Style as GSOPipeLineStyle3D; if (style == null) { continue; } if (line.PartCount <= 0) continue; GSOPoint3ds pts = line[0]; GSOPoint3d pt = new GSOPoint3d(); for (int m = 0; m < pts.Count; m++) { if (Math.Abs(pts[m].Z + (style.Radius)) < Convert.ToDouble(textBoxFTSD.Text.Trim())) { DataRow row = dt.NewRow(); row[0] = rowFeature.Dataset.Caption; row[1] = rowFeature.Name; row[2] = Math.Abs((pts[m].Z + (style.Radius))).ToString("0.00"); dt.Rows.Add(row); pt.X = pts[m].X; pt.Y = pts[m].Y; pt.Z = 0; DoublePanelAnalysis.MakeLabel(layerTemp, pts[m], pt, Math.Abs((pts[m].Z + (style.Radius))).ToString("0.00"), true); break; } } } dataGridViewX2.DataSource = dt; globeControl1.Refresh(); if (dataGridViewX2.Rows.Count == 0) { MessageBox.Show("所有管线满足覆土净距标准!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } } private void dataGridViewX1_MouseDoubleClick(object sender, MouseEventArgs e) { DataGridView.HitTestInfo hittestinfo = dataGridViewX1.HitTest(e.X, e.Y); if (hittestinfo.RowIndex < 0) return; try { GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(dataGridViewX1.Rows[hittestinfo.RowIndex].Cells["审核图层"].Value.ToString()); GSOFeatures features = layer.GetFeatureByName(dataGridViewX1.Rows[hittestinfo.RowIndex].Cells["编号"].Value.ToString(), true); //globeControl1.Globe.JumpToFeature(features[0], 50); ClassSearchAnalysis.AddMakerToLineFeature(globeControl1, features[0]); } catch (Exception ex) { MessageBox.Show("定位失败:" + ex, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void dataGridViewX2_MouseDoubleClick(object sender, MouseEventArgs e) { DataGridView.HitTestInfo hittestinfo = dataGridViewX2.HitTest(e.X, e.Y); if (hittestinfo.RowIndex < 0) return; try { GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(dataGridViewX2.Rows[hittestinfo.RowIndex].Cells["审核图层"].Value.ToString()); GSOFeatures features = layer.GetFeatureByName(dataGridViewX2.Rows[hittestinfo.RowIndex].Cells["审核编号"].Value.ToString(), true); //globeControl1.Globe.JumpToFeature(features[0], 50); ClassSearchAnalysis.AddMakerToLineFeature(globeControl1, features[0]); } catch (Exception ex) { MessageBox.Show("定位失败:" + ex, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void buttonX1_Click(object sender, EventArgs e) { string strSaveFile = ""; SaveFileDialog savefiledialog = new SaveFileDialog(); savefiledialog.Filter = "Excel文件|*.xls,*.xlsx"; savefiledialog.AddExtension = true; savefiledialog.FileName = "覆土审核"; if (savefiledialog.ShowDialog() == DialogResult.OK) strSaveFile = savefiledialog.FileName; else return; ExpEXCEL.ExpToExcel(dataGridViewX2, strSaveFile, "覆土审核"); } } }