Пример #1
0
        private void ExecuteDynamic(ArcInterpolatedPositionLinkAction action, int notifyId)
        {
            bool isFirst = true;

            foreach (var item in action.Components)
            {
                var component = item.Type == ArcInterpolatedPositionLinkAction.ArcComponent.ArcComponentType.X ? ArcComponent.X : ArcComponent.Y;
                var data      = new ArcComponentData
                {
                    GroupId          = _interpolationGroupId,
                    StartAngle       = action.StartAngle,
                    Angle            = action.Angle,
                    Radius           = action.Radius,
                    CenterCoordinate = item.CenterCoordinate,
                    Component        = component
                };

                Messenger.Send(new GetLinkMessage()
                {
                    Id      = item.LinkId,
                    SetLink = (link) =>
                    {
                        LinkMovementManager.Add(item.LinkId, item.TargetCoordinate, action.Duration, data, isFirst ? notifyId : 0);
                        isFirst = false;
                    }
                });
            }

            _interpolationGroupId++;
        }
Пример #2
0
        public static void ExecuteAction(this ArcInterpolatedPositionLinkAction a, int actionId = 0)
        {
            bool isFirst = true;

            foreach (var item in a.Components)
            {
                var component = item.Type == ArcInterpolatedPositionLinkAction.ArcComponent.ArcComponentType.X ? MachineViewer.Plugins.Common.Enums.Links.Interpolation.ArcComponent.X : MachineViewer.Plugins.Common.Enums.Links.Interpolation.ArcComponent.Y;
                var data      = new ArcComponentData
                {
                    GroupId          = _interpolationGroupId,
                    StartAngle       = a.StartAngle,
                    Angle            = a.Angle,
                    Radius           = a.Radius,
                    CenterCoordinate = item.CenterCoordinate,
                    Component        = component
                };

                Messenger.Default.Send(new ArcInterpolationLinkMessage(item.LinkId, item.TargetCoordinate, a.Duration, data)
                {
                    BackNotifyId = isFirst ? actionId : 0
                });
                //isFirst = false;
            }

            _interpolationGroupId++;
        }
        internal void Add(int linkId, double targetValue, ArcComponentData data)
        {
            ArcMovementItem md = null;

            switch (data.Component)
            {
            case Plugins.Common.Enums.Links.Interpolation.ArcComponent.X:
                md = new XArcMovementItem(linkId, targetValue);
                break;

            case Plugins.Common.Enums.Links.Interpolation.ArcComponent.Y:
                md = new YArcMovementItem(linkId, targetValue);
                break;

            default:
                break;
            }

            if (md != null)
            {
                md.Angle            = data.Angle;
                md.StartAngle       = data.StartAngle;
                md.CenterCoordinate = data.CenterCoordinate;
                md.Radius           = data.Radius;

                Items.Add(md);
            }
            else
            {
                throw new ArgumentException("Invalid arc component!");
            }
        }
        public void Add(ILinkViewModel link, double targetValue, ArcComponentData data)
        {
            IArcMovementItem md = ArcMovementItem.Create(link, targetValue);

            md.Angle            = data.Angle;
            md.StartAngle       = data.StartAngle;
            md.CenterCoordinate = data.CenterCoordinate;
            md.Radius           = data.Radius;
            md.ArcComponent     = data.Component;

            Items.Add(md);
        }
        public static void Add(int linkId, double targetValue, double duration, ArcComponentData data)
        {
            lock (_lockObj2)
            {
                if (!_itemsGroups.TryGetValue(data.GroupId, out LinksMovementsGroup group))
                {
                    group = new LinksMovementsGroup(data.GroupId, duration);
                    _itemsGroups.Add(data.GroupId, group);
                }

                group.Add(linkId, targetValue, data);
            }
        }
 public ArcInterpolationLinkMessage(int id, double targetCoordinate, double duration, ArcComponentData arcComponentData) : base(id, targetCoordinate, duration)
 {
     ArcComponentData = arcComponentData;
 }