| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.ComponentModel; |
| | | using System.Configuration; |
| | | using System.Data; |
| | | using System.Diagnostics; |
| | | using System.Drawing; |
| | | using System.IO; |
| | | using System.Linq; |
| | |
| | | { |
| | | public partial class FrmWin : Form |
| | | { |
| | | FrmTree tree; |
| | | |
| | | FrmTool tool; |
| | | |
| | | public SGWorld74 SG = null; |
| | | |
| | | public static string StartupPath |
| | |
| | | SG.OnLoadFinished += SG_OnLoadFinished; |
| | | SG.Open(fly); |
| | | |
| | | FrmTree tree = new FrmTree(); |
| | | tree = new FrmTree(); |
| | | tree.Show(this); |
| | | |
| | | string isTest = ConfigurationManager.AppSettings["isTest"]; |
| | | if ("1".Equals(isTest)) |
| | | { |
| | | tool = new FrmTool(this); |
| | | tool.Show(); |
| | | } |
| | | else |
| | | { |
| | | this.WindowState = FormWindowState.Maximized; |
| | | tree.WindowState = FormWindowState.Maximized; |
| | | } |
| | | |
| | | } |
| | | catch (Exception ex) |
| | |
| | | { |
| | | LogOut.Info("关闭程序."); |
| | | } |
| | | |
| | | protected override void DefWndProc(ref Message m) |
| | | { |
| | | switch (m.Msg) |
| | | { |
| | | case 0xc0: // 重置鼠标模式 |
| | | SG.Window.SetInputMode(0); |
| | | break; |
| | | case 0xc1: // 打开数据方案/打开显示场景 |
| | | SG.Command.Execute(1001, null); |
| | | break; |
| | | case 0xc2: // 保存数据方案/保存显示场景 |
| | | SG.Command.Execute(1003, null); |
| | | break; |
| | | case 0xc3: // 矢量数据(默认为*.shp) |
| | | SG.Command.Execute(1013, 5); |
| | | break; |
| | | case 0xc4: // 影像数据(默认为*.tif) |
| | | SG.Command.Execute(1014, 9); |
| | | break; |
| | | case 0xc5: // 地形数据(默认为*.tif) |
| | | SG.Command.Execute(1014, 26); |
| | | break; |
| | | case 0xc6: // 模型数据(*.osgb) |
| | | //SG.Command.Execute(2342, null); |
| | | string path = Path.Combine(ConfigurationManager.AppSettings["tePath"], "MeshLayerTool.exe"); |
| | | string args = " -RunApp TerraExplorer -RunConvertor -Mode ImportMeshLayer -Type osgb"; |
| | | ExecCmd(new List<string> { "taskkill /f /t /im MeshLayerTool.exe" }); |
| | | RunExe(path, args, false); |
| | | break; |
| | | case 0xc7: // 模型数据(*.obj) |
| | | SG.Command.Execute(1012, 13); |
| | | break; |
| | | |
| | | |
| | | |
| | | |
| | | case 0xd1: // 点量算 |
| | | SG.Command.Execute(1023, null); |
| | | break; |
| | | case 0xd2: // 距离量算 |
| | | SG.Command.Execute(2356, null); |
| | | break; |
| | | case 0xd3: // 面积量算 |
| | | if (SG.Command.IsChecked(2359, null)) |
| | | SG.Window.SetInputMode(0); |
| | | else |
| | | SG.Command.Execute(2359, null); |
| | | break; |
| | | |
| | | |
| | | /* |
| | | |
| | | |
| | | */ |
| | | default: |
| | | base.DefWndProc(ref m); |
| | | break; |
| | | } |
| | | } |
| | | |
| | | public void InvokeProc(int code) |
| | | { |
| | | Message m = new Message(); |
| | | m.Msg = code; |
| | | |
| | | this.DefWndProc(ref m); |
| | | } |
| | | |
| | | public void RunExe(string path, string args, bool noWindow = true) |
| | | { |
| | | Process p = new Process(); |
| | | p.StartInfo.FileName = path; |
| | | p.StartInfo.Arguments = args; |
| | | p.StartInfo.CreateNoWindow = noWindow; |
| | | p.StartInfo.UseShellExecute = false; |
| | | p.Start(); |
| | | } |
| | | |
| | | public static string ExecCmd(List<string> list) |
| | | { |
| | | string str = null; |
| | | Process p = null; |
| | | try |
| | | { |
| | | p = new Process(); |
| | | p.StartInfo.FileName = "cmd.exe"; |
| | | p.StartInfo.UseShellExecute = false; |
| | | p.StartInfo.CreateNoWindow = true; |
| | | p.StartInfo.RedirectStandardInput = true; |
| | | p.StartInfo.RedirectStandardOutput = true; |
| | | p.StartInfo.RedirectStandardError = true; |
| | | p.Start(); |
| | | |
| | | StreamWriter si = p.StandardInput; |
| | | StreamReader se = p.StandardError; |
| | | |
| | | LogOut.Info("cmd = " + string.Join(",", list)); |
| | | si.AutoFlush = true; |
| | | foreach (string cmd in list) |
| | | { |
| | | si.WriteLine(cmd); |
| | | } |
| | | si.WriteLine("exit"); |
| | | |
| | | str = se.ReadToEnd(); |
| | | se.Close(); |
| | | si.Close(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | LogOut.Error(ex.Message + "\r\n" + ex.StackTrace); |
| | | str = ex.Message; |
| | | } |
| | | finally |
| | | { |
| | | if (p != null) |
| | | { |
| | | p.Close(); |
| | | } |
| | | } |
| | | |
| | | return str; |
| | | } |
| | | } |
| | | } |