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 { /// /// ConstructionGauges.xaml 的交互逻辑 /// 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); //} } } }