Advertisement
Guest User

Untitled

a guest
Nov 18th, 2019
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.85 KB | None | 0 0
  1. private void EvaluateWord()
  2. {
  3. int r = 0;
  4. mBlockAddresses[(int)mCurAddress.Letter] = true;
  5. switch (mCurAddress.Letter)
  6. {
  7. case letters.X:
  8. mBlockAddresses[(int)letters.ANY] = true;
  9. mXpos = FormatAxis(mCurAddress.StringValue, mCurMachine.Precision);
  10. break;
  11. case letters.Y:
  12. mBlockAddresses[(int)letters.ANY] = true;
  13. mYpos = FormatAxis(mCurAddress.StringValue, mCurMachine.Precision);
  14. break;
  15. case letters.Z:
  16. mBlockAddresses[(int)letters.ANY] = true;
  17. mZpos = FormatAxis(mCurAddress.StringValue, mCurMachine.Precision);
  18. break;
  19. case letters.I:
  20. mBlockAddresses[(int)letters.ANY] = true;
  21. mI = FormatAxis(mCurAddress.StringValue, mCurMachine.Precision);
  22. if (mCurMachine.MachineType == MachineType.LATHEDIA)
  23. {
  24. if (mCurMachine.AbsArcCenter)
  25. {
  26. mI = mI / 2;
  27. }
  28. }
  29. break;
  30. case letters.J:
  31. mBlockAddresses[(int)letters.ANY] = true;
  32. mJ = FormatAxis(mCurAddress.StringValue, mCurMachine.Precision);
  33. break;
  34. case letters.K:
  35. mBlockAddresses[(int)letters.ANY] = true;
  36. mK = FormatAxis(mCurAddress.StringValue, mCurMachine.Precision);
  37. break;
  38. case letters.R:
  39. mBlockAddresses[(int)letters.ANY] = true;
  40. mRpoint = FormatAxis(mCurAddress.StringValue, mCurMachine.Precision);
  41. mArcRad = mRpoint;
  42. break;
  43. case letters.S:
  44. mBlockAddresses[(int)letters.ANY] = true;
  45. mSpeed = mCurAddress.Value;
  46. break;
  47. case letters.F:
  48. mBlockAddresses[(int)letters.ANY] = true;
  49. mFeed = mCurAddress.Value;
  50. break;
  51. case letters.T:
  52. mBlockAddresses[(int)letters.ANY] = true;
  53. mTool = mCurAddress.Value;
  54. break;
  55. default:
  56. if (mBlockAddresses[(int)mMotion.Rotary.Letter] == true)
  57. {
  58. mBlockAddresses[(int)letters.ANY] = true;
  59. mABC = FormatAxis(mCurAddress.StringValue, mCurMachine.RotPrecision) * 0.01745329f;
  60. //Convert to radians
  61. //check for -0
  62. if (mCurAddress.StringValue.StartsWith("-"))
  63. {
  64. mRotDir = -1;
  65. //CCW
  66. }
  67. break;
  68. }
  69.  
  70. //Absolute positioning
  71. if (mCurAddress.Matches(mMotion.Abs))
  72. {
  73. mBlockAddresses[(int)letters.ANY] = true;
  74. mAbsolute = true;
  75. }
  76. //Incremental positioning
  77. else if (mCurAddress.Matches(mMotion.Inc))
  78. {
  79. mBlockAddresses[(int)letters.ANY] = true;
  80. mAbsolute = false;
  81. }
  82. else if (mCurAddress.Matches(mMotion.Rapid))
  83. {
  84. mBlockAddresses[(int)letters.ANY] = true;
  85. mMode = Motion.RAPID;
  86. }
  87. else if (mCurAddress.Matches(mMotion.Linear))
  88. {
  89. mBlockAddresses[(int)letters.ANY] = true;
  90. mMode = Motion.LINE;
  91. }
  92. //Arc clockwise
  93. else if (mCurAddress.Matches(mMotion.CWArc))
  94. {
  95. mBlockAddresses[(int)letters.ANY] = true;
  96. if (mPlane == Motion.XZ_PLN)
  97. {
  98. mMode = Motion.CCARC;
  99. }
  100. else
  101. {
  102. mMode = Motion.CWARC;
  103. }
  104. }
  105. //Arc anti-clockwise
  106. else if (mCurAddress.Matches(mMotion.CCArc))
  107. {
  108. mBlockAddresses[(int)letters.ANY] = true;
  109. if (mPlane == Motion.XZ_PLN)
  110. {
  111. mMode = Motion.CWARC;
  112. }
  113. else
  114. {
  115. mMode = Motion.CCARC;
  116. }
  117. }
  118. //Drill cancel found
  119. else if (mCurAddress.Matches(mMotion.Drills[0]))
  120. {
  121. mBlockAddresses[(int)letters.ANY] = true;
  122. mMode = Motion.RAPID;
  123. if (mDrillReturnMode == Motion.I_PLN)
  124. {
  125. mZpos = mInitialZBeforeDrill;
  126. }
  127. else
  128. {
  129. mZpos = mRpoint;
  130. }
  131. }
  132. else if (mCurAddress.Matches(mMotion.ReturnLevel[0]))
  133. {
  134. mBlockAddresses[(int)letters.ANY] = true;
  135. mDrillReturnMode = Motion.I_PLN;
  136. if (mMode > Motion.CCARC)
  137. {
  138. mMode = (Motion)((int)Motion.HOLE_I + mDrillReturnMode);
  139. }
  140. }
  141. else if (mCurAddress.Matches(mMotion.ReturnLevel[1]))
  142. {
  143. mBlockAddresses[(int)letters.ANY] = true;
  144. mDrillReturnMode = Motion.R_PLN;
  145. if (mMode > Motion.CCARC)
  146. {
  147. mMode = (Motion)((int)Motion.HOLE_I + mDrillReturnMode);
  148. }
  149. }
  150. //Plane Change G17
  151. else if (mCurAddress.Matches(mMotion.Plane[0]))
  152. {
  153. mBlockAddresses[(int)letters.ANY] = true;
  154. mPlane = Motion.XY_PLN;
  155. }
  156. //Plane Change G18
  157. else if (mCurAddress.Matches(mMotion.Plane[1]))
  158. {
  159. mBlockAddresses[(int)letters.ANY] = true;
  160. mPlane = Motion.XZ_PLN;
  161. }
  162. //Plane Change G19
  163. else if (mCurAddress.Matches(mMotion.Plane[2]))
  164. {
  165. mPlane = Motion.YZ_PLN;
  166. mBlockAddresses[(int)letters.ANY] = true;
  167. }
  168. else
  169. {
  170. //Cycle through all 10 drilling cycles
  171. for (r = 1; r <= mMotion.Drills.Length - 1; r++)
  172. {
  173. //NOT an empty field
  174. if (mMotion.Drills[r].Value != 0.0f)
  175. {
  176. if (mCurAddress.Matches(mMotion.Drills[r]))
  177. {
  178. mMode = (Motion)((int)Motion.HOLE_I + mDrillReturnMode);
  179. //Drill cycle found
  180. if (mMode == Motion.HOLE_I)
  181. {
  182. mDrillClear = mInitialZBeforeDrill;
  183. }
  184. if (mMode == Motion.HOLE_R)
  185. {
  186. mDrillClear = mRpoint;
  187. }
  188. mBlockAddresses[(int)letters.ANY] = true;
  189. break; // TODO: might not be correct. Was : Exit For
  190. }
  191. }
  192. }
  193. }
  194.  
  195. break;
  196. }
  197. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement