//
// Copyright (c) PlaceholderCompany. All rights reserved.
//
using DevExpress.Utils.Extensions;
using GeoSigma.UCDraw.Tool;
namespace PcgDrawR
{
using AI.ViewModels;
using AI.Views;
using DevExpress.Internal;
using DevExpress.Utils.Svg;
using DevExpress.XtraBars;
using DevExpress.XtraBars.Docking;
using DevExpress.XtraBars.Ribbon;
using DevExpress.XtraEditors;
using DevExpress.XtraGauges.Core.Model;
using DevExpress.XtraGrid;
using DrawerInterface;
using GeoSigma.SigmaDrawerUtil;
using GeoSigma.UCDraw;
using GeoSigma.UCDraw.UC;
using GeoSigmaDrawLib;
using global::AI;
using Microsoft.Extensions.DependencyInjection;
using SigmaDrawerElement;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml.Linq;
using UCDraw;
using MethodInvoker = System.Windows.Forms.MethodInvoker;
///
/// The NewFileSavedHandler.
///
/// The fileFullName.
public delegate void NewFileSavedHandler(string fileFullName);
///
/// The FileClosedEventHandler.
///
/// The sender.
/// The e.
public delegate void FileClosedEventHandler(object sender, EventArgs e);
///
/// 显示VTK窗口
///
/// The sender.
/// The instance containing the event data.
public delegate void ShowVtkEventHandler(object sender, ShowVtkEventArgs e);
///
/// 关闭VTK窗口
///
/// The VTK edit.
public delegate void CloseVtkHandler(UCVtkEdit vtkEdit);
///
/// 图层选择通知代理(带状态)
///
/// 图层
/// 状态
public delegate void LayerSelectedNotifyWithStatusHandler(string layers, LayerStatus status);
///
/// 通知上层打开一个新文件
///
/// 文件路径
public delegate void OpenNewFileHandler(string filePath);
///
/// Ribbon风格图形编辑.
///
public partial class UCDrawEdit : XtraUserControl // DevExpress.XtraBars.Ribbon.RibbonForm
{
private static bool hasProcessDebug = false;
///
/// Defines the NewFileSavedEvent.
///
public NewFileSavedHandler NewFileSavedEvent { get; set; }
///
/// Defines the FileClosedEvent.
///
public FileClosedEventHandler FileClosedEvent { get; set; }
///
/// Gets or sets the close VTK handler event.
///
///
/// The close VTK handler event.
///
public CloseVtkHandler CloseVtkEvent { get; set; }
///
/// Gets or sets the show VTK event.
///
///
/// The show VTK event.
///
public ShowVtkEventHandler ShowVtkEvent { get; set; }
///
/// Defines the ShowStatisticResult.
///
public event EventHandler ShowStatisticResult;
///
/// Defines the FileModifiedEvent.
///
public event FileModifyEventHandle FileModifiedEvent;
///
/// 打开新文件
///
public event OpenNewFileHandler OpenNewFile;
///
/// 2维图层选择通知(带状态)
///
public LayerSelectedNotifyWithStatusHandler LayerSelectedNotify2dWithStatus { get; set; }
///
/// Defines the layerPanel.
///
private DockPanel layerPanel;
///
/// VtkMainMesh
///
public IntPtr VtkMainMesh { get; set; } = IntPtr.Zero;
///
/// 设置主网格
///
///
public void SetVtkMainMesh(IntPtr pMash)
{
VtkMainMesh = pMash;
this.LayerControl.VtkMainMesh = pMash;
mainView.MainMeshLayer3D = mainView.ViewControl.Geo.GetLayerByMainMesh3D(pMash);
}
///
/// 获取主网格所在的图层
///
///
public string GetMainMeshLayer()
{
return mainView.MainMeshLayer3D;
}
///
/// 通过文件存储的主网格ID获取主网格数据对象
///
///
public IntPtr LoadVtkMainMesh()
{
// 从文件获取主网格ID
string layerName = mainView.ViewControl.Geo.GetMainMeshLayer3D();
if (string.IsNullOrEmpty(layerName))
{
return IntPtr.Zero;
}
IntPtr ret = mainView.ViewControl.Geo.GetMainMeshByLayer3D(layerName);
if (ret == IntPtr.Zero)
{
return IntPtr.Zero;
}
Drawer drawer = DrawerView.ViewControl.Drawer;
drawer.SetVtkMainMeshEvent?.Invoke(drawer.DrawFileName, ret);
return ret;
}
///
/// 通过文件存储的图层设置
///
///
public void LoadLayerSetting()
{
this.HoleLayer = mainView.ViewControl.Geo.GetFaultLayer3D();
this.BorderControlLayer = mainView.ViewControl.Geo.GetBorderLayer3D();
this.WellLayer = mainView.ViewControl.Geo.GetWellLayer3D();
this.btiDigEmptyLayer.EditValue = this.HoleLayer;
this.btiBorderControlLayer.EditValue = this.BorderControlLayer;
this.btiWellLayer.EditValue = this.WellLayer;
}
///
/// Gets or sets the main mesh property.
///
///
/// The main mesh property.
///
public SigmaDrawerElement.DrawerElementProperty MainMeshProperty { get; set; } = null;
///
/// Gets or sets the LayerPanel
/// 图层面板.
///
public DockPanel LayerPanel
{
get
{
return layerPanel;
}
set
{
layerPanel = value;
try
{
if (!object.ReferenceEquals(value, dcpLayer))
{
if (dcpLayer.Parent.Controls.Count == 1)
{
Controls.Remove(dcpLayer.Parent);
}
else
{
dockManager1.RemovePanel(dcpLayer);
}
}
//else
//{
// this.dcpLayer.Visibility = DockVisibility.Visible;
//}
}
finally
{
}
}
}
private DockPanel propertyPanel;
///
/// Gets or sets the PropertyPanel
/// 属性面板.
///
public DockPanel PropertyPanel
{
get
{
return propertyPanel;
}
set
{
propertyPanel = value;
if (!object.ReferenceEquals(value, dcpProperty))
{
if (dcpProperty.Parent.Controls.Count == 1)
{
Controls.Remove(dcpProperty.Parent);
}
else if (dcpProperty.Parent.Controls.Count == 2
&& dcpProperty.Parent.Controls.Contains(dcpCreate))
{
dockManager1.RemovePanel((DockPanel)dcpProperty.Parent);
//Controls.Remove(dcpProperty.Parent);
}
else
{
dockManager1.RemovePanel(dcpProperty);
}
}
}
}
private DockPanel createMapPanel;
public DockPanel CreateMapPanel
{
get
{
return createMapPanel;
}
set
{
createMapPanel = value;
if (!object.ReferenceEquals(value, createMapPanel))
{
if (createMapPanel.Parent.Controls.Count == 1)
{
Controls.Remove(dcpCreate.Parent);
}
else if (dcpCreate.Parent.Controls.Count == 2
&& dcpCreate.Parent.Controls.Contains(dcpCreate))
{
dockManager1.RemovePanel((DockPanel)dcpCreate.Parent);
//Controls.Remove(dcpProperty.Parent);
}
else
{
dockManager1.RemovePanel(dcpCreate);
}
}
}
}
///
/// Defines the statisticPanel.
///
private DockPanel statisticPanel;
///
/// Gets or sets the StatisticPanel
/// 统计面板.
///
public DockPanel StatisticPanel
{
get
{
return statisticPanel;
}
set
{
statisticPanel = value;
if (!object.ReferenceEquals(dcpStatistic, value))
{
if (dcpStatistic.Parent.Controls.Count == 1)
{
Controls.Remove(dcpStatistic.Parent);
}
else
{
dockManager1.RemovePanel(dcpStatistic);
}
}
//else
//{
// this.dcpStatistic.Visibility = DockVisibility.Visible;
//}
}
}
///
/// Defines the drawerStatusBar.
///
private RibbonStatusBar drawerStatusBar;
///
/// Gets or sets the DrawerStatusBar
/// 状态条,显示鼠标位置等提示信息.
///
public RibbonStatusBar DrawerStatusBar
{
get
{
return drawerStatusBar;
}
set
{
drawerStatusBar = value;
}
}
///
/// Gets the DrawerView
/// 主绘图控件.
///
public MainView DrawerView => mainView;
///
/// Gets or sets the LayerControl
/// 树控件.
///
public LayerTree LayerControl { get; set; }
///
/// Gets or sets the PropertyControl
/// 属性控件.
///
public PanelProperty PropertyControl { get; set; }
private PanelGraph panelGraph = null;
///
/// 数据成图控件
///
public PanelGraph GraphControl
{
get
{
return panelGraph;
}
}
///
/// Gets or sets the StatisticControl
/// 统计数据控件.
///
public PanelControl StatisticControl { get; set; }
///
/// Gets or sets the LayerSelected
/// 图层选择事件.
///
public EventHandler LayerSelected
{
get
{
return DrawerView?.LayerSelected;
}
set
{
if (DrawerView != null)
{
DrawerView.LayerSelected = value;
}
}
}
///
/// Gets or sets the ZColorWidth
/// 色块尺寸,当散点显示为色块时使用此属性。.
///
public double ZColorWidth { get; set; } = 25;
///
/// Gets or sets the FileFullName
/// 文件全路径.
///
public string FileFullName
{
get
{
return mainView.FileFullName;
}
set
{
mainView.FileFullName = value;
}
}
///
/// 等值线图层名
///
public string GridContourLayer { get; set; } = "等值线";
///
/// 断层图层名
///
public string GridFaultLayer { get; set; } = "断层";
///
/// 网格编辑控制点图层
///
public string ControlPointLayer { get; set; } = string.Empty;
///
/// 网格编辑器其它线类图层
///
public string OtherLineLayer { get; set; } = string.Empty;
///
/// 沉积相井位图层
///
public string KedControlPointLayer { get; set; } = string.Empty;
///
/// 沉积相其它线类图层
///
public string KedOtherLineLayer { get; set; } = string.Empty;
///
/// 三维挖空图层
///
public string HoleLayer { get; set; } = string.Empty;
///
/// 范围边界
///
public string BorderControlLayer { get; set; } = string.Empty;
///
/// 井位图层
///
public string WellLayer { get; set; } = string.Empty;
private string popupTreeType = string.Empty;
///
/// Gets or sets a value indicating whether EnableMeshPack.
///
public bool EnableMeshPack
{
get
{
return mainView.EnableMeshPack;
}
set
{
mainView.EnableMeshPack = value;
if (bbtnMeshPack.Down != mainView.EnableMeshPack)
{
bbtnMeshPack.Down = mainView.EnableMeshPack;
}
}
}
///
/// Gets or sets a value indicating whether StatusBarVisible
/// Gets or sets 状态条是否可见..
///
public bool StatusBarVisible
{
get
{
return ribbonStatusBar1.Visible;
}
set
{
ribbonStatusBar1.Visible = value;
}
}
///
/// Gets or sets a value indicating whether ViewGroupVisible
/// 视图工具组是否可见.
///
public bool ViewGroupVisible
{
get
{
return rgpViews.Visible;
}
set
{
rgpViews.Visible = value;
}
}
///
/// Gets or sets the DrawerGotFocus
/// 获得焦点事件.
///
public EventHandler DrawerGotFocus
{
get
{
if (mainView != null)
{
return mainView.DrawerGotFocus;
}
return null;
}
set
{
if (mainView != null)
{
mainView.DrawerGotFocus = value;
}
}
}
///
/// Gets the RibbonDraw
/// 绘图工具RibbonPage.
///
public RibbonPage RibbonDraw
{
get
{
return ribbonPage1;
}
}
///
/// Defines the mainView.
///
private MainView mainView = null;
///
/// Defines the layerPopNode.
///
private string layerPopNode = string.Empty;
///
/// Gets or sets a value indicating whether StatisticPanelVisible
/// get/set 统计面板的可见性.
///
public bool StatisticPanelVisible
{
get
{
return StatisticPanel.Visibility == DockVisibility.Visible;
}
set
{
try
{
if (value == true)
{
StatisticPanel.Visibility = DockVisibility.Visible;
}
else
{
StatisticPanel.Visibility = DockVisibility.Hidden;
}
}
catch
{
}
}
}
///
/// Gets or sets a value indicating whether LayerPanelVisible
/// get/set 图层面板可见性.
///
public bool LayerPanelVisible
{
get
{
return LayerPanel.Visibility == DockVisibility.Visible;
}
set
{
try
{
if (value == true)
{
LayerPanel.Visibility = DockVisibility.Visible;
}
else
{
LayerPanel.Visibility = DockVisibility.Hidden;
}
}
catch
{
}
}
}
///
/// Gets or sets a value indicating whether PropertyPanelVisible
/// get/set 属性面板可见性.
///
public bool PropertyPanelVisible
{
get
{
return PropertyPanel.Visibility == DockVisibility.Visible;
}
set
{
try
{
if (value == true)
{
if (bckiPanelProperty.Checked != true)
{
bckiPanelProperty.Checked = true;
return;
}
this.PropertyPanel.Index = 0;
CreateMapPanel.Visibility = DockVisibility.Visible;
PropertyPanel.Visibility = DockVisibility.Visible;
this.PropertyPanel.ParentPanel.ActiveChild = this.PropertyPanel;
}
else
{
CreateMapPanel.Visibility = DockVisibility.Hidden;
PropertyPanel.Visibility = DockVisibility.Hidden;
if (bckiPanelProperty.Checked == true)
{
bckiPanelProperty.Checked = false;
}
}
}
catch
{
}
}
}
private bool batchSetZColorFlag;
///
/// Gets or sets a value indicating whether [batch set z color flag].
///
///
/// true if [batch set z color flag]; otherwise, false.
///
public bool BatchSetZColorFlag
{
get
{
return batchSetZColorFlag;
}
set
{
this.btnSetXyzClore.Enabled = value;
batchSetZColorFlag = value;
}
}
///
/// 将全部内容当前分辨率保存到指定输出文件.
///
/// The output file.
/// 左
/// 上
/// 右
/// 下
public void Draw2Image(string outputFile, double left = 0, double top = 0, double right = 0, double bottom = 0)
{
mainView?.Draw2Image(outputFile, left, top, right, bottom);
}
private BarManager bmDrawer;
private string layoutFilePath;
///
/// Initializes a new instance of the class.
///
public UCDrawEdit()
{
InitializeComponent();
for (int i = 5; i <= 18; i++)
{
this.listBoxControl1.Items.Add(i);
}
this.listBoxControl1.SelectedIndexChanged += ListBoxControl1_SelectedIndexChanged;
this.LayerSelectedNotify2dWithStatus += (layers, status) =>
{
// 2维图层树更新操作
var layerTree = LayerControl.TreeControl;
layerTree.SuspendLayout();
var layerItems = layers.Split(new[] { ";" }, StringSplitOptions.RemoveEmptyEntries).ToList();
var fullNodes = TreeViewHelper.TraverseTreeView(layerTree);
foreach (var layerItem in fullNodes)
{
if (layerItem.Text == "图层")
{
continue;
}
if (layerItems.Contains(layerItem.FullPath))
{
LayerControl.SetNodeStatus(new List() { LayerControl.GetLayerName(layerItem) },
status);
}
}
if (layerItems.Count > 0)
{
LayerControl_2dNodeViewToggleEvent(layers, status);
}
};
this.layoutFilePath = Path.Combine(Application.StartupPath, "KevEditorLayout.xml");
this.initializeDrawerBar();
this.LoadDrawerToolbar();
LoadCustomMenu();
mainView = new MainView();
mainView.ReloadFileEvent += RestoreState;
Drawer drawer1 = this.DrawerView.ViewControl.Drawer;
drawer1.ViewOnKeyUp += OnKeyUp;
LayerControl = mainView.LayerTreeControl;
PropertyControl = mainView.PropertyControl;
// 由于属性处理多标签页中,当选中图元或图层时,右侧当前激活的可能不是属性标签,我们这时需要手工去激活一下属性标签页
//PropertyControl.ElementChanged += PropertyControl_ElementChanged;
//PropertyControl.LayerChanged += PropertyControl_LayerChanged;
DrawerView.DrawerGotFocus += (object drawer, EventArgs ea) =>
{
switchPropertyPanel();
};
StatisticControl = mainView.StaticsControl;
panelGraph = new PanelGraph();
panelGraph.BeforeGridding += PanelGraph_BeforeGridding;
panelGraph.GriddingStarted += PanelGraph_GriddingStarted;
panelGraph.GriddingFinished += PanelGraph_GriddingFinished;
panelGraph.ImportStarted += PanelGraph_ImportStarted;
panelGraph.ImportFinished += PanelGraph_ImportFinished;
this.LayerControl.NodeViewToggleEvent += LayerControl_2dNodeViewToggleEvent;
// drawerStatusBar = this.ribbonMain.StatusBar;
mainView.ViewerCommandStart += OnCommandStart;
mainView.ViewerCommandFinish += OnCommandFinish;
mainView.ShowStatisticResult += MainView_ShowStatisticResult;
mainView.WaitProgressEvent += DrawerWaitProgress;
InitToolTip();
LayerPanel = this.dcpLayer;
PropertyPanel = this.dcpProperty;
CreateMapPanel = this.dcpCreate;
StatisticPanel = dcpStatistic;
// 处理调试配置
if (!hasProcessDebug)
{
if (DrawerConfig.Instance.FindConfigValue("Debug", "Enable", false))
{
CrashDumpManager.Enable();
}
hasProcessDebug = true;
}
//Controls.Remove(dcpProperty.Parent);
//dockManager1.RemovePanel(dcpProperty);
//dockManager1.RemovePanel((DockPanel)dcpProperty.Parent);
WindowSync.Down = DrawerConfig.Instance.FindConfigValue("MultiView", "OnSynchronize", false);
this.trvLayer.AfterCheck += trvLayer_AfterCheck;
}
private void trvLayer_AfterCheck(object sender, TreeViewEventArgs e)
{
// 防止事件循环(修改子节点时会触发新的AfterCheck事件)
this.trvLayer.AfterCheck -= trvLayer_AfterCheck;
try
{
// 根据当前节点的选中状态,更新所有子节点
UpdateTrvLayerChildNodes(e.Node, e.Node.Checked);
}
finally
{
// 恢复事件处理
this.trvLayer.AfterCheck += trvLayer_AfterCheck;
}
}
private void UpdateTrvLayerChildNodes(TreeNode parentNode, bool isChecked)
{
foreach (TreeNode childNode in parentNode.Nodes)
{
// 设置子节点的选中状态
childNode.Checked = isChecked;
// 递归处理子节点的子节点
UpdateTrvLayerChildNodes(childNode, isChecked);
}
}
private void switchPropertyPanel()
{
if (this.InvokeRequired)
{
this.Invoke(new MethodInvoker(delegate
{
switchPropertyPanel();
return;
}));
}
else
{
if (this.PropertyPanel.Visibility == DockVisibility.Visible
&& this.PropertyPanel.ParentPanel != null
&& this.PropertyPanel.ParentPanel.ActiveChild != null
&& (this.PropertyPanel.ParentPanel.ActiveChild == this.dcpCreate
|| this.PropertyPanel.ParentPanel.ActiveChild.Name == "dcpCreateMap"))
{
this.PropertyPanel.ParentPanel.Tabbed = true;
if (this.PropertyPanel.ParentPanel.ActiveChild != this.PropertyPanel)
{
this.PropertyPanel.ParentPanel.SuspendLayout();
this.PropertyPanel.ParentPanel.ActiveChild = this.PropertyPanel;
this.PropertyPanel.ParentPanel.ResumeLayout();
}
}
}
}
//private void PropertyControl_ElementChanged(object sender, EventArgs e)
//{
// ActivePropertyPanel();
//}
//private void PropertyControl_LayerChanged(object sender, EventArgs e)
//{
// // 点击图层时,应该不切换到属性页面:
// // ActivePropertyPanel();
//}
private void ActivePropertyPanel()
{
// 先暂时不处理
return;
if (!PropertyPanelVisible)
{
return;
}
var parentPanel = this.PropertyPanel.ParentPanel;
if (parentPanel != null)
{
var childrens = parentPanel.Controls.OfType().ToList();
if (parentPanel.ActiveChild != PropertyPanel)
{
this.PropertyPanel.ParentPanel.ActiveChild = this.PropertyPanel;
}
}
}
private void PanelGraph_BeforeGridding(object sender, CancelEventArgs e)
{
if (mainView.ViewControl.Geo.GetElementCount() > 0)
{
DialogResult result = MessageBox.Show(this, "该操作将覆盖当前图件,是否同意?"
, "确认覆盖", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
e.Cancel = (result != DialogResult.Yes);
}
else
{
e.Cancel = false;
}
}
private void PanelGraph_ImportFinished(object sender)
{
DrawerWaitProgress(this, e: new ProgressEventArgs("数据导入中...", 0, false));
}
private void PanelGraph_ImportStarted(object sender)
{
DrawerWaitProgress(this, e: new ProgressEventArgs("数据导入中...", 0, true));
}
private void PanelGraph_GriddingStarted(object sender, string filePath)
{
DrawerWaitProgress(this, e: new ProgressEventArgs("正在成图...", 0, true));
}
private void PanelGraph_GriddingFinished(object sender, string filePath)
{
DrawerWaitProgress(this, e: new ProgressEventArgs("正在成图...", 0, false));
mainView.ClearAll();
mainView.ViewControl.Geo.FileMerge(filePath);
mainView.LoadLayerTree();
mainView.ToolViewAll();
mainView.ViewControl.Redraw();
TryDeleteFile(filePath);
}
private void TryDeleteFile(string filePath)
{
try
{
File.Delete(filePath);
}
catch (IOException ex)
{
Debug.WriteLine($"删除 {filePath} 失败: {ex.Message}");
}
}
///
/// 2维图层树节点的可视状态切换
///
/// 三维提交到二维更新图片后,再返回三维时。使用此附加层数据
/// status
private void LayerControl_2dNodeViewToggleEvent(string additionLayers, LayerStatus status)
{
var syncNodes = string.Empty;
var checkNodes = TreeViewHelper.TraverseTreeView(LayerControl.TreeControl)
.Where(n => n.Checked);
if (checkNodes.Count() == 0)
{
// 没有选中的,获取所有可见的
var shownNodes = TreeViewHelper.TraverseTreeView(LayerControl.TreeControl)
.Where(n => LayerControl.GetNodeStatus(n) != LayerStatus.NOT_VIEW_NOT_EDIT);
syncNodes = string.Join(";", shownNodes.Select(n => $@"二维图层\{n.FullPath}").ToList());
}
else
{
syncNodes = string.Join(";", checkNodes.Select(n => $@"二维图层\{n.FullPath}").ToList());
}
if (!string.IsNullOrEmpty(additionLayers))
{
// 三维回传图片时,使用附加层数据
syncNodes = additionLayers;
}
if (VtkEdit != null && !VtkEdit.IsDisposed)
{
splashScreenManager1.ShowWaitForm();
splashScreenManager1.SetWaitFormDescription("正在更新三维图层");
Drawer drawer = this.DrawerView.ViewControl.Drawer;
IntPtr pMeshData = VtkEdit.GetMainMeshData();
double rx0 = VtkEdit.GetMainMeshInfo(pMeshData, 0);
double rx1 = VtkEdit.GetMainMeshInfo(pMeshData, 1);
double ry0 = VtkEdit.GetMainMeshInfo(pMeshData, 2);
double ry1 = VtkEdit.GetMainMeshInfo(pMeshData, 3);
//IntPtr hBitmap = drawer.Geo.Draw2ImageMemory(rx0, ry1, rx1, ry0);
IntPtr hBitmap = drawer.Geo.GetKevMeshImage(pMeshData);
VtkEdit.UpdateMeshBitmap(hBitmap, rx0, ry1, Math.Abs(rx0 - rx1), Math.Abs(ry0 - ry1));
drawer.Geo.DeleteImage(hBitmap);
VtkEdit.LayerSelectedStatusNotify3d?.Invoke(syncNodes, status);
splashScreenManager1.CloseWaitForm();
}
}
///
/// 刷新VTK图像贴图.
///
public void RefreshVtkImage()
{
if (VtkEdit != null && !VtkEdit.IsDisposed)
{
//splashScreenManager1.ShowWaitForm();
//splashScreenManager1.SetWaitFormDescription("正在更新3维图层");
Drawer drawer = this.DrawerView.ViewControl.Drawer;
IntPtr pMeshData = VtkEdit.GetMainMeshData();
double rx0 = VtkEdit.GetMainMeshInfo(pMeshData, 0);
double rx1 = VtkEdit.GetMainMeshInfo(pMeshData, 1);
double ry0 = VtkEdit.GetMainMeshInfo(pMeshData, 2);
double ry1 = VtkEdit.GetMainMeshInfo(pMeshData, 3);
//IntPtr hBitmap = drawer.Geo.Draw2ImageMemory(rx0, ry1, rx1, ry0);
IntPtr hBitmap = drawer.Geo.GetKevMeshImage(pMeshData);
VtkEdit.UpdateMeshBitmap(hBitmap, rx0, ry1, Math.Abs(rx0 - rx1), Math.Abs(ry0 - ry1));
drawer.Geo.DeleteImage(hBitmap);
//splashScreenManager1.CloseWaitForm();
}
}
#region 工具条相关处理
private Bar barDrawerBase;
private Bar barCurveProcess;
private Bar barBatchOperate;
private BarDockControl barDockControlLeft;
private BarDockControl barDockControlTop;
private BarDockControl barDockControlBottom;
private BarDockControl barDockControlRight;
// 停靠的工具条按钮
private List drawerBarItems;
private List curveProcessItems;
private List batchOperateItems;
private List mainBarItems;
///
/// 加载绘图工具条.
///
protected void LoadDrawerToolbar()
{
bool bShowToolbar = true;
this.bmDrawer.Items.AddRange(drawerBarItems.ToArray());
foreach (BarItem item in drawerBarItems)
{
this.barDrawerBase.LinksPersistInfo.Add(new DevExpress.XtraBars.LinkPersistInfo(item));
}
this.bmDrawer.Items.AddRange(curveProcessItems.ToArray());
foreach (BarItem item in curveProcessItems)
{
this.barCurveProcess.LinksPersistInfo.Add(new DevExpress.XtraBars.LinkPersistInfo(item));
}
this.bmDrawer.Items.AddRange(this.batchOperateItems.ToArray());
foreach (BarItem item in batchOperateItems)
{
this.barBatchOperate.LinksPersistInfo.Add(new DevExpress.XtraBars.LinkPersistInfo(item));
}
this.rpgDrawElement.Visible = !bShowToolbar;
this.rpgCurveOperate.Visible = !bShowToolbar;
//屏蔽工具条上的断层简化按钮
this.bbtnFaultSimplyfy.Enabled = false;
this.bbtnFaultSimplyfy.Visibility = DevExpress.XtraBars.BarItemVisibility.OnlyInCustomizing;
//// 自动保存工具条布局
//string regKey = "Kev\\XtraBars\\Layouts\\MainLayout";
////this.bmDrawer.RestoreLayoutFromRegistry(regKey);
//this.bmDrawer.RegistryPath = regKey;
//this.bmDrawer.AutoSaveInRegistry = true;
}
///
/// 初始化绘图工具条
///
private void initializeDrawerBar()
{
mainBarItems = new List();
mainBarItems.AddRange(new BarButtonItem[] {
this.btnCutInMain,
this.btnCutInRectangle,
this.btnCutInPickup,
this.btnCutOutMain,
this.btnCutOutRectangle,
this.btnCutOutPick,
this.btnElementPropertyMain,
this.btnClearPointProperty,
this.btnSetPointPropert,
this.btnClearCurveProperty,
this.btnSetCurveProperty,
this.btnCurveNameMain,
this.btnCurveNameSet,
this.btnContourNameSet,
this.btnCurveName2Z,
this.btnCurveNameFromZ,
this.btnCurveNameFindEmpty,
});
drawerBarItems = new List();
drawerBarItems.AddRange(new DevExpress.XtraBars.BarButtonItem[]
{
this.btnToolDefault,
this.btnToolSelect,
this.btnDrawCurve,
this.btnDrawPoint,
this.btnDrawText,
this.btiWellGroup,
this.btnDrawShape,
this.btnDrawNetFrame,
this.btnDrawNetGrid,
this.btnDrawProportion,
this.btnDrawCrossPointMain,
});
Guid guidDraw = new System.Guid("7dc7b1fa-7f07-4267-8679-9cee0b219d7a");
for (int i = 0; i < drawerBarItems.Count; i++)
{
drawerBarItems[i].CategoryGuid = guidDraw;
}
curveProcessItems = new List();
curveProcessItems.AddRange(new DevExpress.XtraBars.BarButtonItem[]
{
this.btnCurveJoin,
this.btnCurveClose,
this.btnCurveReverse,
this.btnCurveTrim,
this.btnCurveBreakMain,
this.btnCurveExtend,
this.btnCurveNameMove,
this.btnCurveProcessMain,
this.btnCurveFill,
this.MergeCurve,
this.bbtnJoinCurves,
this.bbtnFaultBroaden,
this.bbtnFaultSimplyfy,
});
Guid guidProcess = new System.Guid("523e767c-6e94-4304-87af-07516dfbdf4b");
for (int i = 0; i < drawerBarItems.Count; i++)
{
curveProcessItems[i].CategoryGuid = guidProcess;
}
// ???需要单独设置一次,原因未知。
this.bbtnFaultBroaden.CategoryGuid = guidProcess;
this.batchOperateItems = new List();
batchOperateItems.AddRange(new DevExpress.XtraBars.BarItem[]
{
this.barButtonGroup6,
this.barButtonGroup1,
//this.btnOrderTop,
//this.btnOrderBottom,
//this.btnOrderUp,
//this.btnOrderDown,
//this.btnAlignMain,
//this.btnPropertyZoomIn,
//this.btnPropertyZoomOut,
//this.SimplifyButton,
});
Guid guidOperate = new System.Guid("FF16E14D-D23D-49F7-9C40-454DBC9288F7");
for (int i = 0; i < batchOperateItems.Count; i++)
{
batchOperateItems[i].CategoryGuid = guidOperate;
}
int nItemIndent = 2;
this.barDockControlTop = new DevExpress.XtraBars.BarDockControl();
this.barDockControlBottom = new DevExpress.XtraBars.BarDockControl();
this.barDockControlLeft = new DevExpress.XtraBars.BarDockControl();
this.barDockControlRight = new DevExpress.XtraBars.BarDockControl();
this.barDrawerBase = new DevExpress.XtraBars.Bar();
this.barDrawerBase.BarItemVertIndent = nItemIndent;
this.barDrawerBase.BarItemHorzIndent = nItemIndent;
this.barCurveProcess = new DevExpress.XtraBars.Bar();
this.barCurveProcess.BarItemVertIndent = nItemIndent;
this.barCurveProcess.BarItemHorzIndent = nItemIndent;
this.barBatchOperate = new DevExpress.XtraBars.Bar();
this.barBatchOperate.BarItemVertIndent = nItemIndent;
this.barBatchOperate.BarItemHorzIndent = nItemIndent;
this.bmDrawer = new DevExpress.XtraBars.BarManager(this.components);
this.dockManager1.MenuManager = this.bmDrawer;
((System.ComponentModel.ISupportInitialize)(this.bmDrawer)).BeginInit();
this.bmDrawer.Bars.AddRange(new DevExpress.XtraBars.Bar[]
{
this.barDrawerBase,
this.barCurveProcess,
this.barBatchOperate,
});
this.bmDrawer.Categories.AddRange(new DevExpress.XtraBars.BarManagerCategory[]
{
new DevExpress.XtraBars.BarManagerCategory("绘图", new System.Guid("7dc7b1fa-7f07-4267-8679-9cee0b219d7a")),
new DevExpress.XtraBars.BarManagerCategory("曲线处理", new System.Guid("523e767c-6e94-4304-87af-07516dfbdf4b")),
new DevExpress.XtraBars.BarManagerCategory("批量处理", new System.Guid("FF16E14D-D23D-49F7-9C40-454DBC9288F7")),
});
this.bmDrawer.DockControls.Add(this.barDockControlTop);
this.bmDrawer.DockControls.Add(this.barDockControlBottom);
this.bmDrawer.DockControls.Add(this.barDockControlLeft);
this.bmDrawer.DockControls.Add(this.barDockControlRight);
this.bmDrawer.DockManager = this.dockManager1;
this.bmDrawer.Form = this;
//this.btnToolDefault.CategoryGuid = new System.Guid("7dc7b1fa-7f07-4267-8679-9cee0b219d7a");
// barDrawerBase
this.barDrawerBase.BarName = "DrawerBase";
this.barDrawerBase.DockCol = 0;
this.barDrawerBase.DockRow = 0;
this.barDrawerBase.DockStyle = DevExpress.XtraBars.BarDockStyle.Left;
this.barDrawerBase.FloatLocation = new System.Drawing.Point(91, 569);
this.barDrawerBase.Text = "绘图";
this.barCurveProcess.BarName = "CurveProcess";
this.barCurveProcess.DockCol = 0;
this.barCurveProcess.DockRow = 0;
this.barCurveProcess.DockStyle = DevExpress.XtraBars.BarDockStyle.Left;
this.barCurveProcess.Text = "曲线处理";
this.barBatchOperate.BarName = "BatchOperate";
this.barBatchOperate.DockCol = 0;
this.barBatchOperate.DockRow = 0;
this.barBatchOperate.DockStyle = DevExpress.XtraBars.BarDockStyle.Left;
this.barBatchOperate.Text = "批量处理";
// barDockControlTop
this.barDockControlTop.CausesValidation = false;
this.barDockControlTop.Dock = System.Windows.Forms.DockStyle.Top;
this.barDockControlTop.Location = new System.Drawing.Point(0, 0);
this.barDockControlTop.Manager = this.bmDrawer;
this.barDockControlTop.Size = new System.Drawing.Size(3656, 0);
// barDockControlBottom
this.barDockControlBottom.CausesValidation = false;
this.barDockControlBottom.Dock = System.Windows.Forms.DockStyle.Bottom;
this.barDockControlBottom.Location = new System.Drawing.Point(0, 1085);
this.barDockControlBottom.Manager = this.bmDrawer;
this.barDockControlBottom.Size = new System.Drawing.Size(3656, 0);
// barDockControlLeft
this.barDockControlLeft.CausesValidation = false;
this.barDockControlLeft.Dock = System.Windows.Forms.DockStyle.Left;
this.barDockControlLeft.Location = new System.Drawing.Point(0, 0);
this.barDockControlLeft.Manager = this.bmDrawer;
this.barDockControlLeft.Size = new System.Drawing.Size(34, 1085);
// barDockControlRight
this.barDockControlRight.CausesValidation = false;
this.barDockControlRight.Dock = System.Windows.Forms.DockStyle.Right;
this.barDockControlRight.Location = new System.Drawing.Point(3656, 0);
this.barDockControlRight.Manager = this.bmDrawer;
this.barDockControlRight.Size = new System.Drawing.Size(0, 1085);
this.Controls.Add(this.barDockControlLeft);
this.Controls.Add(this.barDockControlRight);
this.Controls.Add(this.barDockControlBottom);
this.Controls.Add(this.barDockControlTop);
((System.ComponentModel.ISupportInitialize)(this.bmDrawer)).EndInit();
}
///
/// 设置当前按钮.
///
/// 操作类型.
private void OnCommandStart(DrawToolType toolType)
{
return;
//bool bChecked = true;
//mainView.SetViewOperation(ViewOperationKind.Invalid);
//switch (toolType)
//{
// //case DrawToolType.ViewPan:
// // tsbPan.Checked = bChecked;
// // break;
// case DrawToolType.ViewWindow:
// btnZoomWindow.Down = bChecked;
// break;
// case DrawToolType.Default:
// btnToolDefault.Down = bChecked;
// break;
// case DrawToolType.Select:
// btnToolSelect.Down = bChecked;
// break;
// case DrawToolType.Point:
// btnDrawPoint.Down = bChecked;
// break;
// case DrawToolType.Curve:
// btnDrawCurve.Down = bChecked;
// break;
// case DrawToolType.Proportion:
// btnDrawProportion.Down = bChecked;
// break;
// case DrawToolType.RectangularCSGrid:
// btnDrawNetFrame.Down = bChecked;
// break;
// case DrawToolType.RectangularNetGrid:
// btnDrawNetGrid.Down = bChecked;
// break;
// case DrawToolType.Rectangle:
// btnDrawRectangle.Down = bChecked;
// break;
// case DrawToolType.Ellipse:
// btnDrawEllipse.Down = bChecked;
// break;
// case DrawToolType.Arc:
// //sbtnEllipse.Checked = btnArc.Checked = bChecked;
// break;
// case DrawToolType.Chord:
// //sbtnEllipse.Checked = btnChord.Checked = bChecked;
// break;
// case DrawToolType.Pie:
// //sbtnEllipse.Checked = btnPie.Checked = bChecked;
// break;
// case DrawToolType.Equilateral:
// //sbtnEllipse.Checked = btnEquilateral.Checked = bChecked;
// break;
// case DrawToolType.Text:
// btnDrawText.Down = bChecked;
// break;
// case DrawToolType.BreakDirect:
// btnCurveCut.Down = bChecked;
// break;
// case DrawToolType.Break:
// btnCurveBreak.Down = bChecked;
// break;
// case DrawToolType.ConnectCurveFilling:
// btnIntersectRegionFill.Down = bChecked;
// break;
// case DrawToolType.SolidLink:
// btnLinkRegionFill.Down = bChecked;
// break;
// case DrawToolType.SolidAuto:
// btnAutoRegionFill.Down = bChecked;
// break;
// case DrawToolType.Delete: //?是不是立刻就执行完的命令
// //deleteNormalButton.Checked = bChecked;
// break;
// case DrawToolType.DeleteIn:
// //deleteInButton.Checked = bChecked;
// break;
// case DrawToolType.DeleteOut:
// //deleteOutButton.Checked = bChecked;
// break;
// case DrawToolType.DeleteCondition:
// //conditionButton.Checked = bChecked;
// break;
// case DrawToolType.TrimCurve:
// btnCurveTrim.Down = bChecked;
// break;
// case DrawToolType.CloseCurve:
// btnCurveClose.Down = bChecked;
// break;
// case DrawToolType.MoveCurveName:
// btnCurveNameMove.Down = bChecked;
// break;
// case DrawToolType.LinkCurve:
// btnCurveJoin.Down = bChecked;
// break;
// case DrawToolType.ReverseCurve:
// btnCurveReverse.Down = bChecked;
// break;
// case DrawToolType.NameToZ:
// //nameToZButton.Checked = bChecked;
// break;
// case DrawToolType.RangeToImage:
// //// tsbCopyImageAll.Checked = bChecked;
// break;
// case DrawToolType.WindowToImage:
// //// tsbCopyImageWindow.Checked = bChecked;
// break;
// case DrawToolType.CrossPoint:
// //crossPointButton.Checked = bChecked;
// break;
// case DrawToolType.PointPropertyClear:
// case DrawToolType.PointPropertySet:
// case DrawToolType.CurvePropertySet:
// case DrawToolType.CurvePropertyClear:
// btnElementPropertyMain.Down = bChecked;
// break;
// case DrawToolType.CurveZFromSurface:
// break;
// case DrawToolType.CurveBroaden:
// bbtnFaultBroaden.Down = bChecked;
// break;
// default:
// break;
//}
}
///
/// The OnCommandFinish.
///
/// The toolType.
private void OnCommandFinish(DrawToolType toolType)
{
Trace.WriteLine($"{toolType}");
if (toolType == DrawToolType.Default || toolType == DrawToolType.Select)
{
return;
}
else
{
if (mainView.ActiveTool == DrawToolType.Default)
{
this.btnToolDefault.Down = true;
UpdateBarItemsStatus(this.btnToolDefault, null);
}
else if (this.mainView.ActiveTool == DrawToolType.Select)
{
this.btnToolSelect.Down = true;
UpdateBarItemsStatus(this.btnToolSelect, null);
}
}
}
///
/// 修改工具条按钮状态.
///
/// 当前按钮.
/// 当前按钮的执行事件.
private void UpdateBarItemsStatus(BarButtonItem specialButton, Action fun)
{
void setButtonStatus(BarButtonItem buttonItem)
{
bool isDown = false;
if (buttonItem == specialButton)
{
return;
}
else
{
if (buttonItem.DropDownControl != null)
{
bool bIsParentPpm = false;
PopupMenu ppm = buttonItem.DropDownControl as PopupMenu;
for (int j = 0; j < ppm.ItemLinks.Count; j++)
{
BarButtonItem btnPopupItem = (BarButtonItem)ppm.ItemLinks[j].Item;
if (btnPopupItem != specialButton)
{
if (btnPopupItem.Down != isDown)
{
btnPopupItem.Down = isDown;
}
}
else
{
bIsParentPpm = true;
}
}
if (bIsParentPpm == true)
{
if (buttonItem.Down != specialButton.Down)
{
buttonItem.Down = specialButton.Down;
}
}
else
{
if (buttonItem.Down != isDown)
{
buttonItem.Down = isDown;
}
}
}
else
{
if (buttonItem.Down != isDown)
{
buttonItem.Down = isDown;
}
}
}
}
void setButtonsStatus()
{
int nDrawerButtonsCount = this.drawerBarItems.Count;
for (int i = 0; i < nDrawerButtonsCount; i++)
{
setButtonStatus(this.drawerBarItems[i]);
}
int nCurveButtonsCount = this.curveProcessItems.Count;
for (int i = 0; i < nCurveButtonsCount; i++)
{
setButtonStatus(this.curveProcessItems[i]);
}
int nMainButtonsCount = this.mainBarItems.Count;
for (int i = 0; i < nMainButtonsCount; i++)
{
setButtonStatus(this.mainBarItems[i]);
}
}
if (specialButton.Down == true)
{
mainView.SetViewOperation(ViewOperationKind.Invalid);
// 通过点击,使按钮按下时,将其它按钮设置为非按下状态
setButtonsStatus();
// 执行按钮事件
fun?.Invoke();
}
else
{
setButtonsStatus();
// 通过点击,使按钮抬起时,恢复默认鼠标操作
mainView.RestoreToolDefault();
if (mainView.ActiveTool == DrawToolType.Default)
{
this.btnToolDefault.Down = true;
}
else if (this.mainView.ActiveTool == DrawToolType.Select)
{
this.btnToolSelect.Down = true;
}
else if (this.mainView.ActiveTool == DrawToolType.WellGroup)
{
this.btnToolSelect.Down = true;
}
}
}
///
/// 设置下拉菜单的状态
///
/// 下拉按钮
private void setDropDownButtonStatus(BarButtonItem button)
{
PopupMenu ppm = button.DropDownControl as PopupMenu;
bool bFindDown = false;
foreach (BarItemLink item in ppm.ItemLinks)
{
BarButtonItem buttonItem = item.Item as BarButtonItem;
if (buttonItem.Down == true)
{
bFindDown = true;
break;
}
}
if (button.Down != bFindDown)
{
button.Down = bFindDown;
}
}
#endregion 工具条相关处理
///
/// 保存界面布局信息到图件
///
public void SaveLayout()
{
using (MemoryStream ms = new MemoryStream())
{
bmDrawer.SaveLayoutToStream(ms);
ms.Seek(0, SeekOrigin.Begin);
XDocument doc = XDocument.Load(ms);
var toolBarElement = doc.Descendants("property")
.FirstOrDefault(x => (string)x.Attribute("value") == "BarManager");
if (toolBarElement != null)
{
toolBarElement.Save(layoutFilePath);
}
}
//bmDrawer.SaveLayoutToXml(Path.Combine(Application.StartupPath, "kevTestLayout.xml"));
}
///
/// 加载界面布局状态
///
public void LoadLayout()
{
if (File.Exists(layoutFilePath))
{
//bmDrawer.RestoreLayoutFromXml(layoutFilePath);
var doc = XDocument.Load(layoutFilePath);
var bars = doc.Descendants("property").Where(x => (string)x.Attribute("name") == "Bars").FirstOrDefault();
foreach (var barElement in bars.Elements())
{
var eleBarName = barElement.Elements().Where(x => (string)x.Attribute("name") == "BarName").FirstOrDefault();
string barName = eleBarName?.Value;
var eleDockStyle = barElement.Elements().Where(x => (string)x.Attribute("name") == "DockStyle").FirstOrDefault();
string bockStyle = eleDockStyle?.Value;
var eleDockRow = barElement.Elements().Where(x => (string)x.Attribute("name") == "DockRow").FirstOrDefault();
string dockRow = eleDockRow?.Value;
var eleDockCol = barElement.Elements().Where(x => (string)x.Attribute("name") == "DockCol").FirstOrDefault();
string dockCol = eleDockCol?.Value;
var eleOffset = barElement.Elements().Where(x => (string)x.Attribute("name") == "Offset").FirstOrDefault();
string offset = eleDockCol?.Value;
var bar = this.bmDrawer.Bars.FirstOrDefault(b => b.BarName == barName);
if (bar != null && bockStyle != null)
{
//bar.OptionsBar.MinHeight = 0;
//bar.OptionsBar.AutoPopupMode = BarAutoPopupMode.Default;
//bar.OptionsBar.DrawBorder = true;
//bar.OptionsBar.AllowCollapse = false;
//bar.OptionsBar.BarState = BarState.Expanded;
//bar.OptionsBar.DrawDragBorder = true;
//bar.OptionsBar.DrawSizeGrip = false;
//bar.OptionsBar.Hidden = false;
//bar.OptionsBar.MultiLine = false;
//bar.OptionsBar.RotateWhenVertical = true;
//bar.OptionsBar.UseWholeRow = false;
//bar.FloatSize = new System.Drawing.Size(0, 0);
//bar.FloatLocation = new System.Drawing.Point(0, 0);
bar.DockStyle = (BarDockStyle)Enum.Parse(typeof(BarDockStyle), bockStyle);
bar.DockRow = int.Parse(dockRow);
bar.DockCol = int.Parse(dockCol);
bar.Offset = int.Parse(offset);
}
}
Console.WriteLine($"Toolbar docking info loaded from {layoutFilePath}");
}
else
{
Console.WriteLine("Layout file not found.");
}
using (MemoryStream ms = new MemoryStream())
{
bmDrawer.SaveLayoutToStream(ms);
}
foreach (var bar in this.bmDrawer.Bars.ToArray())
{
bar.Visible = !bar.Visible;
bar.Visible = !bar.Visible;
}
}
///
/// 将 MainView 恢复成工具栏上设定的状态
///
public void RestoreState()
{
// 恢复抗锯齿状态,保持和重新加载文件前一致
mainView.EnableMeshPack = bbtnMeshPack.Down;
// 这个放大状态难恢复,取消
mainView.SetViewOperation(ViewOperationKind.Invalid);
}
private void DrawerWaitProgress(object sender, ProgressEventArgs e)
{
//BeginInvoke(new Action(() =>
//{
if (e.ProgerssVisible == true)
{
if (splashScreenManager1 == null)
{
splashScreenManager1 = new DevExpress.XtraSplashScreen.SplashScreenManager();
}
bool bVisible = splashScreenManager1.IsSplashFormVisible;
if (bVisible == false)
{
splashScreenManager1.ShowWaitForm();
splashScreenManager1.SetWaitFormDescription(e.EventInfo);
}
else
{
splashScreenManager1.SetWaitFormDescription(e.EventInfo);
}
}
else
{
if (splashScreenManager1 != null && splashScreenManager1.IsSplashFormVisible == true)
{
splashScreenManager1.CloseWaitForm();
}
}
//}));
}
///
/// 加载自定义菜单
///
private void LoadCustomMenu()
{
CustomMenu customMenu = new CustomMenu();
customMenu.LoadItems();
if (customMenu.MenuItems.Count > 0)
{
this.ppmCustom.ClearLinks();
this.rpgCustom.Visible = true;
int nIndex = 109;
foreach (CustomMenuItem item in customMenu.MenuItems)
{
DevExpress.XtraBars.BarButtonItem buttonItem = new BarButtonItem();
this.ribbonMain.Items.Add(buttonItem);
buttonItem.Tag = item;
buttonItem.Id = nIndex++;
buttonItem.Caption = item.Caption;
//buttonItem.RibbonStyle = RibbonItemStyles.Default;
buttonItem.Name = buttonItem.Caption;
buttonItem.RibbonStyle = (RibbonItemStyles)item.ImageTextStyles;
buttonItem.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.bbtnCustom_ItemClick);
// 设置菜单图标
if (!string.IsNullOrEmpty(item.SvgImage))
{
string strImageFile = Path.Combine(Application.StartupPath, item.SvgImage);
if (File.Exists(strImageFile))
{
buttonItem.ImageOptions.SvgImage = SvgImage.FromFile(strImageFile);
}
if (item.IsPopupItem != true)
{
buttonItem.RibbonStyle = RibbonItemStyles.SmallWithoutText;
}
else
{
this.ppmCustom.DrawMenuSideStrip = DevExpress.Utils.DefaultBoolean.True;
}
}
if (item.IsPopupItem == true)
{
this.ppmCustom.ItemLinks.Add(buttonItem);
}
else
{
this.rpgCustom.ItemLinks.Add(buttonItem);
}
}
this.rpgCustom.Text = customMenu.GroupName;
}
else
{
this.rpgCustom.Visible = false;
}
}
private Process gisProcess = null;
///
/// 自定义菜单按钮事件
///
/// 事件按钮
/// 事件参数
private async void bbtnCustom_ItemClick(object sender, ItemClickEventArgs e)
{
CustomMenuItem item = e.Item.Tag as CustomMenuItem;
if (item == null) return;
if (item.Caption == "GIS导航")
{
bool gisIsRunning = gisProcess != null && !gisProcess.HasExited;
if (!gisIsRunning)
{
try
{
gisProcess = Process.Start(new ProcessStartInfo
{
FileName = item.ProgramFile,
UseShellExecute = true
});
if (gisProcess != null)
{
gisProcess.WaitForInputIdle();
}
await Task.Delay(1000);
}
catch (Exception ex)
{
MessageBox.Show("无法启动 GIS 程序: " + ex.Message);
return;
}
}
mainView.ViewControl?.Drawer.SendDataGIS();
return;
}
else if (item.Caption == "AI")
{
loadAIModule();
return;
}
try
{
Assembly assembly = Assembly.LoadFrom(item.ProgramFile);
Type loggerType = assembly.GetType(item.ClassName);
IDrawerInteract drawerInteract = (IDrawerInteract)Activator.CreateInstance(loggerType);
Form testMain = drawerInteract.UserForm;
drawerInteract.DataRequestEvent += (object senderT, DrawerInterface.RequestDataEventArgs ea) =>
{
StringBuilder strb = new StringBuilder();
// 获得选中的数据
if (ea.DataStatus == 0)
{
List elements = this.mainView?.GetSelectedElements();
if (elements != null)
{
string strLayer = string.Empty;
foreach (SigmaDrawerElement.DrawerElementProperty ele in elements)
{
if (ele.Layer != strLayer)
{
strb.AppendLine($"Layer M {ele.Layer}");
strLayer = ele.Layer;
}
// 如果是请求曲面上的点,从曲面上取出Z值
if (ea.DataType == (int)InterfaceDataType.PointOfSurface)
{
if (ele.Element.ElementType == DrawElementType.ELEMENT_POINT)
{
DrawerPoint pt = ele.Element as DrawerPoint;
double dZValue = double.NaN;
if (mainView.GetGridPointValue(pt.X, pt.Y, ref dZValue) == true)
{
pt.Z = dZValue;
}
}
}
strb.AppendLine(ele.Element.ToDfdString());
}
}
string strRespons = strb.ToString();
drawerInteract.RequestDataProcess(new DrawerInterface.ResponseDataEventArgs(strRespons));
}
//string strQuest = ea.DataInfo;
//MessageBox.Show(strQuest);
};
drawerInteract.DataResponseEvent += (object senderT, ResponseDataEventArgs ea) =>
{
string strData = ea.DataContent;
//MessageBox.Show(strData);
this.mainView?.AddBufferData(strData);
//MessageBox.Show("Finished");
mainView?.ToolRedraw();
mainView?.LoadLayerTree();
//Xy xyDfd = new Xy();
//xyDfd.DfdReadBuffer(strData);
//foreach (DrawerElementBase ele in xyDfd.Elements)
//{
// if (ele is DrawerPoint pt)
// {
// this.mainView?.AddDrawPoint(
// ele.LayerName,
// new SigmaDrawerElement.DrawerPoint(pt.Name, pt.X, pt.Y, pt.Z, pt.Angle));
// }
// else if (ele is DrawerLine line)
// {
// List lstData = new List();
// foreach (DrawerLineNode node in line.Nodes)
// {
// lstData.Add(new PointD(node.X, node.Y));
// }
// this.mainView?.AddDrawCurve(line.LayerName, line.Name, lstData);
// }
//}
//if (xyDfd.Elements.Count > 0)
//{
// mainView?.ToolRedraw();
// mainView?.LoadLayerTree();
//}
};
testMain.StartPosition = FormStartPosition.CenterParent;
testMain.Show(this);
}
catch
{
try
{
Process.Start(new ProcessStartInfo
{
FileName = item.ProgramFile,
UseShellExecute = true,
});
}
catch (Exception processEx)
{
MessageBox.Show(
$"无法启动程序: {processEx.Message}",
"错误",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
}
private void loadAIModule()
{
/*
if (this.chatForm == null)
{
this.chatForm = new ChatForm();
this.chatForm.FormClosed += (s, e) => this.chatForm = null;
}
*/
ShowAIWindow();
// this.chatForm.Show();
}
private MainWindow mainWindow;
private void ShowAIWindow()
{
var app = (App)Avalonia.Application.Current;
var vm = app.ServiceProvider.GetRequiredService();
// 创建您的 Avalonia 控件 (View)
if (this.mainWindow == null)
{
this.mainWindow = new MainWindow
{
DataContext = vm,
};
this.mainWindow.Closed += (s, e) => this.mainWindow = null;
this.mainWindow.Show();
}
else
{
if (this.mainWindow.WindowState == Avalonia.Controls.WindowState.Minimized)
{
this.mainWindow.WindowState = Avalonia.Controls.WindowState.Normal; // 如果最小化了,恢复它
}
this.mainWindow.Activate(); // 激活并带到前台
}
}
///
/// 弹出菜单
///
/// 事件按钮
/// 事件参数
private void rpgCustom_CaptionButtonClick(object sender, RibbonPageGroupEventArgs e)
{
this.ppmCustom.ShowPopup(this.ribbonMain.Manager, MousePosition);
}
///
/// The MainView_ShowStatisticResult.
///
/// The sender.
/// The e.
private void MainView_ShowStatisticResult(object sender, EventArgs e)
{
StatisticPanel.Visibility = DockVisibility.Visible;
ShowStatisticResult?.Invoke(this, e);
}
///
/// 图件是否有修改
///
/// 有修改/无
public bool IsModified()
{
return mainView != null && mainView.IsDocumentModified();
}
///
/// 窗体关闭事件.
///
/// 当前窗体.
/// 事件参数.
public void UCDrawEdit_FormClosing(object sender, FormClosingEventArgs e)
{
bool bModified = false;
if (mainView != null && mainView.IsDocumentModified())
{
bModified = true;
}
if (bModified)
{
switch (DevExpress.XtraEditors.XtraMessageBox.Show(
"是否将修改保存到文件?", "关闭",
MessageBoxButtons.YesNoCancel,
MessageBoxIcon.Question))
{
case DialogResult.Cancel:
e.Cancel = true;
break;
case DialogResult.Yes:
e.Cancel = !SaveFile();
break;
}
if (e.Cancel != true)
{
mainView.ToolDefault();
}
}
}
///
/// The UCDrawEdit_FormClosed.
///
/// The sender.
/// The e.
private void UCDrawEdit_FormClosed(object sender, FormClosedEventArgs e)
{
FileClosedEvent?.Invoke(this, e);
mainView.ViewerCommandStart -= OnCommandStart;
mainView.ViewerCommandFinish -= OnCommandFinish;
mainView.ShowStatisticResult -= MainView_ShowStatisticResult;
mainView = null;
}
///
/// The UCDrawEdit_Load.
///
/// The sender.
/// The e.
private void UCDrawEdit_Load(object sender, EventArgs e)
{
// 加载子窗体布局
LoadLayout();
//// 自动保存工具条布局
//string regKey = "Kev\\XtraBars\\Layouts\\" + this.Name + ".bmDrawer." + bmDrawer.LayoutVersion;
////this.bmDrawer.RestoreLayoutFromRegistry(regKey);
//this.bmDrawer.RegistryPath = regKey;
//this.bmDrawer.AutoSaveInRegistry = true;
// this.LayerPanel.Visibility = DockVisibility.Hidden;
// ppcEditorMeshPack.PopupControl.OwnerEdit.EditValue = "断层测试";
Application.Idle += Application_Idle;
}
///
/// The SetRibbonStatus.
///
/// The enable.
public void SetRibbonStatus(bool enable)
{
RibbonBarItems barItems = ribbonMain.Items;
foreach (var item in barItems)
{
((BarItem)item).Enabled = enable;
}
}
///
/// Defines the toolCurrent.
///
private DrawToolType toolCurrent = DrawToolType.Default;
///
/// The Application_Idle.
///
/// The sender.
/// The e.
private void Application_Idle(object sender, EventArgs e)
{
//DrawToolType tool = mainView.ActiveTool;
//// 打断、切断
//var breakTools = new[] { DrawToolType.BreakDirect, DrawToolType.Break };
//// 区域填充
//var fillTools = new[] { DrawToolType.ConnectCurveFilling, DrawToolType.SolidLink, DrawToolType.SolidAuto };
//// 外切
//var cutOutTools = new[] { DrawToolType.CutOutByRect, DrawToolType.CutOutByPickup };
//// 内切
//var cutInTools = new[] { DrawToolType.CutInByRect, DrawToolType.CutInByPickup };
//// 曲线名称
//var curveNameTools = new[] { DrawToolType.CurveNameSetting, DrawToolType.SetContourName, DrawToolType.NameToZ, DrawToolType.ZToName, DrawToolType.FindCurveOfEmptyName };
//// 形状
//var drawShapeTools = new[] { DrawToolType.Arc, DrawToolType.Chord, DrawToolType.Pie, DrawToolType.Equilateral, DrawToolType.Rectangle, DrawToolType.Ellipse };
//// 十字点
//var crossPointTools = new[] { DrawToolType.FractionPoint, DrawToolType.CrossPoint };
//// 曲线处理
//var curveProcessTools = new[] { DrawToolType.CurveDensityNode, DrawToolType.CurveRedundancy, DrawToolType.CurveSmooth, DrawToolType.ArcToCurve, DrawToolType.CurveZFromSurface };
//btnCurveBreakMain.Down = breakTools.Contains(tool);
//btnCurveFill.Down = fillTools.Contains(tool);
//btnCutOutMain.Down = cutOutTools.Contains(tool);
//btnCutInMain.Down = cutInTools.Contains(tool);
//btnCurveNameMain.Down = curveNameTools.Contains(tool);
//btnDrawShape.Down = drawShapeTools.Contains(tool);
//btnDrawCrossPointMain.Down = crossPointTools.Contains(tool);
//btnCurveProcessMain.Down = curveProcessTools.Contains(tool);
//toolCurrent = tool;
//// 移动状态按钮设置
//btnZoomPan.Down = (mainView.ViewStatus == ViewOperationKind.ViewPan);
//btnZoomWindow.Down = (mainView.ViewStatus == ViewOperationKind.ViewWindow);
//if (mainView.ViewStatus == ViewOperationKind.Invalid)
//{
// btnZoomPan.Down = false;
// btnZoomWindow.Down = false;
//}
}
///
/// 打开文件.
///
/// 文件路径.
/// Z值显示为块.
/// 是否成功.
public bool OpenFile(string fileFullName, bool setZColor = false)
{
if (setZColor == true)
{
mainView.ZColorWidth = ZColorWidth;
}
EnableMeshPack = DrawerGlobalConfig.Instance.MeshNode.AntiAliasingEnable;
if (mainView.OpenFile(fileFullName, setZColor) == false)
{
return false;
}
// initDrawerView(mainView);
bdtFaultLayer.EditValue = "断层";
InitDrawerView();
return true;
}
///
/// The CreateNewFile.
///
/// The fileName.
/// The .
public bool CreateNewFile(string fileName)
{
if (mainView.NewFile(fileName) == false)
{
return false;
}
InitDrawerView();
return true;
}
///
/// 保存文件.
///
/// 是否成功.
public bool SaveFile()
{
bool ret = false;
if (mainView.IsNewDocument)
{
ret = SaveAs();
return ret;
}
if (mainView.SaveFile())
{
Text = mainView.Text;
return true;
}
return false;
}
///
/// 根据名称选中图元,多个名称用逗号分隔
///
/// 名称数据
/// 选中的数量
public int SelectByNames(string nameData)
{
return mainView.SelectByNames(nameData);
}
///
/// 根据名称查找并激活图元
///
/// 图元名称
/// 全字匹配
/// 匹配大小写
/// 图元类型
/// 是否只查找可编辑图元
/// 查找结果
public int FindElementByName(string content, bool matchAll = false, bool matchCase = false, int elementType = 0, bool editableOnly = true)
{
return mainView.FindElementByName(content, matchAll, matchCase, elementType, editableOnly);
}
///
/// 另存为.
///
/// 是否成功.
public bool SaveAs()
{
if (mainView.SaveAs())
{
Text = mainView.Text;
NewFileSavedEvent?.Invoke(mainView.FileFullName);
return true;
}
return false;
}
///
/// 曲线名称主按钮.
///
/// .
/// 事件参数.
private void btnDropDown_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
this.setDropDownButtonStatus(e.Item as BarButtonItem);
}
///
/// 导出为图片.
///
/// 导出按钮.
/// 事件参数.
private void btnExportImg_ItemClick(object sender, ItemClickEventArgs e)
{
// mainView.ReloadFile();
mainView.Export2Image(string.Empty);
}
///
/// 分享文件.
///
/// .
/// 事件参数.
private void btnShareFile_ItemClick(object sender, ItemClickEventArgs e)
{
mainView.ShareFile();
}
private void OnKeyUp(object sender, PreviewKeyDownEventArgs e)
{
if (e.KeyCode == Keys.S && e.Modifiers == Keys.Control)
{
SaveFile();
}
}
///
/// The InitDrawerView.
///
public void InitDrawerView()
{
MainView viewer = mainView;
//viewer.ToolMainVisible = false;
//viewer.DrawerGotFocus += (object sender, EventArgs ea) =>
//{
// Trace.WriteLine("openFile:" + ea.ToString());
//};
//viewer.ShowStatisticResult += Viewer_ShowStatisticResult;
viewer.ZColorWidth = ZColorWidth;
// 设置文档标题栏
Text = viewer.Text;
viewer.FileModifyEvent += Viewer_FileModifyEvent;
//viewer.GetLengthAngleEvent += GetLengthAngle;
Controls.Add(viewer.ViewControl);
viewer.ViewControl.BringToFront();
viewer.ViewControl.Dock = DockStyle.Fill;
if (LayerPanel != null)
{
LayerPanel.Text = $"{viewer.CurrentLayer}";
}
viewer.LayerSelected += SetCurrentLayer;
viewer.ToolStatusChandedEvent += new ToolStatusChangedHandler((cmd, enable) =>
{
if (cmd.Equals("undo"))
{
btnUndo.Enabled = enable;
}
else if (cmd.Equals("redo"))
{
btnRedo.Enabled = enable;
}
else if (cmd.Equals("undoView"))
{
btnZoomBack.Enabled = enable;
}
});
if (StatusBarVisible == true)
{
viewer.MouseMoveXYEvent += new XyStatusEventHandler((info) =>
{
statusXY.Caption = info;
});
}
}
///
/// The Viewer_FileModifyEvent.
///
/// The sender.
/// The isModified.
private void Viewer_FileModifyEvent(object sender, bool isModified)
{
Text = mainView.Text;
FileModifiedEvent?.Invoke(sender, isModified);
}
///
/// The SetCurrentLayer.
///
/// The send.
/// The e.
private void SetCurrentLayer(object send, PropertyChangedEventArgs e)
{
if (LayerPanel != null)
{
LayerPanel.Text = $" {e.PropertyName}";
}
}
///
/// 放大.
///
/// 事件按钮.
/// 事件参数.
private void btnZoomIn_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView.ToolZoomIn();
}
///
/// 缩小.
///
/// .
/// 事件参数.
private void btnZoomOut_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView.ToolZoomOut();
}
///
/// 设置窗口浏览状态.
///
/// 事件按钮.
/// 事件参数.
private void btnZoomWindow_DownChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
if (btnZoomWindow.Down == true)
{
//mainView.ToolDefault();
mainView.SetViewOperation(ViewOperationKind.ViewWindow);
}
else
{
mainView.SetViewOperation(ViewOperationKind.Invalid);
}
}
///
/// 设置拖动浏览模式.
///
/// 事件按钮.
/// 事件参数.
private void btnZoomPan_DownChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
if (btnZoomPan.Down == true)
{
mainView.SetViewOperation(ViewOperationKind.ViewPan);
}
else
{
mainView.SetViewOperation(ViewOperationKind.Invalid);
}
}
///
/// 显示全图事件.
///
/// 事件按钮.
/// 事件参数.
private void btnZoomAll_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView.ToolViewAll();
}
///
/// 回退显示状态.
///
/// .
/// 事件参数.
private void btnZoomBack_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView.ToolZoomBack();
}
///
/// 图形刷新.
///
/// .
/// 事件参数.
private void btnRefresh_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView.ToolRedraw();
}
///
/// 显示十字辅助线.
///
/// .
/// 事件参数.
private void btnShowCross_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView.ToolCrossEnable(btnShowCross.Down);
}
///
/// 撤销操作.
///
/// .
/// 事件参数.
private void btnUndo_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView.ToolUndo();
}
///
/// 重做操作.
///
/// .
/// 事件参数.
private void btnRedo_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView.ToolRedo();
}
/////
///// 取消下拉主按钮状态
/////
//private void UncheckEditorMainDrop(Control exceptControl)
//{
// for (int i = 0; i < this.lstMutuallyButton.Count; i++)
// {
// if (exceptControl != null && lstMutuallyButton[i].Equals(exceptControl))
// {
// lstMutuallyButton[i].Down = false;
// }
// }
//}
///
/// 默认状态.
///
/// .
/// e
private void btnToolDefault_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
this.UpdateBarItemsStatus((BarButtonItem)e.Item, mainView.ToolDefault);
}
///
/// 元素选择状态.
///
/// .
/// 事件参数.
private void btnToolSelect_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
this.UpdateBarItemsStatus((BarButtonItem)e.Item, ()=>mainView.ToolSelect());
}
///
/// The btnToolSelect_DownChanged.
///
/// The sender.
/// The e.
private void btnToolSelect_DownChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
}
///
/// 绘制线.
///
/// .
/// 事件参数.
private void btnDrawCurve_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
this.UpdateBarItemsStatus((BarButtonItem)e.Item, mainView.ToolAddCurve);
}
///
/// 绘制点.
///
/// .
/// 事件参数.
private void btnDrawPoint_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
this.UpdateBarItemsStatus((BarButtonItem)e.Item, mainView.ToolAddPoint);
}
///
/// 绘制文字.
///
/// .
/// 事件参数.
private void btnDrawText_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
this.UpdateBarItemsStatus((BarButtonItem)e.Item, mainView.ToolText);
}
///
/// 绘制矩形.
///
/// .
/// 事件参数.
private void btnDrawRectangle_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
this.UpdateBarItemsStatus((BarButtonItem)e.Item, mainView.ToolRectangle);
}
///
/// 绘制椭圆.
///
/// .
/// 事件参数.
private void btnDrawEllipse_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
this.UpdateBarItemsStatus((BarButtonItem)e.Item, mainView.ToolEllipse);
}
///
/// 绘制坐标框.
///
/// .
/// 事件参数.
private void btnDrawNetFrame_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
this.UpdateBarItemsStatus((BarButtonItem)e.Item, mainView.ToolCSGrid);
}
///
/// 绘制经纬网
///
/// .
/// 事件参数.
private void btnDrawNetGrid_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
this.UpdateBarItemsStatus((BarButtonItem)e.Item, mainView.ToolNetGrid);
}
///
/// 绘制比例尺.
///
/// .
/// 事件参数.
private void btnDrawProportion_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
this.UpdateBarItemsStatus((BarButtonItem)e.Item, mainView.ToolAddProportion);
}
///
/// 曲线连接.
///
/// .
/// 事件参数.
private void btnCurveJoin_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
this.UpdateBarItemsStatus((BarButtonItem)e.Item, mainView.ToolJoinCurve);
}
///
/// 曲线打断.
///
/// .
/// 事件参数.
private void btnCurveBreak_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
this.UpdateBarItemsStatus((BarButtonItem)e.Item, mainView.ToolBreakCurve);
}
///
/// 曲线切割.
///
/// .
/// 事件参数.
private void btnCurveCut_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
this.UpdateBarItemsStatus((BarButtonItem)e.Item, mainView.ToolBreakDirect);
}
///
/// 曲线闭合.
///
/// .
/// 事件参数.
private void btnCurveClose_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
this.UpdateBarItemsStatus((BarButtonItem)e.Item, mainView.ToolCloseCurve);
}
///
/// 曲线充填.
///
/// .
/// 事件参数.
private void btnCurveFill_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
this.setDropDownButtonStatus(e.Item as BarButtonItem);
}
///
/// 曲线延伸.
///
/// .
/// 事件参数.
private void btnCurveExtend_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
this.UpdateBarItemsStatus((BarButtonItem)e.Item, mainView.ToolExtendCurve);
}
///
/// 裁切.
///
/// .
/// 事件参数.
private void btnCurveTrim_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
this.UpdateBarItemsStatus((BarButtonItem)e.Item, mainView.ToolTrimCurve);
}
///
/// 曲线反向.
///
/// .
/// 事件参数.
private void btnCurveReverse_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
this.UpdateBarItemsStatus((BarButtonItem)e.Item, mainView.ToolReverseCurve);
}
///
/// 曲线内部名称移动.
///
/// .
/// 事件参数.
private void btnCurveNameMove_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
this.UpdateBarItemsStatus((BarButtonItem)e.Item, mainView.ToolMoveCurveName);
}
///
/// 最上显示.
///
/// .
/// 事件参数.
private void btnOrderTop_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView.ToolOrderTop();
}
///
/// 最下显示.
///
/// .
/// 事件参数.
private void btnOrderBottom_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView.ToolOrderBottom();
}
///
/// 上移一层显示.
///
/// .
/// 事件参数.
private void btnOrderUp_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView.ToolOrderUp();
}
///
/// 下移一层显示.
///
/// .
/// 事件参数.
private void btnOrderDown_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView.ToolOrderDown();
}
///
/// 属性放大.
///
/// .
/// 事件参数.
private void btnPropertyZoomIn_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView.PropertyZoomIn();
}
///
/// 属性缩小.
///
/// .
/// 事件参数.
private void btnPropertyZoomOut_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView.PropertyZoomOut();
}
///
/// 个性主菜单点击事件
///
/// 事件按钮
/// 事件参数
private void btnElementPropertyMain_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
this.setDropDownButtonStatus(this.btnElementPropertyMain);
}
///
/// 粘贴.
///
/// .
/// 事件参数.
private void btnPaste_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView.ToolPaste();
}
///
/// 复制.
///
/// .
/// 事件参数.
private void btnCopy_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView.ToolCopy();
}
///
/// 剪切.
///
/// .
/// 事件参数.
private void btnCut_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView.ToolCut();
}
///
/// 删除.
///
/// 删除主按钮.
/// 事件参数.
private void btnDeleteMain_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
btnDelete.Down = btnDeleteMain.Down;
if (btnDeleteMain.Down)
{
mainView.ToolDeleteNormal();
}
else
{
mainView.RestoreToolDefault();
}
}
///
/// 删除.
///
/// .
/// 事件参数.
private void btnDelete_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
btnDeleteMain.Down = btnDelete.Down;
if (btnDelete.Down)
{
mainView.ToolDeleteNormal();
}
else
{
mainView.ToolRestore();
}
}
///
/// The btnDelete_DownChanged.
///
/// The sender.
/// The e.
private void btnDelete_DownChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
if (btnDelete.Down || btnDeleteOutRegion.Down || btnDeleteInRegion.Down)
{
btnDeleteMain.Down = true;
}
else
{
btnDeleteMain.Down = false;
}
}
///
/// 删除区域外图形.
///
/// .
/// 事件参数.
private void btnDeleteOutRegion_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
btnDeleteMain.Down = btnDeleteOutRegion.Down;
if (btnDeleteOutRegion.Down)
{
mainView.ToolDeleteOut();
}
else
{
mainView.ToolRestore();
}
}
///
/// The btnDeleteOutRegion_DownChanged.
///
/// The sender.
/// The e.
private void btnDeleteOutRegion_DownChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
if (btnDelete.Down || btnDeleteOutRegion.Down || btnDeleteInRegion.Down)
{
btnDeleteMain.Down = true;
}
else
{
btnDeleteMain.Down = false;
}
}
///
/// 删除区域内部.
///
/// .
/// 事件参数.
private void btnDeleteInRegion_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
btnDeleteMain.Down = btnDeleteInRegion.Down;
if (btnDeleteInRegion.Down)
{
mainView.ToolDeleteIn();
}
else
{
mainView.ToolRestore();
}
}
///
/// The btnDeleteInRegion_DownChanged.
///
/// The sender.
/// The e.
private void btnDeleteInRegion_DownChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
if (btnDelete.Down || btnDeleteOutRegion.Down || btnDeleteInRegion.Down)
{
btnDeleteMain.Down = true;
}
else
{
btnDeleteMain.Down = false;
}
}
///
/// 查找.
///
/// .
/// 事件参数.
private void btnSearchMain_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView.ToolFind(false);
}
///
/// 查找.
///
/// .
/// 事件参数.
private void btnFind_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView.ToolFind(false);
}
///
/// 替换.
///
/// .
/// 事件参数.
private void btnReplace_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView.ToolFind(true);
}
///
/// 筛选.
///
/// .
/// 事件参数.
private void btnFilter_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView.ToolFilter();
}
///
/// 全选.
///
/// .
/// 事件参数.
private void btnSelectAll_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView.ToolSelectAll();
}
///
/// 选择所有线.
///
/// .
/// 事件参数.
private void btnSelectAllCurve_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView.ToolSelectAllCurve();
}
///
/// 选择所有点.
///
/// .
/// 事件参数.
private void btnSelectAllPoint_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView.ToolSelectAllPoint();
}
///
/// 清除点个性.
///
/// .
/// 事件参数.
private void btnClearPointProperty_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
this.UpdateBarItemsStatus((BarButtonItem)e.Item, mainView.ToolClearPointProperty);
}
///
/// 设置点类个性.
///
/// .
/// 事件参数.
private void btnSetPointPropert_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
UpdateBarItemsStatus(btnSetPointPropert, mainView.ToolSetPointProperty);
}
///
/// 清除线类个性.
///
/// .
/// 事件参数.
private void btnClearCurveProperty_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
this.UpdateBarItemsStatus((BarButtonItem)e.Item, mainView.ToolClearCurveProperty);
}
///
/// 设置线个性.
///
/// .
/// 事件参数.
private void btnSetCurveProperty_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView.ToolSetCurveProperty();
}
///
/// 左对齐.
///
/// .
/// 事件参数.
private void btnAlignLeft_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView.ToolAlignLeft();
}
///
/// 右对齐.
///
/// .
/// 事件参数.
private void btnAlignRight_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView.ToolAlignRight();
}
///
/// 顶对齐.
///
/// .
/// 事件参数.
private void btnAlignTop_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView.ToolAlignTop();
}
///
/// 底对齐.
///
/// .
/// 事件参数.
private void btnAlignBottom_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView.ToolAlignBottom();
}
///
/// 垂直居中.
///
/// .
/// 事件参数.
private void btnAlignMiddle_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView.ToolAlignCenterV();
}
///
/// 水平居中.
///
/// .
/// 事件参数.
private void btnAlignCenter_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView.ToolAlignCenterH();
}
///
/// 水平镜像.
///
/// .
/// 事件参数.
private void btnMirrorH_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView.ToolMirrorH();
}
///
/// 垂直镜像.
///
/// .
/// 事件参数.
private void btnMirrorV_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView.ToolMirrorV();
}
///
/// 坐标运算.
///
/// .
/// 事件参数.
private void btnCoordinateCalculate_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView.ToolCoordinateChange();
}
///
/// 坐标交换.
///
/// .
/// 事件参数.
private void btnCoordinateExchange_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView.ToolCoordinateExchange();
}
///
/// 数据导入.
///
/// .
/// 事件参数.
private void btnImport_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView.ImportDataFile();
}
///
/// 数据导出.
///
/// .
/// 事件参数.
private void btnExport_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView.ExportDataFile();
}
///
/// 矩形区域截图.
///
/// .
/// 事件参数.
private void btnImageCutRectangle_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView.ToolImageCutRange();
}
///
/// 自定义截图
///
/// 按钮
/// 事件参数
private void btnImageCutEx_ItemClick(object sender, ItemClickEventArgs e)
{
mainView.ToolImageCutRangeEx();
}
///
/// 截图所有图元.
///
/// .
/// 事件参数.
private void btnImageCutAll_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView.ToolImageCutAll();
}
///
/// 截图窗口区域.
///
/// .
/// 事件参数.
private void btnImageCutWindow_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView.ToolImageCutWindow();
}
///
/// 生成文件保存路径.
///
/// .
/// 事件参数.
private string GetSaveFileName(string extName)
{
var sfd = new SaveFileDialog();
sfd.Filter = extName;
sfd.FileName = "新建文件";
sfd.AddExtension = true;
sfd.RestoreDirectory = true;
if (sfd.ShowDialog(this) != DialogResult.OK)
{
return string.Empty;
}
return sfd.FileName.ToString();
}
///
/// 保存为符号.
///
/// .
/// 事件参数.
private void btnTake2Symbol_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView.FileSaveToMark();
}
///
/// 保存为Xyz.
///
/// .
/// 事件参数.
private void btnTake2Xyz_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
string extName = "XYZ File (*.xyz)|*.xyz|All Files(*.*)|*.*||";
string filePath = GetSaveFileName(extName);
if (string.IsNullOrEmpty(filePath))
{
return;
}
mainView.FileSaveToXyz(filePath);
}
///
/// 保存曲线.
///
/// .
/// v.
private void btnTakeCurves_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
string extName = "KE Files (*.kev)|*.kev|All file(*.*)|*.*||";
string filePath = GetSaveFileName(extName);
if (string.IsNullOrEmpty(filePath))
{
return;
}
mainView.FileSaveCurve(filePath);
}
///
/// 保存显示的内容.
///
/// .
/// 事件参数.
private void btnTakeDisplay_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
string extName = "KE Files (*.kev)|*.kev|All file(*.*)|*.*||";
string filePath = GetSaveFileName(extName);
mainView.FileSaveView(filePath);
}
///
/// 保存充填的内容.
///
/// .
/// 事件参数.
private void btnTakeFilled_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
string extName = "KE Files (*.kev)|*.kev|All file(*.*)|*.*||";
string filePath = GetSaveFileName(extName);
if (!string.IsNullOrEmpty(filePath))
{
mainView.FileSaveSolid(filePath);
}
}
///
/// 保存点数据.
///
/// .
/// 事件参数.
private void btnTakePoints_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
string extName = "KE Files (*.kev)|*.kev|All file(*.*)|*.*||";
string filePath = GetSaveFileName(extName);
if (string.IsNullOrEmpty(filePath))
{
return;
}
mainView.FileSavePoint(filePath);
}
///
/// 保存净曲线.
///
/// .
/// 事件参数.
private void btnTakePurerCurves_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
string extName = "KE Files (*.kev)|*.kev|All file(*.*)|*.*||";
string filePath = GetSaveFileName(extName);
if (string.IsNullOrEmpty(filePath))
{
return;
}
mainView.FileSaveCleanCurve(filePath);
}
///
/// 保存选中的内容.
///
/// .
/// 事件参数.
private void btnTakeSelected_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
string extName = "KE Files (*.kev)|*.kev|All file(*.*)|*.*||";
string filePath = GetSaveFileName(extName);
mainView.FileSaveSelect(filePath);
}
///
/// 保存文字.
///
/// .
/// 事件参数.
private void btnTakeTexts_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
string extName = "KE Files (*.kev)|*.kev|All file(*.*)|*.*||";
string filePath = GetSaveFileName(extName);
if (string.IsNullOrEmpty(filePath))
{
return;
}
mainView.FileSaveText(filePath);
}
///
/// 合并文件.
///
/// .
/// 事件参数.
private void btnMergeFile_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
//var openFile = new OpenFileDialog();
//openFile.Title = "合并文件";
//openFile.Filter = "*.kev|*.kev|*.pcg|*.pcg|*.*|*.*";
//openFile.FilterIndex = 0;
//openFile.Multiselect = false;
//if (openFile.ShowDialog() == DialogResult.OK)
//{
// mainView.FileMerge(openFile.FileName);
// mainView.ToolRedraw();
//}
}
///
/// 平面图.
///
/// .
/// 事件参数.
private void bbtnPlaneFigure_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
var openFile = new OpenFileDialog();
openFile.Title = "合并文件";
openFile.Filter = "*.kev|*.kev|*.pcg|*.pcg|*.*|*.*";
openFile.FilterIndex = 0;
openFile.Multiselect = false;
if (openFile.ShowDialog() == DialogResult.OK)
{
mainView.FileMerge(openFile.FileName);
mainView.ToolRedraw();
}
}
///
/// 单井图.
///
/// .
/// 事件参数.
private void bbtnWellFigure_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
var openFile = new OpenFileDialog();
openFile.Title = "合并单井图文件";
openFile.Filter = "*.pcg|*.pcg";
openFile.FilterIndex = 0;
openFile.Multiselect = false;
if (openFile.ShowDialog() == DialogResult.OK)
{
mainView.WellPoleFileMerge(openFile.FileName);
mainView.ToolRedraw();
}
}
///
/// 剖面图.
///
/// .
/// 事件参数.
private void bbtnSectionFigure_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
var openFile = new OpenFileDialog();
openFile.Title = "合并剖面图文件";
openFile.Filter = "*.pcg|*.pcg";
openFile.FilterIndex = 0;
openFile.Multiselect = false;
if (openFile.ShowDialog() == DialogResult.OK)
{
mainView.MultiWellSectionFileMerge(openFile.FileName);
mainView.ToolRedraw();
}
}
///
/// 设置投影参数.
///
/// .
/// 事件参数.
private void btnProjection_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView.ToolSetProjection();
}
///
/// 转换投影.
///
/// .
/// 事件参数.
private void btnProjectionChange_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView.ToolProjectionChange();
}
///
/// 打印.
///
/// .
/// 事件参数.
private void btnPrint_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView.PrintDraw();
}
///
/// 保存.
///
/// .
/// 事件参数.
private void btnSaveMain_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
if (!SaveFile())
{
MessageBox.Show("保存文件失败");
}
}
///
/// 另存为.
///
/// .
/// 事件参数.
private void btnSaveAs_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
SaveAs();
}
///
/// 背景网格.
///
/// .
/// 事件参数.
private void btnBKGrid_DownChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView.DisplayBackgroundGrid(btnBKGrid.Down);
}
///
/// 设置背景网格尺寸.
///
/// .
/// 事件参数.
private void btnBkGridSize_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView.ToolSetBKGridSize();
}
///
/// 高亮提示.
///
/// .
/// 事件参数.
private void btnHighLight_DownChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView.ToolEnableHighLight(btnHighLight.Down);
}
///
/// 绘制弧.
///
/// .
/// 事件参数.
private void btnDrawArc_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
this.UpdateBarItemsStatus((BarButtonItem)e.Item, mainView.ToolAcr);
}
///
/// 画弓形.
///
/// .
/// 事件参数.
private void btnDrawChord_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
this.UpdateBarItemsStatus((BarButtonItem)e.Item, mainView.ToolChord);
}
///
/// 画扇形.
///
/// .
/// 事件参数.
private void btnDrawFan_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
this.UpdateBarItemsStatus((BarButtonItem)e.Item, mainView.ToolPie);
}
///
/// 画五边形.
///
/// .
/// 事件参数.
private void btnDrawPentagon_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
this.UpdateBarItemsStatus((BarButtonItem)e.Item, mainView.ToolEquilateral);
}
///
/// The btnDrawShape_DownChanged.
///
/// The sender.
/// The e.
private void btnDrawShape_DownChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
this.setDropDownButtonStatus(this.btnDrawShape);
}
///
/// 分数点.
///
/// .
/// 事件参数
private void btnDrawFractionPoint_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
this.UpdateBarItemsStatus((BarButtonItem)e.Item, mainView.ToolDrawFractionPoint);
}
///
/// 十字点.
///
/// .
/// 事件参数.
private void btnDrawCrossPoint_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
this.UpdateBarItemsStatus((BarButtonItem)e.Item, mainView.ToolAddCrossPoint);
}
///
/// 分数主菜单点击事件
///
/// 事件按钮
/// 事件参数
private void btnDrawCrossPointMain_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
this.setDropDownButtonStatus(btnDrawCrossPointMain);
}
///
/// 设置十字点主按钮的选中状态.
///
private void SetCrossPointMainStatus()
{
if (btnDrawCrossPoint.Down || btnDrawFractionPoint.Down)
{
btnDrawCrossPointMain.Down = true;
}
else
{
btnDrawCrossPointMain.Down = false;
}
}
///
/// 外切矩形式.
///
/// .
/// 事件参数.
private void btnCutOutRectangle_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
this.UpdateBarItemsStatus((BarButtonItem)e.Item, mainView.ToolCutOutByRect);
}
///
/// 外切拾取式.
///
/// .
/// 事件参数.
private void btnCutOutPick_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
this.UpdateBarItemsStatus((BarButtonItem)e.Item, mainView.ToolCutOutByPickup);
}
///
/// 外切主菜单.
///
/// .
/// 事件参数.
private void btnCutOutMain_DownChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
this.setDropDownButtonStatus(e.Item as BarButtonItem);
}
///
/// 内切拾取式.
///
/// .
/// 事件参数.
private void btnCutInPickup_DownChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
this.UpdateBarItemsStatus((BarButtonItem)e.Item, mainView.ToolCutInByPickup);
}
///
/// 内切矩形式.
///
/// .
/// 事件参数.
private void btnCutInRectangle_DownChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
this.UpdateBarItemsStatus((BarButtonItem)e.Item, mainView.ToolCutInByRect);
}
///
/// 内切主按钮.
///
/// .
/// 事件参数.
private void btnCutInMain_DownChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
this.setDropDownButtonStatus(e.Item as BarButtonItem);
}
/////
///// 曲线处理主参数.
/////
///// The source of the event.
///// The instance containing the event data.
//private void btnCurveProcessMain_DownChanged(object sender, ItemClickEventArgs e)
//{
// if (bbtnCurveSmooth.Down || bbtnShape2Curve.Down
// || bbtnSurfaceCurveZ.Down)
// {
// if (this.btnCurveNameMain.Down != true)
// {
// this.btnCurveNameMain.Down = true;
// }
// }
// else
// {
// if (this.btnCurveNameMain.Down != false)
// {
// this.btnCurveNameMain.Down = false;
// }
// }
//}
///
/// 曲线名称主按钮.
///
/// .
/// 事件参数.
private void btnCurveNameMain_DownChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
if (btnCurveNameSet.Down || btnCurveName2Z.Down ||
btnCurveNameFromZ.Down || btnCurveNameFindEmpty.Down
|| btnContourNameSet.Down)
{
btnCurveNameMain.Down = true;
}
else
{
btnCurveNameMain.Down = false;
}
}
///
/// 设置曲线名称.
///
/// .
/// 事件参数.
private void btnCurveNameSet_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
this.UpdateBarItemsStatus((BarButtonItem)e.Item, mainView.ToolCurveNameSet);
}
///
/// 等值线名称设置.
///
/// .
/// 事件参数.
private void btnContourNameSet_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
this.UpdateBarItemsStatus((BarButtonItem)e.Item, mainView.ToolSetContourName);
}
///
/// 复制名称到Z值.
///
/// The sender.
/// The e.
private void btnCurveName2Z_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
this.UpdateBarItemsStatus((BarButtonItem)e.Item, mainView.ToolCurveName2z);
}
///
/// 复制Z值到名称.
///
/// The sender.
/// The e.
private void btnCurveNameFromZ_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
this.UpdateBarItemsStatus((BarButtonItem)e.Item, mainView.ToolCurveZ2Name);
}
///
/// The btnCurveNameFindEmpty_DownChanged.
///
/// The sender.
/// The e.
private void btnCurveNameFindEmpty_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
this.UpdateBarItemsStatus((BarButtonItem)e.Item, mainView.ToolCurveFindEmptyName);
}
///
/// 网格生成等值线.
///
/// .
/// 事件参数.
private void btnGridGenerateContour_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView?.GridGeneraterContour();
}
///
/// 网格平滑.
///
/// .
/// 参数
private void btnGridSmooth_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView?.ToolGridSmooth();
}
///
/// 设置Z值.
///
/// .
/// e
private void btnGridSetZValue_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView?.ToolGridSetZValue();
}
///
/// 等值线生成网格.
///
/// .
/// 事件参数.
private void btnContourGenerateGrid_ItemClickAsync(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
//mainView?.ToolGridStatics();
//mainView?.CreateMeshByDataAsync();
this.setDropDownButtonStatus(this.btnContourGenerateGrid);
//ppmGenerateGrid.ShowPopup(Control.MousePosition);
}
///
/// 数据生成网格.
///
/// .
/// 事件参数.
private void bbtnDataGenerateGrid_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView?.CreateMeshByDataAsync();
}
///
/// 图片生成网格.
///
/// .
/// 事件参数.
private void bbtnImageGenerateGrid_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView?.CreateMeshByImageAsync();
}
///
/// 网格体积计算.
///
/// .
/// 事件参数.
private void btnGridVolume_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView?.ToolGridVolumeCalculate();
}
///
/// 是否消除网格锯齿.
///
/// .
/// 参数
private void ckbGridAnti_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView?.ToolGridEnablePack(bbtnMeshPack.Down);
}
///
/// 曲线延伸.
///
/// 延伸按钮.
/// 事件参数.
private void btnCurveExtendSetting_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView?.ToolCurveExtendSetting();
}
///
/// 四点校正.
///
/// 事件按钮.
/// 事件参数.
private void btnCoordinateAdjust4Point_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView?.ToolCalibration4();
}
///
/// 两点校正.
///
/// 事件按钮.
/// 事件参数.
private void btnCoordinateAdjust2Point_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView?.ToolCalibration2();
}
///
/// 重新处理网格锯齿.
///
/// .
/// 事件参数.
private void bbtnMeshPackForce_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView.ForceMeshPack = true;
bbtnMeshPack.Down = true;
mainView?.ToolGridEnablePack(bbtnMeshPack.Down);
mainView.ForceMeshPack = false;
}
///
/// 区域连通点击事件.
///
/// The sender.
/// The e.
private void bbtnPolygonConnect_ItemClick(object sender, ItemClickEventArgs e)
{
mainView?.ToolCurveConnect();
}
///
/// 曲线加密.
///
/// 事件按钮.
/// 事件参数.
private void bbtnCurveNodeInsert_ItemClick(object sender, ItemClickEventArgs e)
{
mainView?.ToolCurveDensity();
}
///
/// 由曲面设置曲线节点Z值.
///
/// The source of the event.
/// The instance containing the event data.
private void bbtnSurfaceCurveZ_DownChanged(object sender, ItemClickEventArgs e)
{
this.UpdateBarItemsStatus((BarButtonItem)e.Item, mainView.ToolCurveZFromSuface);
}
///
/// 取消去冗余.
///
/// 事件按钮.
/// 事件参数.
private void bbtnCurveNodeRedundant_ItemClick(object sender, ItemClickEventArgs e)
{
mainView?.ToolCurveRedundancy();
}
///
/// 曲线光滑.
///
/// 事件按钮.
/// 事件参数.
private void bbtnCurveSmooth_DownChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
this.UpdateBarItemsStatus((BarButtonItem)e.Item, mainView.ToolCurveSmooth);
}
///
/// 形状转曲线.
///
/// 事件按钮.
/// 事件参数.
private void bbtnShape2Curve_DownChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
this.UpdateBarItemsStatus((BarButtonItem)e.Item, mainView.ToolShape2Curve);
}
///
/// The ppcEditorMeshPack_Closed.
///
/// The sender.
/// The e.
private void ppcEditorMeshPack_Closed(object sender, DevExpress.XtraEditors.Controls.ClosedEventArgs e)
{
}
///
/// The ppcEditorMeshPack_QueryDisplayText.
///
/// The sender.
/// The e.
private void ppcEditorMeshPack_QueryDisplayText(object sender, DevExpress.XtraEditors.Controls.QueryDisplayTextEventArgs e)
{
}
///
/// The ppc3dLayerEdit_QueryDisplayText.
///
/// The sender.
/// The e.
private void ppc3dLayerEdit_QueryDisplayText(object sender, DevExpress.XtraEditors.Controls.QueryDisplayTextEventArgs e)
{
}
///
/// The ppcEditorMeshPack_QueryResultValue.
///
/// The sender.
/// The e.
private void ppcEditorMeshPack_QueryResultValue(object sender, DevExpress.XtraEditors.Controls.QueryResultValueEventArgs e)
{
if (e.Value == null || !e.Value.Equals(layerPopNode))
{
e.Value = layerPopNode;
}
}
private void ppc3dLayerEdit_QueryResultValue(object sender, DevExpress.XtraEditors.Controls.QueryResultValueEventArgs e)
{
if (e.Value == null || !e.Value.Equals(layerPopNode))
{
e.Value = layerPopNode;
}
}
///
/// 断层图层弹出.
///
/// 事件按钮.
/// 事件参数.
private void ppcEditorMeshPack_Popup(object sender, EventArgs e)
{
TreeNode tnRoot = LayerControl.GetLayerNodes();
trvLayer.CheckBoxes = (popupTreeType == "网格编辑控制点图层" || popupTreeType == "网格编辑断层图层" || popupTreeType == "网格编辑附加线图层" ||
popupTreeType == "沉积相井位图层" || popupTreeType == "沉积相附加线图层" ||
popupTreeType == "3维显示挖空图层" || popupTreeType == "3维显示边界范围" || popupTreeType == "3维显示井图层");
trvLayer.Nodes.Clear();
trvLayer.Nodes.Add(tnRoot);
trvLayer.Nodes[0].Expand();
var nodes = TreeViewHelper.TraverseTreeNode(trvLayer.Nodes[0]);
trvLayer.Nodes[0].Checked = false;
nodes.ForEach(n => n.Checked = false); // 取消选中
if (popupTreeType == "网格编辑控制点图层"
|| popupTreeType == "网格编辑断层图层"
|| popupTreeType == "网格编辑等值线图层"
|| popupTreeType == "网格编辑附加线图层"
|| popupTreeType == "沉积相井位图层"
|| popupTreeType == "沉积相附加线图层"
|| popupTreeType == "3维显示挖空图层"
|| popupTreeType == "3维显示边界范围"
|| popupTreeType == "3维显示井图层")
{
trvLayer.Nodes.Insert(0, "<无>");
}
var header = "图层";
var layerPopNodes = new List();
if (trvLayer.CheckBoxes)
{
layerPopNodes = layerPopNode.Split(';').Where(n => !string.IsNullOrEmpty(n)).ToList();
}
if (layerPopNodes.Count == 0)
{
layerPopNodes.Add(layerPopNode);
}
foreach (var currPopNode in layerPopNodes)
{
if (currPopNode == header)
{
continue;
}
string strCurrentNodePath = $"{header}\\{currPopNode}";
TreeNode tnFind = FindNodeByValue(tnRoot, strCurrentNodePath);
if (tnFind != null)
{
Expand2Node(tnFind);
if (trvLayer.CheckBoxes)
{
tnFind.Checked = true;
continue;
}
else
{
trvLayer.SelectedNode = tnFind;
break;
}
}
}
}
///
/// 获取指定value值的节点.
///
/// 指定节点.
/// value值.
/// 找到的树节点.
private TreeNode FindNodeByValue(TreeNode tnParent, string strValues)
{
if (tnParent == null)
{
return null;
}
if (tnParent.FullPath == strValues)
{
return tnParent;
}
TreeNode tnRet = null;
foreach (TreeNode tn in tnParent.Nodes)
{
tnRet = FindNodeByValue(tn, strValues);
if (tnRet != null)
{
break;
}
}
return tnRet;
}
///
/// The Expand2Node.
///
/// The treeNode.
private void Expand2Node(TreeNode treeNode)
{
TreeNode tnParent = treeNode.Parent;
if (tnParent != null)
{
tnParent.Expand();
Expand2Node(tnParent);
}
else
{
return;
}
}
///
/// The InitToolTip.
///
private void InitToolTip()
{
}
///
/// 边界设置窗口显示事件.
///
/// 事件按钮.
/// 事件参数.
private void bdtBorderLayer_ShowingEditor(object sender, DevExpress.XtraBars.ItemCancelEventArgs e)
{
layerPopNode = mainView.BorderLayer;
}
///
/// 设置网格的边界图层.
///
/// The sender.
/// The e.
private void bdtBorderLayer_EditValueChanged(object sender, EventArgs e)
{
if (!layerPopNode.Equals(mainView.BorderLayer))
{
mainView.BorderLayer = layerPopNode;
bbtnMeshPackForce_ItemClick(null, null);
}
}
private void btiWellLayer_EditValueChanged(object sender, EventArgs e)
{
}
private void btiDigEmptyLayer_EditValueChanged(object sender, EventArgs e)
{
}
private void btiBorderControlLayer_EditValueChanged(object sender, EventArgs e)
{
}
///
/// 断层设置窗口显示.
///
/// 事件按钮.
/// 事件参数.
private void bdtFaultLayer_ShowingEditor(object sender, DevExpress.XtraBars.ItemCancelEventArgs e)
{
layerPopNode = mainView.FaultLayer;
}
///
/// The bdtFaultLayer_EditValueChanged.
///
/// The sender.
/// The e.
private void bdtFaultLayer_EditValueChanged(object sender, EventArgs e)
{
if (!layerPopNode.Equals(mainView.FaultLayer))
{
mainView.FaultLayer = layerPopNode;
bbtnMeshPackForce_ItemClick(null, null);
}
}
///
/// btis the grid contour layer_ edit value changed.
///
/// The sender.
/// The e.
private void btiGridContourLayer_EditValueChanged(object sender, EventArgs e)
{
//string strContourLayer = $"{btiGridContourLayer.EditValue}";
//if (!string.IsNullOrEmpty(strContourLayer))
//{
// GridContourLayer = strContourLayer;
//}
}
///
/// bdis the grid fault layer_ edit value changed.
///
/// The sender.
/// The e.
private void bdiGridFaultLayer_EditValueChanged(object sender, EventArgs e)
{
//string strLayer = $"{bdiGridFaultLayer.EditValue}";
//if (!string.IsNullOrEmpty(strLayer))
//{
// GridFaultLayer = strLayer;
//}
}
///
/// 图层选择下拉框弹出前事件.
///
/// The sender.
/// The e.
private void ppmGridEditorLayer_BeforePopup(object sender, CancelEventArgs e)
{
btiGridContourLayer.EditValue = GridContourLayer;
bdiGridFaultLayer.EditValue = GridFaultLayer;
btiGridControlPointLayer.EditValue = ControlPointLayer;
btnOtherLineLayer.EditValue = OtherLineLayer;
}
private void btiGridContourLayer_ShowingEditor(object sender, ItemCancelEventArgs e)
{
popupTreeType = "网格编辑等值线图层";
layerPopNode = this.GridContourLayer;
ppcEditorMeshPack.PopupControl = ppcMeshPack;
}
private void bdiGridFaultLayer_ShowingEditor(object sender, ItemCancelEventArgs e)
{
popupTreeType = "网格编辑断层图层";
layerPopNode = this.GridFaultLayer;
ppcEditorMeshPack.PopupControl = ppcMeshPack;
}
///
/// 控制点图形选择框显示事件.
///
/// The sender.
/// The e.
private void btiGridControlPointLayer_ShowingEditor(object sender, ItemCancelEventArgs e)
{
popupTreeType = "网格编辑控制点图层";
layerPopNode = this.ControlPointLayer;
ppcEditorMeshPack.PopupControl = ppcMeshPack;
}
///
/// 其它线弹出编辑框事件
///
/// The sender.
/// The e.
private void btnOtherLineLayer_ShowingEditor(object sender, ItemCancelEventArgs e)
{
popupTreeType = "网格编辑附加线图层";
layerPopNode = this.OtherLineLayer;
ppcEditorMeshPack.PopupControl = ppcMeshPack;
}
///
/// 沉积相井位图形选择框显示事件.
///
/// The sender.
/// The e.
private void btiKedGridControlPointLayer_ShowingEditor(object sender, ItemCancelEventArgs e)
{
popupTreeType = "沉积相井位图层";
layerPopNode = this.KedControlPointLayer;
ppcEditorMeshPack.PopupControl = ppcMeshPack;
}
///
/// 沉积相其它线弹出编辑框事件
///
/// The sender.
/// The e.
private void btnKedOtherLineLayer_ShowingEditor(object sender, ItemCancelEventArgs e)
{
popupTreeType = "沉积相附加线图层";
layerPopNode = this.KedOtherLineLayer;
ppcEditorMeshPack.PopupControl = ppcMeshPack;
}
///
/// btis the dig empty layer_ showing editor.
///
/// The sender.
/// The e.
private void btiDigEmptyLayer_ShowingEditor(object sender, ItemCancelEventArgs e)
{
popupTreeType = "3维显示挖空图层";
layerPopNode = this.HoleLayer;
ppc3dLayerEdit.PopupControl = ppcMeshPack;
}
private void btiBorderControlLayer_ShowingEditor(object sender, ItemCancelEventArgs e)
{
popupTreeType = "3维显示边界范围";
layerPopNode = this.BorderControlLayer;
ppc3dLayerEdit.PopupControl = ppcMeshPack;
}
private void btiWellLayer_ShowingEditor(object sender, ItemCancelEventArgs e)
{
popupTreeType = "3维显示井图层";
layerPopNode = this.WellLayer;
ppc3dLayerEdit.PopupControl = ppcMeshPack;
}
///
/// 关闭网格补丁图层.
///
private void ClosePopupMeshPack()
{
if (ppcMeshPack.OwnerEdit != null)
{
ppcMeshPack.OwnerEdit.ClosePopup();
}
}
///
/// The trvLayer_NodeMouseDoubleClick.
///
/// The sender.
/// The e.
private void trvLayer_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
{
string strPath = e.Node.FullPath;
this.SetPopupData(strPath);
}
private void btnPopOK_Click(object sender, EventArgs e)
{
var checkedItems = TreeViewHelper.TraverseTreeView(trvLayer).Where(n => n.Checked).Select(n => n.FullPath).ToList();
if (trvLayer.SelectedNode == null && checkedItems.Count == 0)
{
ClosePopupMeshPack();
return;
}
string strPath = string.Empty;
if (popupTreeType == "网格编辑控制点图层" || popupTreeType == "网格编辑断层图层" || popupTreeType == "网格编辑附加线图层" ||
popupTreeType == "沉积相井位图层" || popupTreeType == "沉积相附加线图层" ||
popupTreeType == "3维显示挖空图层" || popupTreeType == "3维显示边界范围" || popupTreeType == "3维显示井图层")
{
//多选
strPath = string.Join(";", checkedItems);
}
else
{
//单选
strPath = trvLayer.SelectedNode.FullPath;
}
this.SetPopupData(strPath);
}
private void btnPopCancel_Click(object sender, EventArgs e)
{
ClosePopupMeshPack();
}
private void SetPopupData(string strPath)
{
if (strPath == "图层")
{
return;
}
if (this.popupTreeType == "网格编辑等值线图层")
{
string strLayer = strPath.Remove(0, 3);
if (!string.IsNullOrEmpty(strLayer) && strPath != "<无>")
{
GridContourLayer = strLayer;
}
if (strPath == "<无>")
{
GridContourLayer = string.Empty;
}
}
else if (this.popupTreeType == "网格编辑断层图层")
{
if (strPath == "<无>")
{
this.GridFaultLayer = string.Empty;
}
else
{
var strPaths = strPath.Split(';');
var layerList = new List();
foreach (var strP in strPaths)
{
if (string.IsNullOrEmpty(strP))
{
continue;
}
string strLayer = strP.Remove(0, 3);
if (!string.IsNullOrEmpty(strLayer))
{
layerList.Add(strLayer);
}
}
this.GridFaultLayer = string.Join(";", layerList);
}
}
else if (this.popupTreeType == "网格编辑控制点图层")
{
if (strPath == "<无>")
{
this.ControlPointLayer = string.Empty;
}
else
{
var strPaths = strPath.Split(';');
var layerList = new List();
foreach (var strP in strPaths)
{
if (string.IsNullOrEmpty(strP))
{
continue;
}
string strLayer = strP.Remove(0, 3);
if (!string.IsNullOrEmpty(strLayer))
{
layerList.Add(strLayer);
}
}
this.ControlPointLayer = string.Join(";", layerList);
}
}
else if (this.popupTreeType == "网格编辑附加线图层")
{
if (strPath == "<无>")
{
this.OtherLineLayer = string.Empty;
}
else
{
var strPaths = strPath.Split(';');
var layerList = new List();
foreach (var strP in strPaths)
{
if (string.IsNullOrEmpty(strP))
{
continue;
}
string strLayer = strP.Remove(0, 3);
if (!string.IsNullOrEmpty(strLayer))
{
layerList.Add(strLayer);
}
}
this.OtherLineLayer = string.Join(";", layerList);
}
}
else if (this.popupTreeType == "沉积相井位图层")
{
if (strPath == "<无>")
{
this.KedControlPointLayer = string.Empty;
}
else
{
var strPaths = strPath.Split(';');
var layerList = new List();
foreach (var strP in strPaths)
{
if (string.IsNullOrEmpty(strP))
{
continue;
}
string strLayer = strP.Remove(0, 3);
if (!string.IsNullOrEmpty(strLayer))
{
layerList.Add(strLayer);
}
}
this.KedControlPointLayer = string.Join(";", layerList);
}
}
else if (this.popupTreeType == "沉积相附加线图层")
{
if (strPath == "<无>")
{
this.KedOtherLineLayer = string.Empty;
}
else
{
var strPaths = strPath.Split(';');
var layerList = new List();
foreach (var strP in strPaths)
{
if (string.IsNullOrEmpty(strP))
{
continue;
}
string strLayer = strP.Remove(0, 3);
if (!string.IsNullOrEmpty(strLayer))
{
layerList.Add(strLayer);
}
}
this.KedOtherLineLayer = string.Join(";", layerList);
}
}
else if (this.popupTreeType == "3维显示挖空图层")
{
if (strPath == "<无>")
{
HoleLayer = string.Empty;
mainView.FaultLayer3D = string.Empty;
}
else
{
var strPaths = strPath.Split(';');
var digEmpthLayerList = new List();
foreach (var strP in strPaths)
{
if (string.IsNullOrEmpty(strP))
{
continue;
}
string strLayer = strP.Remove(0, 3);
if (!string.IsNullOrEmpty(strLayer) && strPath != "<无>")
{
digEmpthLayerList.Add(strLayer);
}
}
HoleLayer = string.Join(";", digEmpthLayerList);
mainView.FaultLayer3D = HoleLayer;
}
}
else if (this.popupTreeType == "3维显示边界范围")
{
if (strPath == "<无>")
{
BorderControlLayer = string.Empty;
mainView.BorderLayer3D = string.Empty;
}
else
{
var strPaths = strPath.Split(';');
var borderControlLayerList = new List();
foreach (var strP in strPaths)
{
if (string.IsNullOrEmpty(strP))
{
continue;
}
string strLayer = strP.Remove(0, 3);
if (!string.IsNullOrEmpty(strLayer) && strPath != "<无>")
{
borderControlLayerList.Add(strLayer);
}
}
BorderControlLayer = string.Join(";", borderControlLayerList);
mainView.BorderLayer3D = BorderControlLayer;
}
}
else if (this.popupTreeType == "3维显示井图层")
{
if (strPath == "<无>")
{
WellLayer = string.Empty;
mainView.WellLayer3D = string.Empty;
}
else
{
var strPaths = strPath.Split(';');
var wellLayerList = new List();
foreach (var strP in strPaths)
{
if (string.IsNullOrEmpty(strP))
{
continue;
}
string strLayer = strP.Remove(0, 3);
if (!string.IsNullOrEmpty(strLayer) && strPath != "<无>")
{
wellLayerList.Add(strLayer);
}
}
WellLayer = string.Join(";", wellLayerList);
mainView.WellLayer3D = WellLayer;
}
}
if (!strPath.Equals(layerPopNode))
{
if (strPath.Contains(";"))
{
var strPaths = strPath.Split(';');
var digEmpthLayerList = new List();
foreach (var strP in strPaths)
{
string strLayer = strP.Remove(0, 3);
if (!string.IsNullOrEmpty(strLayer) && strPath != "<无>")
{
digEmpthLayerList.Add(strLayer);
}
}
layerPopNode = string.Join(";", digEmpthLayerList);
}
else
{
layerPopNode = strPath.Remove(0, 3);
}
ClosePopupMeshPack();
}
}
///
/// 反走样设置.
///
/// 事件按钮.
/// 事件参数.
private void btnAntiAlias_DownChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView?.ToolAntiAlias(btnAntiAlias.Down);
}
///
/// The btnDisplayScale_ItemClick.
///
/// The sender.
/// The e.
private void btnDisplayScale_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
mainView?.ToolDisplayScale();
}
private void DelaunayButton_ItemClick(object sender, ItemClickEventArgs e)
{
//mainView?.ToolDelaunay();
}
///
/// 简单三角剖分.
///
/// The sender.
/// The e.
private void btnDelaunaySimple_ItemClick(object sender, ItemClickEventArgs e)
{
mainView?.ToolDelaunay();
}
///
/// 带约束的三角剖分.
///
/// The sender.
/// The e.
private void btnDelaunayConstraint_ItemClick(object sender, ItemClickEventArgs e)
{
mainView?.ToolDelaunayConstraint();
}
///
/// 龟背图生成事件.
///
/// The source of the event.
/// The instance containing the event data.
private void bbtnVoronoi_ItemClick(object sender, ItemClickEventArgs e)
{
//mainView?.ToolVoronoi();
}
private void bbtnVoronoi1_ItemClick(object sender, ItemClickEventArgs e)
{
mainView?.ToolVoronoi();
}
private void bbtnVoronoi2_ItemClick(object sender, ItemClickEventArgs e)
{
mainView?.ToolVoronoi2();
}
///
/// 图层面板是否显示.
///
/// 图层控制按钮.
/// 选中事件.
private void bckiPanelLayer_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
LayerPanelVisible = bckiPanelLayer.Checked;
}
///
/// 统计面板是否显示.
///
/// 事件按钮.
/// 事件参数.
private void bckiPanelStatistic_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
StatisticPanelVisible = bckiPanelStatistic.Checked;
}
///
/// 属性面板是否显示.
///
/// 事件按钮.
/// 事件参数.
private void bckiPanelProperty_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
if (PropertyPanel == null)
{
return;
}
try
{
//if (bckiPanelProperty.Checked)
//{
//PropertyPanel.Visibility = DockVisibility.Visible;
//}
//else
//{
//PropertyPanel.Visibility = DockVisibility.AutoHide;
//}
PropertyPanelVisible = bckiPanelProperty.Checked;
}
finally
{
}
}
///
/// The MergePanels.
///
public void MergePanels()
{
// 状态条
if (DrawerStatusBar != null)
{
StatisticPanel.ControlContainer.Controls.Clear();
DrawerStatusBar.UnMergeStatusBar();
drawerStatusBar.MergeStatusBar(ribbonMain.StatusBar);
}
// 图层树控件的处理
if (LayerControl != null)
{
LayerPanel.ControlContainer.Controls.Clear();
//this.LayerPanel.ControlContainer.Controls[i]
LayerPanel.ControlContainer.Controls.Add(LayerControl);
LayerPanel.Text = $"{DrawerView.CurrentLayer}";
LayerControl.Dock = DockStyle.Fill;
if (LayerPanel.Visibility == DockVisibility.Hidden ||
LayerPanel.Visibility == DockVisibility.AutoHide)
{
bckiPanelLayer.Checked = false;
}
else
{
bckiPanelLayer.Checked = true;
}
LayerPanel.VisibilityChanged -= LayerPanel_VisibilityChanged;
LayerPanel.VisibilityChanged += LayerPanel_VisibilityChanged;
}
// 属性控件的处理
if (PropertyPanel != null && PropertyControl != null)
{
PropertyPanel.ControlContainer.Controls.Clear();
PropertyPanel.ControlContainer.Controls.Add(PropertyControl);
PropertyControl.Dock = DockStyle.Fill;
}
if (this.CreateMapPanel != null && CreateMapPanel.ControlContainer != null && GraphControl != null)
{
CreateMapPanel.ControlContainer.Controls.Clear();
CreateMapPanel.ControlContainer.Controls.Add(GraphControl);
GraphControl.Dock = DockStyle.Fill;
}
//if (this.CreateMapPanel != null)
//{
// 数据成图控件的处理
//if (!IsChildPanelExist(PropertyPanel.ParentPanel, "成图") && dcpProperty.Parent != null)
//if (CreateMapPanel.Controls.Count == 0)
//{
// CreateMapPanel.Controls.Add(GraphControl);
// GraphControl.Dock = DockStyle.Fill;
//}
//if (!IsChildPanelExist(PropertyPanel.ParentPanel, "成图"))
//// if (!PropertyPanel.Controls.Contains(dcpCreate))
//{
// PropertyPanel.Controls.Add(this.dcpCreate);
// //DockPanel dockPanel = dcpProperty.AddPanel();
// //DockPanel dockPanel = dcpCreate;
// dcpCreate.Text = "成图";
// dockManager1.AddPanel(DockingStyle.Fill, dcpCreate);
// dcpCreate.DockTo(PropertyPanel, DockingStyle.Fill);
// PropertyPanel.ParentPanel.ActiveChild = PropertyPanel;
//}
//}
// 统计面板
if (StatisticControl != null)
{
statisticPanel.ControlContainer.Controls.Clear();
StatisticPanel.ControlContainer.Controls.Add(StatisticControl);
StatisticControl.Dock = DockStyle.Fill;
if (StatisticPanel.Visibility == DockVisibility.Hidden ||
StatisticPanel.Visibility == DockVisibility.AutoHide)
{
bckiPanelStatistic.Checked = false;
}
else
{
bckiPanelStatistic.Checked = true;
}
StatisticPanel.VisibilityChanged -= StatisticPanel_VisibilityChanged;
StatisticPanel.VisibilityChanged += StatisticPanel_VisibilityChanged;
}
}
///
/// 取消面板合并.
///
public void UnMergePanels()
{
DrawerStatusBar?.UnMergeStatusBar();
if (LayerPanel != null)
{
LayerPanel.ControlContainer.Controls.Clear();
LayerPanel.Text = "图层";
}
PropertyPanel?.ControlContainer.Controls.Clear();
statisticPanel?.ControlContainer.Controls.Clear();
}
private UserControl ConvertFormToUserControl(Form form)
{
var uc = new UserControl();
form.FormBorderStyle = FormBorderStyle.None;
form.TopLevel = false;
uc.Controls.Add(form);
form.Dock = DockStyle.Fill;
return uc;
}
///
/// 添加控件到底部面板.
///
/// 名称.
/// 标题.
/// 子控件.
/// 是否显示关闭按钮
/// 是否覆盖已经存在的标签页
/// 面板.
public DockPanel AddPanel2Bottom(string panelName, string panelText, Control childControl, bool showCloseButton = true, bool overwrite = true)
{
statisticPanel.SuspendLayout();
if (overwrite)
{
RemoveBottomPanel(panelName);
}
// 显示 statisticPanel 并暂停布局
statisticPanel.Visibility = DockVisibility.Visible;
statisticPanel.Tabbed = true;
// 创建 DockPanel
DockPanel dockPanel = statisticPanel.AddPanel();
dockPanel.Name = panelName;
dockPanel.Text = panelText;
dockPanel.Options.ShowCloseButton = showCloseButton;
// 设置 statisticPanel 的父面板
if (statisticPanel.ParentPanel != null)
{
statisticPanel.ParentPanel.ActiveChild = dockPanel;
statisticPanel.ParentPanel.Tabbed = true;
}
// 恢复布局并返回面板
statisticPanel.ResumeLayout();
// 使用更高效的停靠方式
dockManager1.BeginUpdate();
try
{
dockPanel.Visibility = DockVisibility.Visible;
dockManager1.AddPanel(DockingStyle.Fill, dockPanel);
dockPanel.DockTo(statisticPanel, DockingStyle.Fill);
}
finally
{
dockManager1.EndUpdate();
}
// 添加子控件到 DockPanel
childControl.Dock = DockStyle.Fill;
if (childControl is Form form)
{
form.TopLevel = false;
form.FormBorderStyle = FormBorderStyle.None;
dockPanel.Controls.Add(form);
form.Show();
form.Dock = DockStyle.Fill;
}
else if (childControl is GridControl grid)
{
dockPanel.Controls.Add(grid);
grid.Show();
grid.Dock = DockStyle.Fill;
}
// 强制刷新一次
if (statisticPanel.Parent is Control parent)
{
parent.Refresh();
}
return dockPanel;
}
///
/// 移除底部指定面板
///
/// 面板名称
public void RemoveBottomPanel(string panelName)
{
DockPanel targetPanel = statisticPanel.ParentPanel?.Controls
.OfType()
.FirstOrDefault(p => p.Name == panelName);
if (targetPanel != null)
{
statisticPanel.ParentPanel.RemovePanel(targetPanel);
}
}
///
/// 移除底部所有面板
///
public void ClearBottomPanel()
{
}
///
/// 在 dockManager1 中查找指定名称的 DockPanel
///
/// 标题
/// 成功返回对应的 DockPanel,失败返回 null
private DockPanel FindPanelByText(string text)
{
return dockManager1.Panels.Cast().FirstOrDefault(x => x.Text == text);
}
///
/// 判断子控件中是否存在指定 text 的 dockPanel
///
/// 被查询的控件
/// 名称
/// true/false
private bool IsChildPanelExist(DockPanel dockPanel, string text)
{
return dockPanel?.Controls
.OfType()
.Any(child => child.Text == text) ?? false;
}
///
/// The LayerPanel_VisibilityChanged.
///
/// The sender.
/// The e.
private void LayerPanel_VisibilityChanged(object sender, VisibilityChangedEventArgs e)
{
SuspendLayout();
// Thread.Sleep(5000);
if (LayerPanel.Visibility == DockVisibility.Hidden)
{
if (bckiPanelLayer.Checked)
{
bckiPanelLayer.Checked = false;
}
}
if (LayerPanel.Visibility == DockVisibility.Visible ||
LayerPanel.Visibility == DockVisibility.AutoHide)
{
if (bckiPanelLayer.Checked == false)
{
bckiPanelLayer.Checked = true;
}
}
ResumeLayout();
}
///
/// The StatisticPanel_VisibilityChanged.
///
/// The sender.
/// The e.
private void StatisticPanel_VisibilityChanged(object sender, VisibilityChangedEventArgs e)
{
if (StatisticPanel.Visibility == DockVisibility.Hidden)
{
if (bckiPanelStatistic.Checked)
{
bckiPanelStatistic.Checked = false;
}
}
if (StatisticPanel.Visibility == DockVisibility.Visible ||
StatisticPanel.Visibility == DockVisibility.AutoHide)
{
if (bckiPanelStatistic.Checked == false)
{
bckiPanelStatistic.Checked = true;
}
}
}
///
/// btns the zoom window_ item click.
///
/// The sender.
/// The e.
private void btnZoomWindow_ItemClick(object sender, ItemClickEventArgs e)
{
}
///
/// 生成三角网
///
/// sender
/// e
private void btnDelaunay_ItemClick(object sender, ItemClickEventArgs e)
{
mainView?.ToolDelaunay();
}
private void btnSetXyzClore_ItemClick(object sender, ItemClickEventArgs e)
{
mainView?.ToolZColor();
}
private void SimplifyButton_ItemClick(object sender, ItemClickEventArgs e)
{
mainView?.ToolSimplify();
}
private void btnImageCutPolygon_ItemClick(object sender, ItemClickEventArgs e)
{
mainView?.ToolImageCutPolygon();
}
private void btnIntersectRegionFill_DownChanged(object sender, ItemClickEventArgs e)
{
if (btnIntersectRegionFill.Down || btnLinkRegionFill.Down || btnAutoRegionFill.Down)
{
btnCurveFill.Down = true;
}
else
{
mainView.ToolRestore();
}
}
private void btnIntersectRegionFill_ItemClick(object sender, ItemClickEventArgs e)
{
this.UpdateBarItemsStatus((BarButtonItem)e.Item, mainView.ToolCurveConnectFill);
}
private void btnLinkRegionFill_DownChanged(object sender, ItemClickEventArgs e)
{
if (btnIntersectRegionFill.Down || btnLinkRegionFill.Down || btnAutoRegionFill.Down)
{
btnCurveFill.Down = true;
}
else
{
mainView.ToolRestore();
}
}
private void btnLinkRegionFill_ItemClick(object sender, ItemClickEventArgs e)
{
this.UpdateBarItemsStatus((BarButtonItem)e.Item, mainView.ToolSolidLink);
}
private void btnAutoRegionFill_DownChanged(object sender, ItemClickEventArgs e)
{
if (btnIntersectRegionFill.Down || btnLinkRegionFill.Down || btnAutoRegionFill.Down)
{
btnCurveFill.Down = true;
}
else
{
mainView.ToolRestore();
}
}
///
/// btns the auto region fill_ item click.
///
/// The sender.
/// The e.
private void btnAutoRegionFill_ItemClick(object sender, ItemClickEventArgs e)
{
this.UpdateBarItemsStatus((BarButtonItem)e.Item, mainView.ToolSolidAuto);
}
///
/// 水平井绘制
///
/// 事件按钮
/// 事件参数
private void btiWellGroup_ItemClick(object sender, ItemClickEventArgs e)
{
if (btiWellGroup.Down)
{
mainView.ToolWellGroup();
}
}
///
/// 编辑网格和等值线
///
/// 事件按钮
/// 事件参数
private void bbtnGridProgress_ItemClick(object sender, ItemClickEventArgs e)
{
if (FindGridEditorProcess(KedGridEditor.FormMain.ProcessName))
{
MessageBox.Show("沉积相编辑正在运行中,请结束后再使用等网编辑!", "启动编辑"
, MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
if (FindGridEditorProcess(KepGridEditor.FormMain.ProcessName))
{
MessageBox.Show("编辑模块正在运行中,请结束后再启动!", "启动编辑"
, MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
IntPtr pXy = mainView.DrawerXY;
KepGridEditor.FormMain editor = new KepGridEditor.FormMain(
this.DrawerView.ViewControl.Geo, this.GridContourLayer, this.GridFaultLayer
, this.ControlPointLayer, this.OtherLineLayer)
{
StartPosition = FormStartPosition.CenterScreen,
};
//editor.EditorMouseMoveEvent += async (mx, my) =>
//{
// await Task.Run(() => { mainView.SetDrawerMouseLocation(mx, my); });
//};
// 等网编辑,修改了数据
editor.PushDataClick += (object btn, EventArgs ea) =>
{
//更新图层列表
LayerControl.LoadLayerTree();
mainView.RestoreToolDefault();
mainView.ToolRedraw();
// 网格操作我们不支持回退,太占内存了,于是这里要手动设置一下修改标识
mainView.SetDocumentModified(true);
};
editor.Show();
editor.FormClosing += (object editorForm, FormClosingEventArgs ea) => {
mainView.RestoreToolDefault();
};
this.UpdateBarItemsStatus((BarButtonItem)e.Item, null);
}
///
/// 轮廓刻画.
///
/// The sender.
/// The e.
private void bbtnOutline_ItemClick(object sender, ItemClickEventArgs e)
{
if (FindGridEditorProcess(RiverPortray.FormMain.ProcessName))
{
MessageBox.Show("轮廓刻画模块正在运行中,请结束后再启动!", "启动轮廓刻画"
, MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
IntPtr pXy = mainView.DrawerXY;
RiverPortray.FormMain frmMain = new RiverPortray.FormMain(pXy);
// 取消区域刻画最上显示,这个操作耗时较长,如果最上显示的话,在这个过程中无法去做别的事情
frmMain.TopMost = false;
// 回写了数据
frmMain.PushDataClick += (object btn, EventArgs ea) =>
{
mainView.ToolDefault();
mainView.ToolRedraw();
mainView.LoadLayerTree();
// 网格操作我们不支持回退,太占内存了,于是这里要手动设置一下修改标识
mainView.SetDocumentModified(true);
};
frmMain.Show(this);
}
///
/// 查找指定名称的进程
///
/// 窗口名称
/// 是否找到
private bool FindGridEditorProcess(string processName)
{
foreach (Form f in Application.OpenForms)
{
if (f.Text == processName)
{
return true;
}
}
return false;
}
private void btnSymbolManager_ItemClick(object sender, ItemClickEventArgs e)
{
EditFileSymbol();
}
///
/// 编辑当前文件相关的符号.
///
public void EditFileSymbol()
{
//DirectoryInfo symbolFilePath = Directory.GetParent(Application.StartupPath);
string parentPath = Path.GetFullPath(Path.Combine(Application.StartupPath, ".."));
string symbolFile = Path.Combine(parentPath, "Symbol");
if (DrawerView == null)
{
SymbolLibInterface.SymbolHelp.ShowSymbolUI(null, symbolFile);
}
else
{
SymbolLibInterface.SymbolHelp.ShowSymbolUI(mainView, symbolFile);
}
}
///
/// vtk 视图, 一个ucdrawedit 对应一个 UCVtkEdit
///
public UCVtkEdit VtkEdit { get; set; }
///
protected override void OnHandleDestroyed(EventArgs e)
{
faultEditForm?.Close();
faultEditForm = null;
base.OnHandleDestroyed(e);
}
private FaultEditForm faultEditForm;
///
/// 断层外扩按钮点击事件.
///
/// The sender.
/// The e.
private void bbtnFaultBroaden_ItemClick(object sender, ItemClickEventArgs e)
{
if (faultEditForm == null) // 防止用户点多次出来多个弹框
{
faultEditForm = new FaultEditForm(mainView);
faultEditForm.Show(this);
faultEditForm.FormClosed += (s, _) =>
{
faultEditForm = null; // 关闭时置 null,为了下次能够启动起来
bbtnFaultBroaden.Down = false;
this.UpdateBarItemsStatus(bbtnFaultBroaden, null);
};
}
}
///
/// 断层简化按钮点击事件 click.
///
/// The sender.
/// The e.
private void bbtnFaultSimplyfy_ItemClick(object sender, ItemClickEventArgs e)
{
if (bbtnFaultSimplyfy.Down)
{
mainView?.ToolFaultSimply();
}
}
private void bbtnCurveCaculate_ItemClick(object sender, ItemClickEventArgs e)
{
this.UpdateBarItemsStatus((BarButtonItem)e.Item, mainView.ToolMergeCurve);
}
///
/// 曲线连接按钮点击事件
///
/// 事件按钮
/// 事件参数
private void bbtnJoinCurves_ItemClick(object sender, ItemClickEventArgs e)
{
mainView?.ToolAutoJoinCurves();
}
private void btnReverseZ_ItemClick(object sender, ItemClickEventArgs e)
{
mainView?.ReverseCurveAndMeshZValue();
DialogResult result = XtraMessageBox.Show(
"是否反转等值线?",
"确认",
MessageBoxButtons.YesNo,
MessageBoxIcon.Question);
if (result == DialogResult.Yes)
{
mainView.ReverseCurveName();
}
}
private void btnDeleteDuplicate_ItemClick(object sender, ItemClickEventArgs e)
{
mainView?.DeleteDuplicationElements();
}
private void barButtonItemVtk_ItemClick(object sender, ItemClickEventArgs e)
{
ShowVtkEventArgs vea = new ShowVtkEventArgs("Show Vtk Event triggered");
vea.FilePath = this.FileFullName;
vea.HoleLayer = this.HoleLayer;
vea.BoundaryLayer = this.BorderControlLayer;
vea.WellLayer = this.WellLayer;
Drawer drawer = this.DrawerView.ViewControl.Drawer;
// 获取主网格
IntPtr mainMesh = IntPtr.Zero;
String layerName = this.GetMainMeshLayer();
// 如果没有手动设置主网格的情况,自动获取并设置主网格
if (this.VtkMainMesh == IntPtr.Zero)
{
// 从主网格图层获取主网格,获取图件的第一个网格做为主网格
if (string.IsNullOrEmpty(layerName))
{
mainMesh = drawer.Geo.GetKevFirstMesh();
drawer.SetVtkMainMeshEvent?.Invoke(drawer.DrawFileName, mainMesh);
}
else
{
mainMesh = mainView.ViewControl.Geo.GetMainMeshByLayer3D(layerName);
drawer.SetVtkMainMeshEvent?.Invoke(drawer.DrawFileName, mainMesh);
}
}
//获取图层数据,传送数据
this.LayerControl.GetVtkData(vea);
//显示VTK控件
ShowVtkEvent?.Invoke(this, vea);
}
///
/// 设置三维设置参数
///
/// 三维参数,如果为 Intptr.Zero 表示清空
public void SetSceneParameter(IntPtr sceneParameter)
{
var geo = mainView?.ViewControl.Drawer.Geo;
geo?.VtkSetSceneParameter(sceneParameter);
geo?.Sigma_SetDocumentModified(true);
}
///
/// 获取三维设置参数
///
/// 参数指针,如果 IntPtr.Zero 表示三维参数不存在
public IntPtr GetSceneParameter()
{
var geo = mainView?.ViewControl.Drawer.Geo;
if (geo == null)
{
return IntPtr.Zero;
}
return geo.VtkGetSceneParameter();
}
///
/// 获取三维配置参数明细
///
/// 参数明细
/// 成功返回 true,失败返回 false
public bool GetSceneParameterDetails(ref KevVtkSceneParameter parameter)
{
var geo = mainView?.ViewControl.Drawer.Geo;
if (geo == null)
{
return false;
}
return geo.VtkGetSceneParameterDetails(ref parameter);
}
///
/// 设置三维配置信息到 vtkChild
///
/// 目标对象
public void SetVtkSettings(UCVtkEdit vtkChild)
{
if (vtkChild == null)
{
throw new ArgumentNullException(nameof(vtkChild));
}
IntPtr parameter = this.GetSceneParameter();
if (parameter != IntPtr.Zero)
{
UpdatePropertyPanel(vtkChild);
vtkChild.SetSceneParameter(parameter);
}
}
private Color ColorFromDouble(double r, double g, double b)
{
int red = (int)(r * 255);
int green = (int)(g * 255);
int blue = (int)(b * 255);
return Color.FromArgb(red, green, blue);
}
private Color ColorRefToColor(uint color)
{
// 提取红、绿、蓝分量
byte red = (byte)((color >> 16) & 0xFF);
byte green = (byte)((color >> 8) & 0xFF);
byte blue = (byte)(color & 0xFF);
// 创建Color对象(Alpha设为255,即不透明)
return Color.FromArgb(255, red, green, blue);
}
///
/// 更新面板属性值
///
/// Vtk界面
private void UpdatePropertyPanel(UCVtkEdit vtkEdit)
{
try
{
var ucdrawEdit = this;
var parameter = default(KevVtkSceneParameter);
if (!ucdrawEdit.GetSceneParameterDetails(ref parameter))
{
return;
}
// general
vtkEdit.VtkProerty.ShowMeshEdge = (parameter.m_showMeshLinearExtrusion != 0);
vtkEdit.VtkProerty.ShowCoordinateGrid = (parameter.m_showAxies != 0);
vtkEdit.VtkProerty.ShowScalarBar = (parameter.m_showScalarBar != 0);
vtkEdit.VtkProerty.ShowCoordinateGridLine = (parameter.m_ShowCoordinateGridLine != 0);
vtkEdit.VtkProerty.ShowMeshEdgeColorGradient = (parameter.m_ShowMeshEdgeColorGradient != 0);
vtkEdit.VtkProerty.ZScale = parameter.m_zScale;
vtkEdit.VtkProerty.MeshEdgeMode = (MeshEdgeModeEnum)parameter.m_mesh_edge_mode;
vtkEdit.VtkProerty.Thickness = parameter.m_thickness;
// background
vtkEdit.VtkProerty.BackgroundColor = ColorFromDouble(
parameter.m_background_color_r,
parameter.m_background_color_g,
parameter.m_background_color_b);
// camera
vtkEdit.VtkProerty.CameraHAngle = parameter.m_camera_azimuth;
vtkEdit.VtkProerty.CameraVAngle = parameter.m_camera_elevation;
// actor
vtkEdit.VtkProerty.ActorAmbientColor = ColorFromDouble(
parameter.m_actor_ambientColor_r,
parameter.m_actor_ambientColor_g,
parameter.m_actor_ambientColor_b);
vtkEdit.VtkProerty.ActorDiffusedColor = ColorFromDouble(
parameter.m_actor_diffuseColor_r,
parameter.m_actor_diffuseColor_g,
parameter.m_actor_diffuseColor_b);
vtkEdit.VtkProerty.ActorSpecularColor = ColorFromDouble(
parameter.m_actor_specularColor_r,
parameter.m_actor_specularColor_g,
parameter.m_actor_specularColor_b);
vtkEdit.VtkProerty.ActorAmbient = (int)(parameter.m_actor_ambient * 100);
vtkEdit.VtkProerty.ActorDiffused = (int)(parameter.m_actor_diffuse * 100);
vtkEdit.VtkProerty.ActorSpecular = (int)(parameter.m_actor_specular * 100);
// light
vtkEdit.VtkProerty.LightMode = (parameter.m_light_mode == 0 ? SigmaDrawerElement.LightModeEnum.相机光 : SigmaDrawerElement.LightModeEnum.方向光);
vtkEdit.VtkProerty.MeshEdgeMode = (parameter.m_mesh_edge_mode == 0 ? SigmaDrawerElement.MeshEdgeModeEnum.平移 : SigmaDrawerElement.MeshEdgeModeEnum.水平);
vtkEdit.VtkProerty.LightIntensity = (int)(parameter.m_light_intensity * 100);
vtkEdit.VtkProerty.LightColor = ColorFromDouble(
parameter.m_light_color_r,
parameter.m_light_color_g,
parameter.m_light_color_b);
vtkEdit.VtkProerty.LightAmbientColor = ColorFromDouble(
parameter.m_light_ambientColor_r,
parameter.m_light_ambientColor_g,
parameter.m_light_ambientColor_b);
vtkEdit.VtkProerty.LightDiffusedCorlor = ColorFromDouble(
parameter.m_light_diffuseColor_r,
parameter.m_light_diffuseColor_g,
parameter.m_light_diffuseColor_b);
vtkEdit.VtkProerty.LightSpecularColor = ColorFromDouble(
parameter.m_light_specularColor_r,
parameter.m_light_specularColor_g,
parameter.m_light_specularColor_b);
vtkEdit.VtkProerty.MeshEdgeColor = ColorFromDouble(
parameter.m_mesh_edge_color_r,
parameter.m_mesh_edge_color_g,
parameter.m_mesh_edge_color_b);
vtkEdit.VtkProerty.LightElevation = parameter.m_light_elevation;
vtkEdit.VtkProerty.LightAzimuth = parameter.m_light_azimuth;
vtkEdit.VtkProerty.SingularValueFilterFlag = (parameter.m_singularValueFilterFlag != 0);
vtkEdit.VtkProerty.SingularThreshold = parameter.m_singularThreshold;
vtkEdit.VtkProerty.ZMaxScale = parameter.m_zMaxScale;
vtkEdit.VtkProerty.WellMode = (Enum.IsDefined(typeof(WellModeEnum), parameter.m_wellMode) ?
vtkEdit.VtkProerty.WellMode = (WellModeEnum)parameter.m_wellMode : WellModeEnum.平面);
vtkEdit.VtkProerty.WellColumnHeight = parameter.m_wellColumnHeight;
vtkEdit.VtkProerty.WellColumnRadius = parameter.m_wellColumnRadius;
vtkEdit.VtkProerty.WellColumnColor = ColorRefToColor(parameter.m_wellColumnColor);
vtkEdit.VtkProerty.WellColumnNameColor = ColorRefToColor(parameter.m_wellColumnNameColor);
vtkEdit.VtkProerty.WellColumnNameSize = parameter.m_wellColumnNameSize;
vtkEdit.VtkProerty.WellColumnNameGap = parameter.m_wellColumnNameGap;
vtkEdit.VtkProerty.FaultMode = (FaultModeEnum)parameter.m_faultModeEnum;
if (vtkEdit.VtkProerty.WellTypeColorList.Count == 0)
{
//string wellTypeColors = Marshal.PtrToStringBSTR(parameter.m_wellTypeColors);
//// 如果为空,不能设置 WellTypeColorList,否则会将默认的设置顶掉
//if (!string.IsNullOrWhiteSpace(wellTypeColors))
//{
// string[] colorItems = wellTypeColors.Split(';');
// var colorItemCollection = new WellTypeColorCollection();
// foreach (string colorItem in colorItems)
// {
// string[] items = colorItem.Split(',');
// if (items.Length >= 4)
// {
// if (int.TryParse(items[1], out int r) && int.TryParse(items[2], out int g) && int.TryParse(items[3], out int b))
// {
// var item = new WellTypeColorItem(items[0], Color.FromArgb(255, r, g, b));
// colorItemCollection.Add(item);
// }
// }
// }
// vtkEdit.VtkProerty.WellTypeColorList = colorItemCollection;
//}
}
else
{
//如果已设置颜色对象,则只赋值颜色
string wellTypeColors = Marshal.PtrToStringBSTR(parameter.m_wellTypeColors);
// 如果为空,不能设置 WellTypeColorList,否则会将默认的设置顶掉
if (!string.IsNullOrWhiteSpace(wellTypeColors))
{
string[] colorItems = wellTypeColors.Split(';');
var colorItemCollection = new WellTypeColorCollection();
foreach (string colorItem in colorItems)
{
string[] items = colorItem.Split(',');
if (items.Length >= 4)
{
if (int.TryParse(items[1], out int r) && int.TryParse(items[2], out int g) && int.TryParse(items[3], out int b))
{
var item = new WellTypeColorItem(items[0], Color.FromArgb(255, r, g, b));
colorItemCollection.Add(item);
}
}
}
foreach (WellTypeColorItem item in colorItemCollection)
{
foreach (WellTypeColorItem temp in vtkEdit.VtkProerty.WellTypeColorList)
{
if (temp.Type.Equals(item.Type))
{
temp.Value = item.Value;
}
}
}
vtkEdit.UpdateWellTypeColor();
}
}
vtkEdit.VtkProerty.WellSymbolRadius = parameter.m_wellSymbalRadius;
vtkEdit.VtkProerty.WellColumnThrough = (parameter.m_wellColumnThrough != 0);
vtkEdit.propertyGridControl.Refresh();
}
finally
{
}
}
private void WindowSync_DownChanged(object sender, ItemClickEventArgs e)
{
BarButtonItem item = (BarButtonItem)(sender);
DrawerConfig.Instance.SetConfigValue("MultiView", "OnSynchronize", item.Down);
DrawerConfig.Instance.Save();
}
private void btnMeasure_ItemClick(object sender, ItemClickEventArgs e)
{
mainView.ToolMeasure();
}
private void btnRotation_ItemClick(object sender, ItemClickEventArgs e)
{
var form = new FrmRotation();
if (form.ShowDialog(this) == DialogResult.OK)
{
mainView.Rotation(form.RotationParameter.Origin.X, form.RotationParameter.Origin.Y, form.RotationParameter.Angle);
}
}
private void barSnapItem_CheckedChanged(object sender, ItemClickEventArgs e)
{
mainView?.ViewControl.Drawer.Geo.EnableSnape(barSnapItem.Checked);
}
private void ListBoxControl1_SelectedIndexChanged(object sender, EventArgs e)
{
if (listBoxControl1.SelectedIndex >= 0)
{
var selectedValue = listBoxControl1.SelectedItem.ToString();
// 更新按钮显示当前选中的值
btnAddMapLayer.Hint = $"卫星图片({selectedValue})";
if (selectedValue == "无")
{
mainView.DeleteMapViewLayer();
mainView.SetMapViewState(false);
mainView.UpdateMapViewIndex -= updateMapViewIndex;
if (btnAddMapLayer.DropDownControl != null)
{
btnAddMapLayer.DropDownControl.HidePopup();
}
}
else
{
mainView.DeleteMapViewLayer();
if (btnAddMapLayer.DropDownControl != null)
{
btnAddMapLayer.DropDownControl.HidePopup();
}
mainView.UpdateMapViewIndex += updateMapViewIndex;
int zoom = Convert.ToInt32(selectedValue);
mainView.AddMapViewLayer(zoom);
mainView.SetMapViewState(true);
}
mainView.LoadLayerTree();
mainView.ViewControl.Redraw();
}
}
private void updateMapViewIndex()
{
//this.listBoxControl1.SetSelected(0, true);
}
public void PopulateZoomLevels(int maxZoom)
{
// 清空
this.listBoxControl1.Items.Clear();
this.listBoxControl1.SelectedIndexChanged -= ListBoxControl1_SelectedIndexChanged;
for (int i = 5; i <= maxZoom; i++)
{
this.listBoxControl1.Items.Add(i);
}
this.listBoxControl1.SelectedIndexChanged += ListBoxControl1_SelectedIndexChanged;
}
private void btnAddMapLayer_ItemClick(object sender, ItemClickEventArgs e)
{
var geo = mainView?.ViewControl.Drawer.Geo;
string configPath = Path.Combine(Application.StartupPath, "mapConfig.json");
using (var manager = new frmMapManager(configPath))
{
TreeNode tnRoot = LayerControl.GetLayerNodes();
manager.SetTreeView(tnRoot);
if (manager.ShowDialog(this) == DialogResult.OK)
{
//记录参数
if (manager.SelectedProvider == null)
{
geo.MapUrlString = null;
return;
}
string mapKey = manager.SelectedProvider.Key;
string url = manager.SelectedProvider.Url;
url = url.Replace("{tk}", mapKey);
geo.MapUrlString = url;
geo.MapDBName = manager.SelectedProvider.DbFileName;
//边界
geo.MapBorderLayer = manager.BorderSelectionLayer;
if (manager.SelectedProvider.Crs == "gcj02")
{
geo.MapTransformType = 1;
}
else
{
geo.MapTransformType = 0;
}
this.PopulateZoomLevels(manager.SelectedProvider.MaxZoom);
}
}
}
///
/// 图层选择下拉框弹出前事件.
///
/// The sender.
/// The e.
private void ppmKEDGridEditorLayer_BeforePopup(object sender, CancelEventArgs e)
{
btiKedGridControlPointLayer.EditValue = KedControlPointLayer;
btnKedOtherLineLayer.EditValue = KedOtherLineLayer;
}
private void KEDButtonItem_ItemClick(object sender, ItemClickEventArgs e)
{
//沉积相编辑
if (FindGridEditorProcess(KepGridEditor.FormMain.ProcessName))
{
MessageBox.Show("等网编辑正在运行中,请结束后再使用沉积相编辑!", "启动编辑"
, MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
if (FindGridEditorProcess(KedGridEditor.FormMain.ProcessName))
{
MessageBox.Show("沉积相编辑正在运行中,请结束后再启动!", "启动编辑"
, MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
//获取相类关系列表
this.DrawerView.ViewControl.Geo.GetFaciesLegendMap();
IntPtr pXy = mainView.DrawerXY;
KedGridEditor.FormMain editor = new KedGridEditor.FormMain(
this.DrawerView.ViewControl.Geo, "等值线", "断层"
, this.KedControlPointLayer, this.KedOtherLineLayer, this.DrawerView.ViewControl.Geo.FaciesMap)
{
StartPosition = FormStartPosition.CenterScreen,
};
// 修改了数据
editor.PushDataClick += (object btn, EventArgs ea) =>
{
//更新图层列表
LayerControl.LoadLayerTree();
mainView.ToolDefault();
mainView.ToolRedraw();
// 网格操作我们不支持回退,太占内存了,于是这里要手动设置一下修改标识
mainView.SetDocumentModified(true);
};
editor.Show();
}
///
/// 沉积相生成
///
/// 事件按钮
/// 事件参数
private void bttonFacies_ItemClick(object sender, ItemClickEventArgs e)
{
FaciesInfoDialog faciesInfoDlg = new FaciesInfoDialog();
if (faciesInfoDlg.ShowDialog() == DialogResult.OK)
{
if (faciesInfoDlg.SelectedMethod == AlgorithmMethod.IDW)
{
mainView.GenerateIDWFacies(faciesInfoDlg.CsvPath, faciesInfoDlg.BorderSelectionLayer,
faciesInfoDlg.GridInterval, faciesInfoDlg.SubBlockCount, faciesInfoDlg.IDWNeighbors, faciesInfoDlg.IDWPower, faciesInfoDlg.IsGenerateBoundary);
}
else
{
mainView.GenerateNNFacies(faciesInfoDlg.CsvPath, faciesInfoDlg.BorderSelectionLayer,
faciesInfoDlg.GridInterval, faciesInfoDlg.NNSigma, faciesInfoDlg.NNOpenIter, faciesInfoDlg.NNCloseIter, faciesInfoDlg.IsGenerateBoundary);
}
}
}
private void bttonKedFaciesLine_ItemClick(object sender, ItemClickEventArgs e)
{
mainView.KedGrdGenerateFaciesLines();
}
private MineralRights mineralRightsForm;
private void bbtnMineralRights_ItemClick(object sender, ItemClickEventArgs e)
{
if (mineralRightsForm == null)
{
mineralRightsForm = new MineralRights(this.mainView, this.mainView.ViewControl.Geo);
mineralRightsForm.FormClosed += (s, _) => { mineralRightsForm = null; };
mineralRightsForm.Show(this);
}
}
///
/// 遮罩
///
///
///
private void btnMask_ItemClick(object sender, ItemClickEventArgs e)
{
TreeNode tnRoot = LayerControl.GetLayerNodes();
if(mainView.GetLayerSort())
{
mainView.SetLayerSort(false);
}
using (TreeViewDialog dialog = new TreeViewDialog())
{
dialog.ConfigName = "maskLayerConfig";
dialog.SetDualTreeViews(tnRoot, tnRoot);
if (dialog.ShowDialog() == DialogResult.OK)
{
string maskLayer = dialog.maskLayers;
string maskRange = dialog.maskRangeTags;
string[] array = { "遮罩图层" };
this.mainView.ViewControl.Geo.DeleteLayer(array, false);
mainView.AddLayerMask(maskLayer, maskRange);
mainView.LoadLayerTree();
mainView.ViewControl.Redraw();
}
}
}
}
}