Exemplo n.º 1
0
        /// <summary>
        /// 清理无任务小车锁定的方向信息
        /// </summary>
        static void ClearPointDirection()
        {
            //如果被Agv锁的点,不在AGV的路径中,则移除。

            List <AgvPoint> listAgvPoint = new List <AgvPoint>();

            foreach (Agv agv in App.AgvList)
            {
                if (agv.sTaskList.Count != 0)
                {
                    foreach (PathPoint pp in agv.sTaskList[0].pathList)
                    {
                        listAgvPoint.Add(new AgvPoint(agv.agvNo, pp.point));
                    }
                }
            }

            List <Point> listPointDirectionLock = App.pointList.Where(
                a => a.listTmpDirection.Count != 0).ToList();

            foreach (Point point in listPointDirectionLock)
            {
                for (int i = 0; i < point.listTmpDirection.Count; i++)
                {
                    TmpDirection td = point.listTmpDirection[i];

                    bool isExists = listAgvPoint.Exists(a => a.agv == td.agvNo && a.point == point);
                    if (!isExists)
                    {
                        point.listTmpDirection.RemoveAll(a => a.agvNo == td.agvNo);
                    }
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// 锁定路径方向
        /// </summary>
        /// <param name="Path"></param>
        public static void OriLock(List <PathPoint> Path, Agv agv)
        {
            //终点不比较
            for (int i = 0; i < Path.Count - 1; i++)
            {
                Point point     = Path[i].point;
                Point nextPoint = Path[i + 1].point;
                if (point == nextPoint)
                {
                    continue;
                }

                AStar aStart    = new AStar();
                int   direction = aStart.GetDircition(nextPoint, point);

                TmpDirection td = new TmpDirection();
                td.direction = direction;
                td.agvNo     = agv.agvNo;
                point.listTmpDirection.Add(td);
            }
        }