private void refreshVehicleLoaction(uctlNewVehicle vh, double sec_dis, sc.ProtocolFormat.OHTMessage.DriveDirction driveDirction)
        {
            //if (driveDirction == sc.ProtocolFormat.OHTMessage.DriveDirction.DriveDirReverse)
            //{
            //    if (RealDistance >= sec_dis)//確保不會一減 ,就變負的
            //        sec_dis = RealDistance - sec_dis;
            //    else
            //        sec_dis = 0;
            //}
            double distance_scale = 1;
            double distanceTemp   = 0;

            if (RealDistance > 10)
            {
                distance_scale = sec_dis / RealDistance;
            }
            else
            {
            }
            distanceTemp = Distance * distance_scale;

            int railInterval = 0;


            uctlRail matchRail        = findTheMatchingRail((int)distanceTemp, out railInterval);
            int      railInterval_Pix = (int)BCUtility.RealLengthToPixelsWidthByScale((double)railInterval);

            //int Location_X = 0;
            //int Location_Y = 0;

            KeyValuePair <uctlRail, E_RAIL_DIR> keyValuePairTemp = uctlRails.Where(keyValue => keyValue.Key == matchRail).SingleOrDefault();

            if (keyValuePairTemp.Equals(default(KeyValuePair <uctlRail, E_RAIL_DIR>)))
            {
                return;
            }
            E_RAIL_DIR railDIR = keyValuePairTemp.Value;

            //switch (RailDircetion)
            switch (railDIR)
            {
            case E_RAIL_DIR.F:
                WalkingForward(vh, distance_scale, matchRail, railInterval_Pix);
                break;

            case E_RAIL_DIR.R:
                ReverseWalking(vh, distance_scale, matchRail, railInterval_Pix);
                break;
            }
        }
예제 #2
0
        public GroupRails(string section_id, double real_sec_distance, E_RAIL_DIR rail_dir, string seg_num, E_RAIL_DIR seg_dir)
        {
            Section_ID   = section_id;
            RealDistance = real_sec_distance;

            RailDircetion = rail_dir;

            Segment_Num  = seg_num;
            SegDircetion = seg_dir;

            //uctlRails = new List<uctlRail>();
            uctlRails = new List <KeyValuePair <uctlRail, E_RAIL_DIR> >();
            m_pPoints = new PointObject[2];
        }
        private void refreshVehicleLoaction(uctlVehicle vh, double sec_dis)
        {
            double distance_scale = 1;
            double distanceTemp   = 0;

            if (RealDistance > 10)
            {
                distance_scale = sec_dis / RealDistance;
            }
            else
            {
            }
            distanceTemp = Distance * distance_scale;
            int railInterval = 0;


            uctlRail matchRail        = findTheMatchingRail((int)distanceTemp, out railInterval);
            int      railInterval_Pix = (int)BCUtility.RealLengthToPixelsWidthByScale((double)railInterval);

            int Location_X = 0;
            int Location_Y = 0;

            KeyValuePair <uctlRail, E_RAIL_DIR> keyValuePairTemp = uctlRails.Where(keyValue => keyValue.Key == matchRail).SingleOrDefault();

            if (keyValuePairTemp.Equals(default(KeyValuePair <uctlRail, E_RAIL_DIR>)))
            {
                return;
            }
            E_RAIL_DIR railDIR = keyValuePairTemp.Value;

            //switch (RailDircetion)
            switch (railDIR)
            {
            case E_RAIL_DIR.F:
                Location_X = (int)matchRail.p_Points[0].RealPointf.X;
                Location_Y = (int)matchRail.p_Points[0].RealPointf.Y;
                if (matchRail.p_RailType == E_RAIL_TYPE.Straight_Horizontal)
                {
                    vh.PrcSetLocation(Location_X + railInterval_Pix, Location_Y);
                }
                else if (matchRail.p_RailType == E_RAIL_TYPE.Straight_Vertical)
                {
                    vh.PrcSetLocation(Location_X, Location_Y + railInterval_Pix);
                }
                else
                {
                    vh.PrcSetLocation((int)matchRail.p_RealCenterPoint.X, (int)matchRail.p_RealCenterPoint.Y);
                }
                break;

            case E_RAIL_DIR.R:
                Location_X = (int)matchRail.p_Points[1].RealPointf.X;
                Location_Y = (int)matchRail.p_Points[1].RealPointf.Y;
                if (matchRail.p_RailType == E_RAIL_TYPE.Straight_Horizontal)
                {
                    vh.PrcSetLocation(Location_X - railInterval_Pix, Location_Y);
                }
                else if (matchRail.p_RailType == E_RAIL_TYPE.Straight_Vertical)
                {
                    vh.PrcSetLocation(Location_X, Location_Y - railInterval_Pix);
                }
                else
                {
                    vh.PrcSetLocation((int)matchRail.p_RealCenterPoint.X, (int)matchRail.p_RealCenterPoint.Y);
                }
                break;
            }
        }