From 93688872e96c6843b65f2fdaae7e3273ecb47ece Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Toan=20Tr=E1=BA=A7n?= Date: Sat, 4 Mar 2017 02:22:49 +0700 Subject: [PATCH] 2036 : Update draw Restriction --- sources/RoboforkApp/DesignerCanvas.cs | 102 +++++++++++++++++++------------ sources/RoboforkApp/RoboforkMenu.xaml.cs | 15 ++++- 2 files changed, 77 insertions(+), 40 deletions(-) diff --git a/sources/RoboforkApp/DesignerCanvas.cs b/sources/RoboforkApp/DesignerCanvas.cs index 9ddecfe..3ed2d13 100644 --- a/sources/RoboforkApp/DesignerCanvas.cs +++ b/sources/RoboforkApp/DesignerCanvas.cs @@ -255,6 +255,9 @@ namespace RoboforkApp LineGeometry lineGeometry = (LineGeometry)gGrpLine.Children[currentLine]; lineGeometry.EndPoint = LastPoint; + // Add node to curver postion + AddNode(lineGeometry.StartPoint, gGrpRedNode); + // Check end route if (IsEndRoute(_goalPoint, lineGeometry)) { @@ -263,27 +266,24 @@ namespace RoboforkApp return; } - // Add node to curver postion - AddNode(lineGeometry.StartPoint, gGrpRedNode); - // Draw curver line - DrawCurver((LineGeometry)gGrpLine.Children[currentLine - 1], (LineGeometry)gGrpLine.Children[currentLine]); + //DrawCurver((LineGeometry)gGrpLine.Children[currentLine - 1], (LineGeometry)gGrpLine.Children[currentLine]); } else { // Remove current line gGrpLine.Children.RemoveAt(currentLine); // Remove yellow node - if (gGrpYellowNode.Children.Count > 0) - { - gGrpYellowNode.Children.RemoveAt(gGrpYellowNode.Children.Count - 1); - gGrpYellowNode.Children.RemoveAt(gGrpYellowNode.Children.Count - 1); - } - // Remove curver line - if (gGrpCurverLine.Children.Count > 0) - { - gGrpCurverLine.Children.RemoveAt(gGrpCurverLine.Children.Count - 1); - } + //if (gGrpYellowNode.Children.Count > 0) + //{ + // gGrpYellowNode.Children.RemoveAt(gGrpYellowNode.Children.Count - 1); + // gGrpYellowNode.Children.RemoveAt(gGrpYellowNode.Children.Count - 1); + //} + //// Remove curver line + //if (gGrpCurverLine.Children.Count > 0) + //{ + // gGrpCurverLine.Children.RemoveAt(gGrpCurverLine.Children.Count - 1); + //} // Set end point to finish draw line LineGeometry lineGeometry = (LineGeometry)gGrpLine.Children[currentLine - 1]; @@ -297,13 +297,13 @@ namespace RoboforkApp return; } - // Re-draw cuver line - if (currentLine > 1) - { - if (IsCurverNode((LineGeometry)gGrpLine.Children[currentLine - 2] - , (LineGeometry)gGrpLine.Children[currentLine - 1])) - DrawCurver((LineGeometry)gGrpLine.Children[currentLine - 2], (LineGeometry)gGrpLine.Children[currentLine - 1]); - } + //// Re-draw cuver line + //if (currentLine > 1) + //{ + // if (IsCurverNode((LineGeometry)gGrpLine.Children[currentLine - 2] + // , (LineGeometry)gGrpLine.Children[currentLine - 1])) + // DrawCurver((LineGeometry)gGrpLine.Children[currentLine - 2], (LineGeometry)gGrpLine.Children[currentLine - 1]); + //} } // Draw new line @@ -774,22 +774,27 @@ namespace RoboforkApp { beforeLastLine.EndPoint = lastLine.EndPoint; gGrpLine.Children.RemoveAt(index); - // Remove yellow node - if (gGrpYellowNode.Children.Count > 0) - { - gGrpYellowNode.Children.RemoveAt(gGrpYellowNode.Children.Count - 1); - gGrpYellowNode.Children.RemoveAt(gGrpYellowNode.Children.Count - 1); - } - // Remove curver line - if (gGrpCurverLine.Children.Count > 0) - { - gGrpCurverLine.Children.RemoveAt(gGrpCurverLine.Children.Count - 1); - } + //// Remove yellow node + //if (gGrpYellowNode.Children.Count > 0) + //{ + // gGrpYellowNode.Children.RemoveAt(gGrpYellowNode.Children.Count - 1); + // gGrpYellowNode.Children.RemoveAt(gGrpYellowNode.Children.Count - 1); + //} + //// Remove curver line + //if (gGrpCurverLine.Children.Count > 0) + //{ + // gGrpCurverLine.Children.RemoveAt(gGrpCurverLine.Children.Count - 1); + //} index = index - 1; lastLine = (LineGeometry)gGrpLine.Children[index]; } } + if (index == gGrpRedNode.Children.Count + 1) + { + AddNode(lastLine.StartPoint, gGrpRedNode); + } + if (lastLine.EndPoint.X == centerX && lastLine.EndPoint.Y == centerY) return; @@ -820,11 +825,13 @@ namespace RoboforkApp // Draw curver line if (IsCurverNode(beforeLastLine, lastLine)) { - AddNode(beforeLastLine.EndPoint, gGrpRedNode); - if (GetDistance(lastLine.StartPoint, lastLine.EndPoint) > RADIUS_CURVER_LINE + 25) - { - DrawCurver(beforeLastLine, lastLine); - } + EllipseGeometry ellipseGeometry = (EllipseGeometry)gGrpRedNode.Children[gGrpRedNode.Children.Count - 1]; + ellipseGeometry.Center = lastLine.StartPoint; + // + //if (GetDistance(lastLine.StartPoint, lastLine.EndPoint) > RADIUS_CURVER_LINE + 25) + //{ + //DrawCurver(beforeLastLine, lastLine); + //} } } @@ -923,8 +930,15 @@ namespace RoboforkApp //DrawCurverLine(startPoint, endPoint, sweepDirection, gGrpCurverLine); // Add node to postion distance 1300mm - AddNode(startPoint, gGrpYellowNode); - AddNode(endPoint, gGrpYellowNode); + if (GetDistance(oldLine.StartPoint, oldLine.EndPoint) > RADIUS_CURVER_LINE) + { + AddNode(startPoint, gGrpYellowNode); + } + + if (GetDistance(newLine.StartPoint, newLine.EndPoint) > RADIUS_CURVER_LINE) + { + AddNode(endPoint, gGrpYellowNode); + } } /// @@ -1783,6 +1797,11 @@ namespace RoboforkApp public void CreateGoalPoint() { + if (isGoalDrawRoute) + { + return; + } + isStartDrawRoute = false; if (_goalPoint == null) { @@ -1798,6 +1817,11 @@ namespace RoboforkApp public void CreateStartPoint() { + if (isGoalDrawRoute) + { + return; + } + isStartDrawRoute = false; if (_startPoint == null) { diff --git a/sources/RoboforkApp/RoboforkMenu.xaml.cs b/sources/RoboforkApp/RoboforkMenu.xaml.cs index c6bbf5b..ff9b57b 100644 --- a/sources/RoboforkApp/RoboforkMenu.xaml.cs +++ b/sources/RoboforkApp/RoboforkMenu.xaml.cs @@ -42,6 +42,10 @@ namespace RoboforkApp string tag = ((TreeViewItem)sender).Tag.ToString(); switch (tag) { + case "SetupRestriction": + DoBeginSetupRestriction(); + break; + case "SetStart": DoBeginSetStart(); break; @@ -84,6 +88,10 @@ namespace RoboforkApp string tag = ((TreeViewItem)sender).Tag.ToString(); switch (tag) { + case "SetupRestriction": + //DoBeginSetStart(); + break; + case "SetStart": //DoBeginSetStart(); break; @@ -121,7 +129,12 @@ namespace RoboforkApp MyDesignerCanvas.Operation = DesignerCanvas.OperationState.DrawSetFreeNode; } - + private void DoBeginSetupRestriction() + { + MyDesignerCanvas.Init(); + MyDesignerCanvas.Operation = DesignerCanvas.OperationState.DrawObstract; + MyDesignerCanvas.mouseState = DesignerCanvas.MouseState.None; + } private void DoBeginSetStart() { -- 1.8.5.3