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) { InitWinGridView.initlizeDatagrid(winGridViewPager1, rows, maxPageIndex); InitWinGridView.initlizeDatagrid(winGridViewPager2, rows, maxPageIndex); initlizeDatagrid(); addFeaturesToDataGridView(features); this.winGridViewPager1.OnEditSelected += new EventHandler(winGridViewPager1_OnEditSelected); this.winGridViewPager2.OnEditSelected += new EventHandler(winGridViewPager2_OnEditSelected); } /// <summary> /// 初始化分页表格 /// </summary> private void initlizeDatagrid() { winGridViewPager1.AddColumnAlias("审核图层", "审核图层"); winGridViewPager1.AddColumnAlias("编号", "编号"); winGridViewPager1.DisplayColumns = "审核图层,编号"; winGridViewPager2.AddColumnAlias("审核图层", "审核图层"); winGridViewPager2.AddColumnAlias("审核编号", "审核编号"); winGridViewPager2.AddColumnAlias("埋深/m", "埋深/m"); winGridViewPager2.DisplayColumns = "审核图层,审核编号,埋深/m"; } 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); } winGridViewPager1.DataSource = dt.DefaultView; } 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 < winGridViewPager1.dataGridView1.Rows.Count; i++) { GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption( winGridViewPager1.dataGridView1.Rows[i].Cells[0].Value.ToString()); GSOFeatures features = layer.GetFeatureByName(winGridViewPager1.dataGridView1.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; //LabelVerticalDistance(layerTemp, pts[m], pt, // Convert.ToDouble(Math.Abs((pts[m].Z + (style.Radius))).ToString("0.00")), true); DoublePanelAnalysis.MakeLabel(layerTemp, pts[m], pt, Math.Abs((pts[m].Z + (style.Radius))).ToString("0.00"), true); break; } } } winGridViewPager2.DataSource = dt.DefaultView; globeControl1.Refresh(); if (winGridViewPager2.dataGridView1.Rows.Count == 0) { MessageBox.Show("所有管线满足覆土净距标准!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } } private void winGridViewPager1_OnEditSelected(object sender, EventArgs e) { DataGridView grid = sender as DataGridView; if (grid == null || grid.SelectedRows.Count <= 0) { MessageBox.Show("没有选择记录", "提示"); return; } DataGridViewRow row = grid.SelectedRows[0]; try { GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(row.Cells[0].Value.ToString()); GSOFeatures features = layer.GetFeatureByName(row.Cells[1].Value.ToString(), true); //globeControl1.Globe.FlyToFeature(features[0]); globeControl1.Globe.JumpToFeature(features[0],50); } catch (Exception ex) { MessageBox.Show("定位失败:" + ex, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void winGridViewPager2_OnEditSelected(object sender, EventArgs e) { DataGridView grid = sender as DataGridView; if (grid == null || grid.SelectedRows.Count <= 0) { MessageBox.Show("没有选择记录", "提示"); return; } DataGridViewRow row = grid.SelectedRows[0]; try { GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(row.Cells[0].Value.ToString()); GSOFeatures features = layer.GetFeatureByName(row.Cells[1].Value.ToString(), true); //globeControl1.Globe.FlyToFeature(features[0]); globeControl1.Globe.JumpToFeature(features[0], 50); } catch (Exception ex) { MessageBox.Show("定位失败:" + ex, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } }