agv 노드 정보 정리 세분화
This commit is contained in:
@@ -416,10 +416,10 @@ namespace AGVNavigationCore.Controls
|
||||
case NodeType.Normal:
|
||||
ghostBrush = new SolidBrush(Color.FromArgb(120, 100, 149, 237)); // 반투명 파란색
|
||||
break;
|
||||
case NodeType.Rotation:
|
||||
ghostBrush = new SolidBrush(Color.FromArgb(120, 255, 165, 0)); // 반투명 주황색
|
||||
break;
|
||||
case NodeType.Docking:
|
||||
case NodeType.Loader:
|
||||
case NodeType.UnLoader:
|
||||
case NodeType.Clearner:
|
||||
case NodeType.Buffer:
|
||||
ghostBrush = new SolidBrush(Color.FromArgb(120, 50, 205, 50)); // 반투명 초록색
|
||||
break;
|
||||
case NodeType.Charging:
|
||||
@@ -439,7 +439,10 @@ namespace AGVNavigationCore.Controls
|
||||
case NodeType.Image:
|
||||
DrawImageGhost(g);
|
||||
break;
|
||||
case NodeType.Docking:
|
||||
case NodeType.Loader:
|
||||
case NodeType.UnLoader:
|
||||
case NodeType.Clearner:
|
||||
case NodeType.Buffer:
|
||||
DrawPentagonGhost(g, ghostBrush);
|
||||
break;
|
||||
case NodeType.Charging:
|
||||
@@ -646,7 +649,10 @@ namespace AGVNavigationCore.Controls
|
||||
|
||||
switch (node.Type)
|
||||
{
|
||||
case NodeType.Docking:
|
||||
case NodeType.Loader:
|
||||
case NodeType.UnLoader:
|
||||
case NodeType.Clearner:
|
||||
case NodeType.Buffer:
|
||||
DrawPentagonNodeShape(g, node, brush);
|
||||
break;
|
||||
case NodeType.Charging:
|
||||
@@ -723,6 +729,13 @@ namespace AGVNavigationCore.Controls
|
||||
{
|
||||
DrawDuplicateRfidMarker(g, node);
|
||||
}
|
||||
|
||||
// CanCross 가능 노드 표시 (교차지점으로 사용 가능)
|
||||
if (node.DisableCross==true)
|
||||
{
|
||||
var crossRect = new Rectangle(rect.X - 3, rect.Y - 3, rect.Width + 6, rect.Height + 6);
|
||||
g.DrawEllipse(new Pen(Color.DeepSkyBlue, 3), crossRect);
|
||||
}
|
||||
}
|
||||
|
||||
private void DrawPentagonNodeShape(Graphics g, MapNode node, Brush brush)
|
||||
@@ -826,6 +839,21 @@ namespace AGVNavigationCore.Controls
|
||||
{
|
||||
DrawDuplicateRfidMarker(g, node);
|
||||
}
|
||||
|
||||
// CanCross 가능 노드 표시 (교차지점으로 사용 가능)
|
||||
if (node.DisableCross==false)
|
||||
{
|
||||
var crossPoints = new Point[5];
|
||||
for (int i = 0; i < 5; i++)
|
||||
{
|
||||
var angle = (Math.PI * 2 * i / 5) - Math.PI / 2;
|
||||
crossPoints[i] = new Point(
|
||||
(int)(center.X + (radius + 4) * Math.Cos(angle)),
|
||||
(int)(center.Y + (radius + 4) * Math.Sin(angle))
|
||||
);
|
||||
}
|
||||
g.DrawPolygon(new Pen(Color.Gold, 3), crossPoints);
|
||||
}
|
||||
}
|
||||
|
||||
private void DrawTriangleNodeShape(Graphics g, MapNode node, Brush brush)
|
||||
@@ -929,6 +957,21 @@ namespace AGVNavigationCore.Controls
|
||||
{
|
||||
DrawDuplicateRfidMarker(g, node);
|
||||
}
|
||||
|
||||
// CanCross 가능 노드 표시 (교차지점으로 사용 가능)
|
||||
if (node.DisableCross==false)
|
||||
{
|
||||
var crossPoints = new Point[3];
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
var angle = (Math.PI * 2 * i / 3) - Math.PI / 2;
|
||||
crossPoints[i] = new Point(
|
||||
(int)(center.X + (radius + 4) * Math.Cos(angle)),
|
||||
(int)(center.Y + (radius + 4) * Math.Sin(angle))
|
||||
);
|
||||
}
|
||||
g.DrawPolygon(new Pen(Color.Gold, 3), crossPoints);
|
||||
}
|
||||
}
|
||||
|
||||
private void DrawNodeLabel(Graphics g, MapNode node)
|
||||
|
||||
@@ -108,8 +108,10 @@ namespace AGVNavigationCore.Controls
|
||||
switch (hitNode.Type)
|
||||
{
|
||||
case NodeType.Normal:
|
||||
case NodeType.Rotation:
|
||||
case NodeType.Docking:
|
||||
case NodeType.Loader:
|
||||
case NodeType.UnLoader:
|
||||
case NodeType.Clearner:
|
||||
case NodeType.Buffer:
|
||||
case NodeType.Charging:
|
||||
HandleNormalNodeDoubleClick(hitNode);
|
||||
break;
|
||||
@@ -429,7 +431,10 @@ namespace AGVNavigationCore.Controls
|
||||
{
|
||||
switch (node.Type)
|
||||
{
|
||||
case NodeType.Docking:
|
||||
case NodeType.Loader:
|
||||
case NodeType.UnLoader:
|
||||
case NodeType.Clearner:
|
||||
case NodeType.Buffer:
|
||||
return IsPointInPentagon(point, node);
|
||||
case NodeType.Charging:
|
||||
return IsPointInTriangle(point, node);
|
||||
|
||||
Reference in New Issue
Block a user