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;
|
using System.Text;
|
using System.Windows.Forms;
|
using TerraExplorerX;
|
using TETree;
|
using TEWin.CS;
|
|
namespace TEWin
|
{
|
public partial class FrmWin : Form
|
{
|
FrmTree tree;
|
|
FrmTool tool;
|
|
public SGWorld74 SG = null;
|
|
public static string StartupPath
|
{
|
get
|
{
|
return System.Windows.Forms.Application.StartupPath;
|
}
|
}
|
|
public FrmWin()
|
{
|
InitializeComponent();
|
this.Load += FrmWeb_Load;
|
this.FormClosed += FrmWin_FormClosed;
|
}
|
|
void FrmWeb_Load(object sender, EventArgs e)
|
{
|
try
|
{
|
LogOut.Info("开始运行..");
|
|
string fly = Path.Combine(StartupPath, "Resources\\sample.fly");
|
if (!File.Exists(fly))
|
{
|
LogOut.Error("Fly文件不存在:" + fly);
|
return;
|
}
|
|
SG = new SGWorld74();
|
SG.OnLoadFinished += SG_OnLoadFinished;
|
SG.Open(fly);
|
|
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.Error(ex.Message + "\r\n" + ex.StackTrace);
|
}
|
}
|
|
void SG_OnLoadFinished(bool bSuccess)
|
{
|
//
|
}
|
|
void FrmWin_FormClosed(object sender, FormClosedEventArgs e)
|
{
|
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,支持Excel)
|
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)
|
ExecCmd(new List<string> { "taskkill /f /t /im MeshLayerTool.exe" }); // SG.Command.Execute(2342, null);
|
RunExe(Path.Combine(ConfigurationManager.AppSettings["tePath"], "MeshLayerTool.exe"), " -RunApp TerraExplorer -RunConvertor -Mode ImportMeshLayer -Type osgb", false);
|
break;
|
case 0xc7: // 模型数据(*.obj)
|
SG.Command.Execute(1012, 13); break;
|
case 0xc8: // 基础编辑(选择对象)
|
SG.Command.Execute(1021, null); break;
|
case 0xc9: // 点量算(坐标+高程)
|
SG.Command.Execute(1023, null); break;
|
case 0xca: // 点量算(坡度+坡向)
|
//
|
break;
|
case 0xcb: // 距离量算
|
SG.Command.Execute(2356, null); break;
|
case 0xcc: // 面积量算
|
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;
|
}
|
}
|
}
|