PlcPointParams.xaml.cs 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. using Cognex.VisionPro;
  2. using Cognex.VisionPro.Dimensioning;
  3. using NPOI.SS.Formula.Functions;
  4. using OxyPlot;
  5. using System;
  6. using System.Windows.Controls;
  7. using TeamAAS_VP.ViewModels.Product;
  8. namespace TeamAAS_VP.Views.Product
  9. {
  10. /// <summary>
  11. /// Interaction logic for PlcPointParams
  12. /// </summary>
  13. public partial class PlcPointParams : UserControl
  14. {
  15. PlcPointParamsViewModel VM;
  16. public PlcPointParams()
  17. {
  18. InitializeComponent();
  19. VM = DataContext as PlcPointParamsViewModel;
  20. VM.PropertyChanged += VM_PropertyChanged;
  21. VM.PropertyChanged += Vm_SelectedIndexChanged;
  22. // initialize visibility
  23. try
  24. {
  25. if (VM != null && colProcedure != null && colIsUse!=null)
  26. colProcedure.Visibility = VM.SelectedIndex == 3 ? System.Windows.Visibility.Visible : System.Windows.Visibility.Collapsed;
  27. colIsUse.Visibility = VM.SelectedIndex == 3 ? System.Windows.Visibility.Visible : System.Windows.Visibility.Collapsed;
  28. }
  29. catch { }
  30. this.display.HorizontalScrollBar = false;
  31. this.display.VerticalScrollBar = false;
  32. this.display.AutoFit = true;
  33. this.display.BackColor = System.Drawing.SystemColors.ActiveCaption;
  34. }
  35. private void Vm_SelectedIndexChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
  36. {
  37. if (e.PropertyName == nameof(PlcPointParamsViewModel.SelectedIndex))
  38. {
  39. try
  40. {
  41. var visible = VM.SelectedIndex == 3|| VM.SelectedIndex == 5 ? System.Windows.Visibility.Visible : System.Windows.Visibility.Collapsed;
  42. var Usevisible = VM.SelectedIndex == 3 || VM.SelectedIndex == 4 || VM.SelectedIndex == 5 ? System.Windows.Visibility.Visible : System.Windows.Visibility.Collapsed;
  43. var Torque = VM.SelectedIndex == 7 || VM.SelectedIndex == 8 ? System.Windows.Visibility.Collapsed: System.Windows.Visibility.Visible;
  44. var Feeder = VM.SelectedIndex == 7 || VM.SelectedIndex == 8 ? System.Windows.Visibility.Collapsed : System.Windows.Visibility.Visible;
  45. var ScrewDrive = VM.SelectedIndex == 7 ? System.Windows.Visibility.Collapsed : System.Windows.Visibility.Visible;
  46. this.Dispatcher.BeginInvoke(new Action(() =>
  47. {
  48. if (colProcedure != null)
  49. colProcedure.Visibility = visible;
  50. if (colIsUse != null)
  51. colIsUse.Visibility = Usevisible;
  52. if (colTorque != null)
  53. colTorque.Visibility = Torque;
  54. if (colFeeder != null)
  55. colFeeder.Visibility = Feeder;
  56. if (colScrewDrive != null)
  57. colScrewDrive.Visibility = ScrewDrive;
  58. if (VM.SelectedIndex == 7)
  59. {
  60. colPosX.Visibility = System.Windows.Visibility.Visible;
  61. colPosY.Visibility = System.Windows.Visibility.Visible;
  62. colPosZ1.Visibility = System.Windows.Visibility.Visible;
  63. colPosZ2.Visibility = System.Windows.Visibility.Visible;
  64. colPosU.Visibility = System.Windows.Visibility.Collapsed;
  65. colPosR.Visibility = System.Windows.Visibility.Collapsed;
  66. colSpeedX.Visibility = System.Windows.Visibility.Visible;
  67. colSpeedY.Visibility = System.Windows.Visibility.Visible;
  68. colSpeedZ1.Visibility = System.Windows.Visibility.Visible;
  69. colSpeedZ2.Visibility = System.Windows.Visibility.Visible;
  70. colSpeedU.Visibility = System.Windows.Visibility.Collapsed;
  71. colSpeedR.Visibility = System.Windows.Visibility.Collapsed;
  72. }
  73. else if(VM.SelectedIndex == 8)
  74. {
  75. colPosX.Visibility = System.Windows.Visibility.Collapsed;
  76. colPosY.Visibility = System.Windows.Visibility.Collapsed;
  77. colPosZ1.Visibility = System.Windows.Visibility.Collapsed;
  78. colPosZ2.Visibility = System.Windows.Visibility.Collapsed;
  79. colPosU.Visibility = System.Windows.Visibility.Visible;
  80. colPosR.Visibility = System.Windows.Visibility.Visible;
  81. colSpeedX.Visibility = System.Windows.Visibility.Collapsed;
  82. colSpeedY.Visibility = System.Windows.Visibility.Collapsed;
  83. colSpeedZ1.Visibility = System.Windows.Visibility.Collapsed;
  84. colSpeedZ2.Visibility = System.Windows.Visibility.Collapsed;
  85. colSpeedU.Visibility = System.Windows.Visibility.Visible;
  86. colSpeedR.Visibility = System.Windows.Visibility.Visible;
  87. }
  88. else
  89. {
  90. colPosX.Visibility = System.Windows.Visibility.Visible;
  91. colPosY.Visibility = System.Windows.Visibility.Visible;
  92. colPosZ1.Visibility = System.Windows.Visibility.Visible;
  93. colPosZ2.Visibility = System.Windows.Visibility.Visible;
  94. colPosU.Visibility = System.Windows.Visibility.Visible;
  95. colPosR.Visibility = System.Windows.Visibility.Visible;
  96. colSpeedX.Visibility = System.Windows.Visibility.Visible;
  97. colSpeedY.Visibility = System.Windows.Visibility.Visible;
  98. colSpeedZ1.Visibility = System.Windows.Visibility.Visible;
  99. colSpeedZ2.Visibility = System.Windows.Visibility.Visible;
  100. colSpeedU.Visibility = System.Windows.Visibility.Visible;
  101. colSpeedR.Visibility = System.Windows.Visibility.Visible;
  102. }
  103. }));
  104. }
  105. catch { }
  106. }
  107. }
  108. private void ProcedureCombo_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
  109. {
  110. try
  111. {
  112. var combo = sender as System.Windows.Controls.ComboBox;
  113. if (combo == null) return;
  114. var proc = combo.SelectedItem as TeamAAS_VP.Models.ProcedureModel;
  115. var point = combo.DataContext as TeamAAS_VP.Models.PLC.PlcPoint;
  116. if (point != null && proc != null)
  117. {
  118. // SelectedValue binding already sets VisionProcessID; sync name
  119. point.VisionProcessName = proc.Name;
  120. }
  121. }
  122. catch { }
  123. }
  124. private int _imageWidth;
  125. private int _imageHeight;
  126. private void VM_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
  127. {
  128. if (e.PropertyName == "Image")
  129. {
  130. if (this.display.Image==null)
  131. {
  132. this.display.Image = VM.Image;
  133. //图像中心点坐标
  134. _imageWidth= this.display.Image.Width;
  135. _imageHeight= this.display.Image.Height;
  136. CogGraphicCollection graphic = new CogGraphicCollection();
  137. CogCreateLineTool line1 = new CogCreateLineTool();
  138. CogCreateLineTool line2 = new CogCreateLineTool();
  139. line1.InputImage = this.display.Image;
  140. line2.InputImage = this.display.Image;
  141. line1.Line.X = _imageWidth / 2;
  142. line1.Line.Y = _imageHeight / 2;
  143. line1.Line.Rotation = 0;
  144. line2.Line.X = _imageWidth / 2;
  145. line2.Line.Y = _imageHeight / 2;
  146. line2.Line.Rotation = Math.PI / 180 * 90;
  147. line1.Run();
  148. line2.Run();
  149. graphic.Add(line1.GetOutputLine());
  150. graphic.Add(line2.GetOutputLine());
  151. this.display.StaticGraphics.Clear();
  152. this.display.StaticGraphics.AddList(graphic, "");
  153. }
  154. else
  155. {
  156. this.display.Image = VM.Image;
  157. //如果图像的长宽发生变化,则重新绘制十字线
  158. if (_imageWidth!= this.display.Image.Width|| _imageHeight!= this.display.Image.Height)
  159. {
  160. _imageWidth = this.display.Image.Width;
  161. _imageHeight = this.display.Image.Height;
  162. CogGraphicCollection graphic = new CogGraphicCollection();
  163. CogCreateLineTool line1 = new CogCreateLineTool();
  164. CogCreateLineTool line2 = new CogCreateLineTool();
  165. line1.InputImage = this.display.Image;
  166. line2.InputImage = this.display.Image;
  167. line1.Line.X = _imageWidth / 2;
  168. line1.Line.Y = _imageHeight / 2;
  169. line1.Line.Rotation = 0;
  170. line2.Line.X = _imageWidth / 2;
  171. line2.Line.Y = _imageHeight / 2;
  172. line2.Line.Rotation = Math.PI / 180 * 90;
  173. line1.Run();
  174. line2.Run();
  175. graphic.Add(line1.GetOutputLine());
  176. graphic.Add(line2.GetOutputLine());
  177. this.display.StaticGraphics.Clear();
  178. this.display.StaticGraphics.AddList(graphic, "");
  179. }
  180. }
  181. }
  182. }
  183. }
  184. }