管道基础大数据平台系统开发-【CS】-ExportMap
13693261870
2024-01-02 137e1aba5c31b24df51d801814c413c752c0d637
TEWin/FrmWin.cs
@@ -1,7 +1,9 @@
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;
@@ -15,6 +17,10 @@
{
    public partial class FrmWin : Form
    {
        FrmTree tree;
        FrmTool tool;
        public SGWorld74 SG = null;
        public static string StartupPath
@@ -49,8 +55,20 @@
                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)
@@ -68,5 +86,129 @@
        {
            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;
        }
    }
}