Files
MetroGauges-Old/MetroGauges/WpfConst.xaml.cs
2026-02-23 17:02:55 +08:00

564 lines
21 KiB
C#

using MetroGauges.General;
using MetroGauges.Model;
using System;
using System.ComponentModel;
using System.Diagnostics;
using System.Text.RegularExpressions;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
namespace MetroGauges
{
/// <summary>
/// ConstructionGauges.xaml 的交互逻辑
/// </summary>
public partial class WpfConst
{
private ConstModel ConModel;
public WpfConst()
{
InitializeComponent();
SquGroup.Visibility = Visibility.Collapsed;
CirGroup.Visibility = Visibility.Collapsed;
UGroup.Visibility = Visibility.Collapsed;
ConModel = new ConstModel();
}
//禁止文本输入
private void previewTextInput(object sender, TextCompositionEventArgs e)
{
e.Handled = !IsTextAllowed(e.Text);
}
//禁用黏贴
private void TextBoxPasting(object sender, DataObjectPastingEventArgs e)
{
if (e.DataObject.GetDataPresent(typeof(String)))
{
String text = (String)e.DataObject.GetData(typeof(String));
if (!IsTextAllowed(text))
{
e.CancelCommand();
}
}
else
{
e.CancelCommand();
}
}
//只能输入数字
public static bool IsTextAllowed(string text)
{
Regex regex = new Regex("[^0-9.-]+");
return !regex.IsMatch(text);
}
//计算矩形隧道直线段
private void btnSLCal_Click(object sender, RoutedEventArgs e)
{
//var children = SquWP.Children;
//foreach (var item in children)
//{
// if (item is TextBox)
// {
// TextBox t = item as TextBox;
// if (t.Text.Equals(""))
// {
// //this.ShowMessageAsync("提示", "请输入计算所需参数" + t.Text);
// t.Focus();
// return;
// }
// }
//}
//if (Cal.nMetro == NMetro.A)
//{
// var h = h1h2.Children;
// foreach (var item in h)
// {
// if (item is TextBox)
// {
// TextBox t = item as TextBox;
// if (t.Text.Equals(""))
// {
// //this.ShowMessageAsync("提示", "请输入计算所需参数" + t.Text);
// t.Focus();
// return;
// }
// }
// }
// Cal.b_R = Convert.ToDouble(bR.Text); Cal.b_L = Convert.ToDouble(bL.Text);
// Cal.c = Convert.ToDouble(c.Text); Cal.X_s = Convert.ToDouble(Xs.Text);
// //Cal.h_1 = Convert.ToDouble(h1.Text); Cal.h_2 = Convert.ToDouble(h2.Text);
// Cal.h_3 = Convert.ToDouble(h3.Text);
//}
//else
//{
// var h_ = h_1h_2.Children;
// foreach (var item in h_)
// {
// if (item is TextBox)
// {
// TextBox t = item as TextBox;
// if (t.Text.Equals(""))
// {
// //this.ShowMessageAsync("提示", "请输入计算所需参数" + t.Text);
// t.Focus();
// return;
// }
// }
// }
// Cal.b_R = Convert.ToDouble(bR.Text); Cal.b_L = Convert.ToDouble(bL.Text);
// Cal.c = Convert.ToDouble(c.Text); Cal.X_s = Convert.ToDouble(Xs.Text);
// Cal._h_1 = Convert.ToDouble(h_1.Text); Cal._h_2 = Convert.ToDouble(h_2.Text);
// Cal.h_3 = Convert.ToDouble(h3.Text);
//}
//BR.Text = Convert.ToString(Cal.B_R); BL.Text = Convert.ToString(Cal.B_L);
//H.Text = Convert.ToString(Cal.H);
}
//计算矩形隧道曲线段
private void btnSCCal_Click(object sender, RoutedEventArgs e)
{
//var children = SquWP.Children;
//foreach (var item in children)
//{
// if (item is TextBox)
// {
// TextBox t = item as TextBox;
// if (t.Text.Equals(""))
// {
// //this.ShowMessageAsync("提示", "请输入计算所需参数" + t.Text);
// t.Focus();
// return;
// }
// }
//}
//if (Cal.nMetro == NMetro.A)
//{
// var h = h1h2.Children;
// foreach (var item in h)
// {
// if (item is TextBox)
// {
// TextBox t = item as TextBox;
// if (t.Text.Equals(""))
// {
// //this.ShowMessageAsync("提示", "请输入计算所需参数" + t.Text);
// t.Focus();
// return;
// }
// }
// }
// Cal.b_R = Convert.ToDouble(bR.Text); Cal.b_L = Convert.ToDouble(bL.Text); Cal.c = Convert.ToDouble(c.Text);
// //Cal.h_1 = Convert.ToDouble(h1.Text); Cal.h_2 = Convert.ToDouble(h2.Text); Cal.h_3 = Convert.ToDouble(h3.Text);
// Cal.X_kh = Convert.ToDouble(Xkh.Text); Cal.X_ki = Convert.ToDouble(Xki.Text);
// Cal.X_ka = Convert.ToDouble(Xka.Text); Cal.Y_kh = Convert.ToDouble(Ykh.Text);
// Cal.Y_ki = Convert.ToDouble(Yki.Text); Cal.Y_ka = Convert.ToDouble(Yka.Text);
//}
//else
//{
// var h_ = h_1h_2.Children;
// foreach (var item in h_)
// {
// if (item is TextBox)
// {
// TextBox t = item as TextBox;
// if (t.Text.Equals(""))
// {
// //this.ShowMessageAsync("提示", "请输入计算所需参数" + t.Text);
// t.Focus();
// return;
// }
// }
// }
// Cal.b_R = Convert.ToDouble(bR.Text); Cal.b_L = Convert.ToDouble(bL.Text); Cal.c = Convert.ToDouble(c.Text);
// //Cal.h_1 = Convert.ToDouble(h1.Text); Cal.h_2 = Convert.ToDouble(h2.Text); Cal.h_3 = Convert.ToDouble(h3.Text);
// Cal.X_kh = Convert.ToDouble(Xkh.Text); Cal.X_ki = Convert.ToDouble(Xki.Text);
// Cal.X_ka = Convert.ToDouble(Xka.Text); Cal.Y_kh = Convert.ToDouble(Ykh.Text);
// Cal.Y_ki = Convert.ToDouble(Yki.Text); Cal.Y_ka = Convert.ToDouble(Yka.Text);
//}
//Bi.Text = Convert.ToString(Cal.B_i()); Ba.Text = Convert.ToString(Cal.B_a());
//Bu.Text = Convert.ToString(Cal.B_u);
}
//输出矩形隧道直线段CAD
private void btnSLcad_Click(object sender, RoutedEventArgs e)
{
//var children = SLpanel.Children;
//foreach (var item in children)
//{
// if (item is TextBox)
// {
// TextBox t = item as TextBox;
// if (t.Text.Equals(""))
// {
// //this.ShowMessageAsync("提示", "请先进行计算" + t.Text);
// return;
// }
// }
//}
//CadHelper cadHelper = new CadHelper();
//cadHelper.AddLayer("矩形直线段建筑限界", CadHelper.CYAN);
//double[] P0 = new double[2];
//double[] P1 = new double[2];
//double[] P2 = new double[2];
//double[] P3 = new double[2];
//P0[0] = -Convert.ToDouble(BL.Text);
//P0[1] = -Convert.ToDouble(h3.Text);
//P1[0] = -Convert.ToDouble(BL.Text);
//P1[1] = Convert.ToDouble(H.Text);
//P2[0] = Convert.ToDouble(BR.Text);
//P2[1] = Convert.ToDouble(H.Text);
//P3[0] = Convert.ToDouble(BR.Text);
//P3[1] = -Convert.ToDouble(h3.Text);
//cadHelper.DrawRectang(P0, P1, P2, P3);
//cadHelper.ZoomAll();
}
//输出矩形隧道曲线段CAD
private void btnSCcad_Click(object sender, RoutedEventArgs e)
{
//var children = SCpanel.Children;
//foreach (var item in children)
//{
// if (item is TextBox)
// {
// TextBox t = item as TextBox;
// if (t.Text.Equals(""))
// {
// //this.ShowMessageAsync("提示", "请先进行计算" + t.Text);
// return;
// }
// }
//}
//if (Cal.dir == Direction.Left)
//{
// CadHelper cadHelper = new CadHelper();
// cadHelper.AddLayer("矩形曲线段建筑限界", CadHelper.CYAN);
// double[] P0 = new double[2];
// double[] P1 = new double[2];
// double[] P2 = new double[2];
// double[] P3 = new double[2];
// P0[0] = -Convert.ToDouble(Bi.Text);
// P0[1] = -Convert.ToDouble(h3.Text);
// P1[0] = -Convert.ToDouble(Bi.Text);
// P1[1] = Convert.ToDouble(Bu.Text) - Convert.ToDouble(h3.Text);
// P2[0] = Convert.ToDouble(Ba.Text);
// P2[1] = Convert.ToDouble(Bu.Text) - Convert.ToDouble(h3.Text);
// P3[0] = Convert.ToDouble(Ba.Text);
// P3[1] = -Convert.ToDouble(h3.Text);
// cadHelper.DrawRectang(P0, P1, P2, P3);
// cadHelper.ZoomAll();
//}
//else
//{
// CadHelper cadHelper = new CadHelper();
// cadHelper.AddLayer("矩形曲线段建筑限界", CadHelper.CYAN);
// double[] P0 = new double[2];
// double[] P1 = new double[2];
// double[] P2 = new double[2];
// double[] P3 = new double[2];
// P0[0] = -Convert.ToDouble(Ba.Text);
// P0[1] = -Convert.ToDouble(h3.Text);
// P1[0] = -Convert.ToDouble(Ba.Text);
// P1[1] = Convert.ToDouble(Bu.Text) - Convert.ToDouble(h3.Text);
// P2[0] = Convert.ToDouble(Bi.Text);
// P2[1] = Convert.ToDouble(Bu.Text) - Convert.ToDouble(h3.Text);
// P3[0] = Convert.ToDouble(Bi.Text);
// P3[1] = -Convert.ToDouble(h3.Text);
// cadHelper.DrawRectang(P0, P1, P2, P3);
// cadHelper.ZoomAll();
//}
}
private void btnCiCCal_Click(object sender, RoutedEventArgs e)
{
//var children = CirWP.Children;
//foreach (var item in children)
//{
// if (item is TextBox)
// {
// TextBox t = item as TextBox;
// if (t.Text.Equals(""))
// {
// //this.ShowMessageAsync("提示", "请输入计算所需参数" + t.Text);
// t.Focus();
// return;
// }
// }
//}
//Cal.h0 = Convert.ToDouble(h0.Text); Cal.hac = Convert.ToDouble(hac1.Text);
////x_.Text = Convert.ToString(Cal._x); y_.Text = Convert.ToString(Cal._y);
}
//输出圆形隧道直线段CAD
private void btnCLCad_Click(object sender, RoutedEventArgs e)
{
//var children = CirWP.Children;
//foreach (var item in children)
//{
// if (item is TextBox)
// {
// TextBox t = item as TextBox;
// if (t.Text.Equals(""))
// {
// //this.ShowMessageAsync("提示", "请输入参数" + t.Text);
// return;
// }
// }
//}
//CadHelper cadHelper = new CadHelper();
//cadHelper.AddLayer("圆形直线段建筑限界", CadHelper.CYAN);
//double[] C = new double[2];
//C[0] = 0.0;
//C[1] = Convert.ToDouble(h0.Text) + Convert.ToDouble(h3.Text);
//int Rs = Convert.ToInt16(R.Text);
//cadHelper.DrawCircle(C, Rs);
//cadHelper.ZoomAll();
}
//输出圆形隧道曲线段CAD
private void btnCCCad_Click(object sender, RoutedEventArgs e)
{
//var children = CiWP.Children;
//foreach (var item in children)
//{
// if (item is TextBox)
// {
// TextBox t = item as TextBox;
// if (t.Text.Equals(""))
// {
// //this.ShowMessageAsync("提示", "请先进行计算" + t.Text);
// return;
// }
// }
//}
//CadHelper cadHelper = new CadHelper();
//cadHelper.AddLayer("圆形曲线段建筑限界", CadHelper.CYAN);
//double[] C = new double[2];
//C[0] = Convert.ToDouble(x_.Text);
//C[1] = Convert.ToDouble(h0.Text) + Convert.ToDouble(h3.Text);
//int Rs = Convert.ToInt16(R.Text);
//cadHelper.DrawCircle(C, Rs);
//cadHelper.ZoomAll();
}
private void btnHCCCal_Click(object sender, RoutedEventArgs e)
{
//var children = UWP.Children;
//foreach (var item in children)
//{
// if (item is TextBox)
// {
// TextBox t = item as TextBox;
// if (t.Text.Equals(""))
// {
// //this.ShowMessageAsync("提示", "请输入计算所需参数" + t.Text);
// t.Focus();
// return;
// }
// }
//}
//Cal.h0 = Convert.ToDouble(h01.Text); Cal.hac = Convert.ToDouble(hac2.Text);
////x_1.Text = Convert.ToString(Cal._x); y_1.Text = Convert.ToString(Cal._y);
}
private void Help_Click(object sender, RoutedEventArgs e)
{
Process.Start(".\\HelpFile.pdf");
}
#region
private void Window_Loaded(object sender, RoutedEventArgs e)
{
ControlContainer.DataContext = ConModel;
//dataGrid.ItemsSource = vm.Item;
}
private void WindowMinimize_Click(object sender, RoutedEventArgs e)
{
this.WindowState = WindowState.Minimized;
}
private void WindowClose_Click(object sender, RoutedEventArgs e)
{
Hide();
}
private void Zone_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
DragMove();
}
private void BtnPalette_Click(object sender, RoutedEventArgs e)
{
WpfPalette colorset = new WpfPalette();
colorset.ShowDialog();
}
#endregion
private void ChooseResult(int result)
{
switch (result)
{
case 0:
h1h2.Visibility = Visibility.Collapsed;
h1_h2.Visibility = Visibility.Visible;
Hz.Visibility = Visibility.Collapsed;
_Hz.Visibility = Visibility.Visible;
break;
case 1:
h1h2.Visibility = Visibility.Visible;
h1_h2.Visibility = Visibility.Collapsed;
Hz.Visibility = Visibility.Visible;
_Hz.Visibility = Visibility.Collapsed;
break;
}
}
private void CbbCx_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
switch (CbbCx.SelectedIndex)
{
case 0:
ConstModel.dMetro = DMetro.A1;
ChooseResult(0);
break;
case 1:
ConstModel.dMetro = DMetro.A2;
ChooseResult(1);
break;
case 2:
ConstModel.dMetro = DMetro.B1;
ChooseResult(0);
break;
case 3:
ConstModel.dMetro = DMetro.B2;
ChooseResult(1);
break;
default:
break;
}
}
private void CbbCg_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
switch (CbbCg.SelectedIndex)
{
case 0:
ConstModel.seType = SuperelevationSet.Full;
break;
case 1:
ConstModel.seType = SuperelevationSet.Semi;
break;
default:
break;
}
}
private void CbbFx_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
switch (CbbFx.SelectedIndex)
{
case 0:
ConstModel.dir = HorizonDirection.Left;
break;
case 1:
ConstModel.dir = HorizonDirection.Right;
break;
default:
break;
}
}
private void BtnPreview_Click(object sender, RoutedEventArgs e)
{
}
private void BtnCalc_Click(object sender, RoutedEventArgs e)
{
//ConstModel x = ConModel;
switch (CbbTunnelType.SelectedIndex)
{
case 0:
B_i.Text = ConModel.B_i.ToString();
B_a.Text = ConModel.B_a.ToString();
B_u.Text = ConModel.B_u.ToString();
B_R.Text = ConModel.B_R.ToString();
B_L.Text = ConModel.B_L.ToString();
H.Text = ConModel.H.ToString();
_H.Text = ConModel._H.ToString();
break;
case 1:
x.Text = ConModel._x.ToString();
y.Text = ConModel._y.ToString();
break;
case 2:
_x.Text = ConModel._x.ToString();
_y.Text = ConModel._y.ToString();
break;
default:
break;
}
}
private void BtnCAD_Click(object sender, RoutedEventArgs e)
{
}
private void CbbTunnelType_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
switch (CbbTunnelType.SelectedIndex)
{
case 0:
SquGroup.Visibility = Visibility.Visible;
CirGroup.Visibility = Visibility.Collapsed;
UGroup.Visibility = Visibility.Collapsed;
break;
case 1:
SquGroup.Visibility = Visibility.Collapsed;
CirGroup.Visibility = Visibility.Visible;
UGroup.Visibility = Visibility.Collapsed;
break;
case 2:
SquGroup.Visibility = Visibility.Collapsed;
CirGroup.Visibility = Visibility.Collapsed;
UGroup.Visibility = Visibility.Visible;
break;
default:
break;
}
//ControlContainer.Children.Clear();
//if (CbbTunnelType.SelectedIndex == 0)
//{
// Controls.RectangleTunnel ct = new Controls.RectangleTunnel();
// ControlContainer.Children.Add(ct);
//}
//else if (CbbTunnelType.SelectedIndex == 1)
//{
// Controls.CircleTunnel ct=new Controls.CircleTunnel();
// ControlContainer.Children.Add(ct);
//}
//else if (CbbTunnelType.SelectedIndex == 2)
//{
// Controls.U_shapedTunnel ct = new Controls.U_shapedTunnel();
// ControlContainer.Children.Add(ct);
//}
}
}
}