添加项目文件。
This commit is contained in:
760
MetroGauges/WpfCurEqui.xaml.cs
Normal file
760
MetroGauges/WpfCurEqui.xaml.cs
Normal file
@@ -0,0 +1,760 @@
|
||||
using MaterialDesignThemes.Wpf;
|
||||
using MetroGauges.General;
|
||||
using MetroGauges.Model;
|
||||
using MetroGauges.ViewModel;
|
||||
using Microsoft.Win32;
|
||||
using NPOI.HSSF.UserModel;
|
||||
using NPOI.SS.UserModel;
|
||||
using NPOI.SS.Util;
|
||||
using NPOI.XSSF.UserModel;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Xml.Linq;
|
||||
|
||||
namespace MetroGauges
|
||||
{
|
||||
/// <summary>
|
||||
/// Curve_of_equipment_gauge.xaml 的交互逻辑
|
||||
/// </summary>
|
||||
public partial class WpfCurEqui
|
||||
{
|
||||
DgViewModel<CurEquiModel> vm;
|
||||
CurEquiModel curequi;
|
||||
private bool isCollasped;
|
||||
private bool IsCal=false;
|
||||
|
||||
public WpfCurEqui()
|
||||
{
|
||||
curequi = new CurEquiModel();
|
||||
vm = new DgViewModel<CurEquiModel>();
|
||||
InitializeComponent();
|
||||
L.Text = "22.1";
|
||||
a.Text = "15.7";
|
||||
v.Text = "65";
|
||||
hac.Text = "100";
|
||||
}
|
||||
|
||||
#region 窗体
|
||||
private void Window_Loaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
//dataGrid.ItemsSource = vm.Item;
|
||||
dataGrid.DataContext = vm;
|
||||
}
|
||||
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();
|
||||
}
|
||||
private void Window_SizeChanged(object sender, SizeChangedEventArgs e)
|
||||
{
|
||||
dataGrid.Width = this.ActualWidth - 20;
|
||||
if (isCollasped)
|
||||
{
|
||||
dataGrid.Height = this.ActualHeight - 129;
|
||||
}
|
||||
else
|
||||
{
|
||||
dataGrid.Height = this.ActualHeight - 253;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#endregion
|
||||
#region 参数设置
|
||||
private void CbbCx_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
||||
{
|
||||
switch (CbbCx.SelectedIndex)
|
||||
{
|
||||
case 0:
|
||||
CurEquiModel.nMetro = NMetro.A;
|
||||
break;
|
||||
case 1:
|
||||
CurEquiModel.nMetro = NMetro.B;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
IsCal = false;
|
||||
}
|
||||
|
||||
private void CbbDc_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
||||
{
|
||||
switch (CbbCx.SelectedIndex)
|
||||
{
|
||||
case 0:
|
||||
CurEquiModel.c_Bal = Ballast.Monolithic;
|
||||
|
||||
break;
|
||||
case 1:
|
||||
CurEquiModel.c_Bal = Ballast.Gravel;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
IsCal = false;
|
||||
}
|
||||
private void CbbFx_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
||||
{
|
||||
switch (CbbFx.SelectedIndex)
|
||||
{
|
||||
case 0:
|
||||
CurEquiModel.dir = HorizonDirection.Left;
|
||||
break;
|
||||
case 1:
|
||||
CurEquiModel.dir = HorizonDirection.Right;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
IsCal = false;
|
||||
}
|
||||
private void CbbVc_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
||||
{
|
||||
switch (CbbVc.SelectedIndex)
|
||||
{
|
||||
case 0:
|
||||
CurEquiModel.vc = Vertical.Convex;
|
||||
break;
|
||||
case 1:
|
||||
CurEquiModel.vc = Vertical.Concave;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
IsCal = false;
|
||||
}
|
||||
|
||||
//private void RbCx_Checked(object sender, RoutedEventArgs e)
|
||||
//{
|
||||
// RadioButton rb = sender as RadioButton;
|
||||
// if (rb == null)
|
||||
// {
|
||||
// return;
|
||||
// }
|
||||
|
||||
// CurEquiModel.nMetro = rb == rbA ? NMetro.A : NMetro.B;
|
||||
//}
|
||||
//private void RbDc_Checked(object sender, RoutedEventArgs e)
|
||||
//{
|
||||
// if (!(sender is RadioButton rb))
|
||||
// {
|
||||
// return;
|
||||
// }
|
||||
// CurEquiModel.c_bal = rb == rbZt ? Ballast.Monolithic : Ballast.Gravel;
|
||||
//}
|
||||
//private void RbFx_Checked(object sender, RoutedEventArgs e)
|
||||
//{
|
||||
// if (!(sender is RadioButton rb))
|
||||
// {
|
||||
// return;
|
||||
// }
|
||||
// CurEquiModel.dir = rb == rbZz ? HorizonDirection.Left : HorizonDirection.Right;
|
||||
//}
|
||||
#endregion
|
||||
#region 表格操作
|
||||
private void BtnDeleteRow_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (dataGrid.SelectedItem != null)
|
||||
{
|
||||
vm.Items.RemoveAt(dataGrid.SelectedIndex);
|
||||
}
|
||||
IsCal = false;
|
||||
}
|
||||
|
||||
private void BtnForwardRow_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
CurEquiModel selecteditem = (CurEquiModel)dataGrid.SelectedItem;
|
||||
var index = dataGrid.SelectedIndex;
|
||||
if (index > 0)
|
||||
{
|
||||
vm.Items.RemoveAt(index);
|
||||
vm.Items.Insert(index - 1, selecteditem);
|
||||
dataGrid.SelectedIndex = index - 1;
|
||||
}
|
||||
IsCal = false;
|
||||
}
|
||||
|
||||
private void BtnBackwardRow_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
CurEquiModel selecteditem = (CurEquiModel)dataGrid.SelectedItem;
|
||||
var index = dataGrid.SelectedIndex;
|
||||
if (index < vm.Items.Count - 1 && index != -1)
|
||||
{
|
||||
vm.Items.RemoveAt(index);
|
||||
vm.Items.Insert(index + 1, selecteditem);
|
||||
dataGrid.SelectedIndex = index + 1;
|
||||
}
|
||||
IsCal = false;
|
||||
}
|
||||
|
||||
private void BtnAddRowAfter_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (dataGrid.SelectedItem != null)
|
||||
{
|
||||
vm.Items.Insert(dataGrid.SelectedIndex + 1, new CurEquiModel());
|
||||
}
|
||||
IsCal = false;
|
||||
}
|
||||
|
||||
private void BtnAddRowBefore_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (dataGrid.SelectedItem != null)
|
||||
{
|
||||
vm.Items.Insert(dataGrid.SelectedIndex, new CurEquiModel());
|
||||
}
|
||||
IsCal = false;
|
||||
}
|
||||
|
||||
private void BtnAddRowLast_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
vm.Items.Add(new CurEquiModel()); IsCal = false;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 工具栏
|
||||
private void BtnOpen_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
OpenFileDialog ofd = new OpenFileDialog
|
||||
{
|
||||
Filter = "XML文件(*.xml)|*.xml",
|
||||
Title = "打开文件",
|
||||
RestoreDirectory = true
|
||||
};
|
||||
if (ofd.ShowDialog() == true && ofd.CheckFileExists == true)
|
||||
{
|
||||
//完整路径
|
||||
string file = ofd.FileName;
|
||||
vm.Items.Clear();
|
||||
XDocument document = XDocument.Load(file);
|
||||
XElement root = document.Root;
|
||||
if (root.FirstAttribute.Value == "直线设备限界点")
|
||||
{
|
||||
//获取根元素下的所有子元素
|
||||
IEnumerable<XElement> enumerable = root.Elements();
|
||||
foreach (var xe in enumerable)
|
||||
{
|
||||
CurEquiModel data = new CurEquiModel();
|
||||
data.StrPosition = xe.Name.LocalName;
|
||||
data.Name = (string)xe.Attribute("点号");
|
||||
data.X = (double)xe.Attribute("X");
|
||||
data.Y = (double)xe.Attribute("Y");
|
||||
vm.Items.Add(data);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void RbHeightValve_Checked(object sender, RoutedEventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void BtnCheck_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void BtnSave_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
SaveFileDialog sfd = new SaveFileDialog();
|
||||
sfd.Filter = "文本文件(*.xml)|*.xml";
|
||||
sfd.FileName = "直线设备限界数据(已定义点位)";
|
||||
sfd.DefaultExt = "xml";
|
||||
sfd.AddExtension = true;
|
||||
if (sfd.ShowDialog() == true)
|
||||
{
|
||||
XDocument document = new XDocument();
|
||||
XElement root = new XElement("控制点坐标");
|
||||
root.SetAttributeValue("车型", CurEquiModel.nMetro.GetDescription());
|
||||
root.SetAttributeValue("控制点类型", "直线设备限界点");
|
||||
for (int i = 0; i < vm.Items.Count; i++)
|
||||
{
|
||||
var dm = vm.Items[i];
|
||||
XElement childXml = new XElement(dm.Position.GetDescription());
|
||||
childXml.SetAttributeValue("点号", dm.Name);
|
||||
childXml.SetAttributeValue("X", dm.X);
|
||||
childXml.SetAttributeValue("Y", dm.Y);
|
||||
root.Add(childXml);
|
||||
|
||||
}
|
||||
root.Save(sfd.FileName);
|
||||
}
|
||||
}
|
||||
private void BtnSaveGauges_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
SaveFileDialog sfd = new SaveFileDialog();
|
||||
sfd.Filter = "文本文件(*.xml)|*.xml";
|
||||
sfd.FileName = "曲线设备限界数据";
|
||||
sfd.DefaultExt = "xml";
|
||||
sfd.AddExtension = true;
|
||||
if (sfd.ShowDialog() == true)
|
||||
{
|
||||
XDocument document = new XDocument();
|
||||
XElement root = new XElement("控制点坐标");
|
||||
root.SetAttributeValue("车型", CurEquiModel.nMetro.GetDescription());
|
||||
root.SetAttributeValue("控制点类型", "曲线设备限界点");
|
||||
for (int i = 0; i < vm.Items.Count; i++)
|
||||
{
|
||||
var dm = vm.Items[i];
|
||||
XElement childXml = new XElement(dm.Position.GetDescription());
|
||||
childXml.SetAttributeValue("点号", dm.Name);
|
||||
childXml.SetAttributeValue("X", dm.Xr);
|
||||
childXml.SetAttributeValue("Y", dm.Yr);
|
||||
root.Add(childXml);
|
||||
|
||||
}
|
||||
root.Save(sfd.FileName);
|
||||
}
|
||||
}
|
||||
|
||||
private void BtnExcel_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (vm.Items != null)
|
||||
{
|
||||
SaveFileDialog sfd = new SaveFileDialog();
|
||||
sfd.Filter = "Excel 工作簿(*.xlsx)|*.xlsx|Excel 97-2003 工作簿(*.xls)|*.xls";
|
||||
sfd.FileName = "曲线段设备限界";
|
||||
//默认保存格式
|
||||
sfd.DefaultExt = "xml";
|
||||
//自动添加扩展名
|
||||
sfd.AddExtension = true;
|
||||
if (sfd.ShowDialog() == true)
|
||||
{
|
||||
IWorkbook workbook;
|
||||
string fileExt = System.IO.Path.GetExtension(sfd.FileName).ToLower();
|
||||
if (fileExt == ".xlsx") { workbook = new XSSFWorkbook(); } else if (fileExt == ".xls") { workbook = new HSSFWorkbook(); } else { workbook = null; }
|
||||
if (workbook == null) { return; }
|
||||
//ISheet sheet = string.IsNullOrEmpty(dt.TableName) ? workbook.CreateSheet("车辆限界计算表") : workbook.CreateSheet(dt.TableName);
|
||||
ISheet sheet = workbook.CreateSheet("曲线段设备限界数据表");
|
||||
List<string> CommentList = new List<string>();
|
||||
CommentList.Add("控制点所在位置");
|
||||
CommentList.Add("点号");
|
||||
CommentList.Add("横坐标");
|
||||
CommentList.Add("纵坐标");
|
||||
CommentList.Add("直线设备限界横坐标");
|
||||
CommentList.Add("直线设备限界纵坐标");
|
||||
CommentList.Add("总横向偏移量");
|
||||
CommentList.Add("总竖向偏移量");
|
||||
ICellStyle style = workbook.CreateCellStyle();
|
||||
style.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;
|
||||
style.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;
|
||||
//表头
|
||||
IRow r0 = sheet.CreateRow(0);
|
||||
IDrawing draw = sheet.CreateDrawingPatriarch();
|
||||
ICreationHelper help = workbook.GetCreationHelper();
|
||||
|
||||
for (int i = 0; i < dataGrid.Columns.Count; i++)
|
||||
{
|
||||
IComment com = draw.CreateCellComment(draw.CreateAnchor(0, 0, 0, 0, 0, 3, 3, 4));
|
||||
//IRichTextString str;
|
||||
com.String = help.CreateRichTextString(CommentList[i]);
|
||||
ICell cell = r0.CreateCell(i);
|
||||
cell.SetCellValue(dataGrid.Columns[i].Header.ToString());
|
||||
cell.CellComment = com;
|
||||
cell.CellStyle = style;
|
||||
}
|
||||
for (int i = 0; i < vm.Items.Count; i++)
|
||||
{
|
||||
dataGrid.ScrollIntoView(dataGrid.Items[i]);
|
||||
dataGrid.UpdateLayout();
|
||||
IRow row = sheet.CreateRow(i + 1);
|
||||
for (int j = 0; j < dataGrid.Columns.Count; j++)
|
||||
{
|
||||
ICell cell = row.CreateCell(j);
|
||||
FrameworkElement cellvalue = dataGrid.Columns[j].GetCellContent(dataGrid.Items[i]);
|
||||
if (j == 0)
|
||||
{
|
||||
cell.SetCellValue((cellvalue as ComboBox).Text);
|
||||
}
|
||||
else
|
||||
{
|
||||
cell.SetCellValue((cellvalue as TextBlock).Text);
|
||||
}
|
||||
cell.CellStyle = style;
|
||||
sheet.AutoSizeColumn(j);
|
||||
}
|
||||
}
|
||||
dataGrid.ScrollIntoView(dataGrid.Items[0]);
|
||||
dataGrid.UpdateLayout();
|
||||
//转为字节数组
|
||||
MemoryStream stream = new MemoryStream();
|
||||
workbook.Write(stream);
|
||||
var buf = stream.ToArray();
|
||||
|
||||
//保存为Excel文件
|
||||
using (FileStream fs = new FileStream(sfd.FileName, FileMode.Create, FileAccess.Write))
|
||||
{
|
||||
fs.Write(buf, 0, buf.Length);
|
||||
fs.Flush();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void BtnPreview_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!IsCal)
|
||||
{
|
||||
MessageBox.Show("请先进行限界计算", "提示");
|
||||
return;
|
||||
}
|
||||
WpfPreview pre = new WpfPreview(vm);
|
||||
pre.ShowDialog();
|
||||
}
|
||||
private void BtnFCAD_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!IsCal)
|
||||
{
|
||||
MessageBox.Show("请先进行限界计算", "提示" );
|
||||
return;
|
||||
}
|
||||
ObservableCollection<CurEquiModel> othCoordPoints = new ObservableCollection<CurEquiModel>();
|
||||
ObservableCollection<CurEquiModel> pgCoordPoints = new ObservableCollection<CurEquiModel>();
|
||||
ObservableCollection<CurEquiModel> dm = vm.Items;
|
||||
for (int i = 0; i < dm.Count; i++)
|
||||
{
|
||||
if (dm[i].Position == PositionI.Pantograph)
|
||||
{
|
||||
pgCoordPoints.Add(dm[i]);
|
||||
}
|
||||
else
|
||||
{
|
||||
othCoordPoints.Add(dm[i]);
|
||||
}
|
||||
}
|
||||
if (pgCoordPoints.Count == 0 || othCoordPoints.Count == 0)
|
||||
{
|
||||
ParaSetBar.MessageQueue.Enqueue("数据不全");
|
||||
return;
|
||||
}
|
||||
CadHelper cadHelper = new CadHelper();
|
||||
|
||||
cadHelper.AddLayer("曲线设备限界", CadHelper.CYAN);
|
||||
DrawInitCAD(cadHelper, true, pgCoordPoints);
|
||||
DrawInitCAD(cadHelper, false, pgCoordPoints);
|
||||
DrawInitCAD(cadHelper, true, othCoordPoints);
|
||||
DrawInitCAD(cadHelper, false, othCoordPoints);
|
||||
|
||||
cadHelper.ZoomAll();
|
||||
}
|
||||
private void BtnBCAD_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
//for (int i = 0; i < dtAll.Rows.Count; i++)
|
||||
//{
|
||||
// double x = (double)dtAll.Rows[i][1];
|
||||
// double y = (double)dtAll.Rows[i][2];
|
||||
// DataRow dr;
|
||||
// dr = dtTransR.NewRow();
|
||||
// dr[0] = dtAll.Rows[i][0];
|
||||
// dr[1] = Math.Round(x * Math.Cos(CG.α()) - y * Math.Sin(CG.α()), 1, MidpointRounding.AwayFromZero);
|
||||
// dr[2] = Math.Round(y * Math.Cos(CG.α()) + x * Math.Sin(CG.α()), 1, MidpointRounding.AwayFromZero);
|
||||
// dtTransR.Rows.Add(dr);
|
||||
// //dataGrid1.DataContext = dtTransR;
|
||||
//}
|
||||
//for (int i = 0; i < dtAll.Rows.Count; i++)
|
||||
//{
|
||||
// double x = (double)dtAll.Rows[i][1];
|
||||
// double y = (double)dtAll.Rows[i][2];
|
||||
// DataRow dr;
|
||||
// dr = dtTransL.NewRow();
|
||||
// dr[0] = dtAll.Rows[i][0];
|
||||
// dr[1] = Math.Round(-x * Math.Cos(CG.α()) - y * Math.Sin(CG.α()), 1, MidpointRounding.AwayFromZero);
|
||||
// dr[2] = Math.Round(y * Math.Cos(CG.α()) - x * Math.Sin(CG.α()), 1, MidpointRounding.AwayFromZero);
|
||||
// dtTransL.Rows.Add(dr);
|
||||
//}
|
||||
if (!IsCal)
|
||||
{
|
||||
MessageBox.Show("请先进行限界计算", "提示");
|
||||
return;
|
||||
}
|
||||
ObservableCollection<CurEquiModel> othCoordPoints = new ObservableCollection<CurEquiModel>();
|
||||
ObservableCollection<CurEquiModel> pgCoordPoints = new ObservableCollection<CurEquiModel>();
|
||||
ObservableCollection<CurEquiModel> dm = vm.Items;
|
||||
for (int i = 0; i < dm.Count; i++)
|
||||
{
|
||||
if (dm[i].Position == PositionI.Pantograph)
|
||||
{
|
||||
pgCoordPoints.Add(dm[i]);
|
||||
}
|
||||
else
|
||||
{
|
||||
othCoordPoints.Add(dm[i]);
|
||||
}
|
||||
}
|
||||
if (pgCoordPoints.Count == 0 || othCoordPoints.Count == 0)
|
||||
{
|
||||
ParaSetBar.MessageQueue.Enqueue("数据不全");
|
||||
return;
|
||||
}
|
||||
CadHelper cadHelper = new CadHelper();
|
||||
|
||||
cadHelper.AddLayer("曲线设备限界", CadHelper.CYAN);
|
||||
List<string> groups = new List<string>();
|
||||
foreach (var item in pgCoordPoints)
|
||||
{
|
||||
var lastchar = item.Name.Substring(item.Name.Length - 1, 1);
|
||||
if (!groups.Contains(lastchar))
|
||||
{
|
||||
groups.Add(lastchar);
|
||||
}
|
||||
|
||||
}
|
||||
List<ObservableCollection<CurEquiModel>> listli = new List<ObservableCollection<CurEquiModel>>();
|
||||
for (int i = 0; i < groups.Count; i++)
|
||||
{
|
||||
List<CurEquiModel> list = new List<CurEquiModel>();
|
||||
for (int j = 0; j < pgCoordPoints.Count; j++)
|
||||
{
|
||||
if (pgCoordPoints[j].Name.EndsWith(groups[i]))
|
||||
{
|
||||
list.Add(pgCoordPoints[j]);
|
||||
}
|
||||
}
|
||||
var ordered = list.OrderBy(k => k.Name).ToList();
|
||||
listli.Add(new ObservableCollection<CurEquiModel>(ordered));
|
||||
}
|
||||
foreach (var item in listli)
|
||||
{
|
||||
DrawInitCAD(cadHelper, true, item);
|
||||
DrawInitCAD(cadHelper, false, item);
|
||||
}
|
||||
DrawInitCAD(cadHelper, true, othCoordPoints);
|
||||
DrawInitCAD(cadHelper, false, othCoordPoints);
|
||||
|
||||
cadHelper.ZoomAll();
|
||||
}
|
||||
|
||||
private void BtnTrans_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
private void DrawInitCAD(CadHelper cadHelper, bool isRight, ObservableCollection<CurEquiModel> models)
|
||||
{
|
||||
double[] PtSt = new double[2];
|
||||
double[] PtEn = new double[2];
|
||||
string Corder = models[0].Name;
|
||||
PtSt[0] = -models[0].Xr; PtSt[1] = models[0].Yr;
|
||||
if (isRight)
|
||||
{
|
||||
PtSt[0] = models[0].Xr;
|
||||
}
|
||||
for (int i = 1; i < models.Count; i++)
|
||||
{
|
||||
PtEn[0] = -models[i].Xr; PtEn[1] = models[i].Yr;
|
||||
if (isRight)
|
||||
{
|
||||
PtEn[0] = models[i].Xr;
|
||||
cadHelper.DrawText(Corder + "(" + PtSt[0] + "," + PtSt[1] + ")", PtSt);
|
||||
}
|
||||
cadHelper.DrawLine(PtSt, PtEn);
|
||||
|
||||
PtSt[0] = PtEn[0]; PtSt[1] = PtEn[1];
|
||||
|
||||
Corder = models[i].Name;
|
||||
if (models.Count - 1 == i && isRight)
|
||||
{
|
||||
cadHelper.DrawText(Corder + "(" + PtSt[0] + "," + PtSt[1] + ")", PtEn);
|
||||
}
|
||||
}
|
||||
}
|
||||
private void TbPara_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (TbPara.IsChecked == false)
|
||||
{
|
||||
isCollasped = true;
|
||||
StackPara.Visibility = Visibility.Collapsed;
|
||||
dataGrid.Height = this.ActualHeight - 129;
|
||||
}
|
||||
else
|
||||
{
|
||||
isCollasped = false;
|
||||
StackPara.Visibility = Visibility.Visible;
|
||||
dataGrid.Height = this.ActualHeight - 253;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private void Btnclear_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
vm.Items.Clear();
|
||||
IsCal=false;
|
||||
}
|
||||
|
||||
private void AddPoints(DataTable dt, XElement root, string child)
|
||||
{
|
||||
XElement childXml = new XElement(child);
|
||||
for (int i = 0; i < dt.Rows.Count; i++)
|
||||
{
|
||||
XElement point = new XElement("坐标点");
|
||||
//设置点节点的属性
|
||||
point.SetAttributeValue("点号", dt.Rows[i][0].ToString());
|
||||
point.SetAttributeValue("X", dt.Rows[i][1].ToString());
|
||||
point.SetAttributeValue("Y", dt.Rows[i][2].ToString());
|
||||
//将点的节点添加到上级节点中
|
||||
childXml.Add(point);
|
||||
}
|
||||
//将位置的节点添加到根节点
|
||||
root.Add(childXml);
|
||||
}
|
||||
//车体偏移量
|
||||
private void Add2CarDtPyl(double x, double y, DataRow dr1)
|
||||
{
|
||||
//dr1[0] = kineModel.T_a;
|
||||
//dr1[1] = kineModel.T_i;
|
||||
//dr1[2] = Cal.ΔX_Qa(y);
|
||||
//dr1[3] = Cal.ΔX_Qi(y);
|
||||
//dr1[4] = Cal.ΔY_Qa(x);
|
||||
//dr1[5] = Cal.ΔY_Qi(x);
|
||||
//dr1[6] = Cal.ΔX_ca();
|
||||
//dr1[7] = Cal.ΔX_ci();
|
||||
//dr1[8] = Cal.ΔX(y);
|
||||
//dr1[9] = Cal.ΔY(x);
|
||||
//dtPyl.Rows.Add(dr1);
|
||||
}
|
||||
//转向架偏移量
|
||||
private void Add2BogieDtPyl(double x, double y, DataRow dr1)
|
||||
{
|
||||
//dr1[0] = kineModel.T_ba;
|
||||
//dr1[1] = kineModel.T_bi;
|
||||
//dr1[2] = Cal.ΔX_Qa(y);
|
||||
//dr1[3] = Cal.ΔX_Qi(y);
|
||||
//dr1[4] = Cal.ΔY_Qa(x);
|
||||
//dr1[5] = Cal.ΔY_Qi(x);
|
||||
//dr1[6] = Cal.ΔX_cat();
|
||||
//dr1[7] = Cal.ΔX_cit();
|
||||
//dr1[8] = Cal.ΔX1(y);
|
||||
//dr1[9] = Cal.ΔY(x);
|
||||
//dtPyl.Rows.Add(dr1);
|
||||
}
|
||||
private void BtnCalc_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
//if (L.Text == "" || a.Text == "" || R.Text == ""|| v.Text == "" || hac.Text == "")
|
||||
//{
|
||||
// //ParaSetBar.HorizontalContentAlignment = System.Windows.HorizontalAlignment.Center;
|
||||
|
||||
// ParaSetBar.MessageQueue.Enqueue("请先设置参数");
|
||||
// return;
|
||||
//}
|
||||
//for (int i = 0; i < vm.Items.Count; i++)
|
||||
//{
|
||||
// CurEquiModel model = vm.Items[i];
|
||||
// switch (model.Position)
|
||||
// {
|
||||
// case PositionI.Pantograph:
|
||||
// break;
|
||||
// case PositionI.Body:
|
||||
// break;
|
||||
// case PositionI.BogieFrame:
|
||||
// break;
|
||||
// case PositionI.Unsprung:
|
||||
|
||||
// break;
|
||||
// case PositionI.Tread:
|
||||
|
||||
// break;
|
||||
// case PositionI.Rim:
|
||||
// break;
|
||||
// case PositionI.Collector:
|
||||
// break;
|
||||
// default:
|
||||
// break;
|
||||
// }
|
||||
//}
|
||||
IsCal = true;
|
||||
foreach (ColorZone cz in CbbWrap.Children)
|
||||
{
|
||||
if (cz == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
ComboBox c = (ComboBox)cz.Content;
|
||||
if (c != null)
|
||||
{
|
||||
if (c.SelectedIndex == -1)
|
||||
{
|
||||
ParaSetBar.MessageQueue.Enqueue("请先选择参数");
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
foreach (ColorZone cz in TbWrap.Children)
|
||||
{
|
||||
StackPanel s = (StackPanel)cz.Content;
|
||||
foreach (var c in s.Children)
|
||||
{
|
||||
if (c is TextBox)
|
||||
{
|
||||
TextBox t = (TextBox)c;
|
||||
if (t.Text == "")
|
||||
{
|
||||
ParaSetBar.MessageQueue.Enqueue("请先输入参数");
|
||||
|
||||
t.Focus();
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < vm.Items.Count; i++)
|
||||
{
|
||||
CurEquiModel model = vm.Items[i];
|
||||
switch (model.Position)
|
||||
{
|
||||
case PositionI.Body:
|
||||
model.ΔXr = model.ΔX;
|
||||
model.ΔYr = model.ΔY_jg;
|
||||
break;
|
||||
case PositionI.BogieFrame:
|
||||
model.ΔXr = model.ΔX_t;
|
||||
model.ΔYr = 0;
|
||||
break;
|
||||
case PositionI.INVAIL:
|
||||
break;
|
||||
}
|
||||
}
|
||||
dataGrid.CommitEdit();
|
||||
dataGrid.Items.Refresh();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//private async void DialogsBeforeExit(string filename)
|
||||
//{
|
||||
//MessageDialogResult result = await this.ShowMessageAsync(this.Title, "是否打开文件", MessageDialogStyle.AffirmativeAndNegative);
|
||||
//if (result == MessageDialogResult.Negative)
|
||||
//{
|
||||
// return;
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// Process.Start(filename);
|
||||
//}
|
||||
//}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user