Esempio n. 1
0
        private void OnMultiChannelMessage(MultiChannelMessage msg)
        {
            _multiChannel = msg.Value;

            if (_multiChannel)
            {
                LinearLinkMovementManager.ForceInitialize();
            }
        }
 protected override void OnValueChanged()
 {
     base.OnValueChanged();
     if (_gantryData != null)
     {
         _gantryData.SetSlaveValue(Value);
     }
     if (!IsPneumaticTransactionEnabled)
     {
         LinearLinkMovementManager.ForceMaterialRemoval();
     }
 }
        private static void ApplyRotationPneumaticLinkAction(IMachineElementViewModel vm)
        {
            var             rotVector = GetRotationDirection(vm.LinkToParent.Direction);
            var             rotCenter = vm.Transform.Transform(new Point3D());
            var             tg        = new Transform3DGroup();
            var             ar        = new AxisAngleRotation3D(rotVector, 0.0);
            var             tr        = new RotateTransform3D(ar, rotCenter);
            var             link      = vm.LinkToParent as RotaryPneumaticViewModel;
            Action <double> setAction = (d) => ar.Angle = d;

            tg.Children.Add(vm.Transform);
            tg.Children.Add(tr);

            link.SetPosition = setAction;
            link.GetPosition = () => ar.Angle;

            link.ValueChanged += (s, e) =>
            {
                //setAction(e ? link.OnPos : link.OffPos);

                var onPos  = link.OnPos;
                var offPos = link.OffPos;
                var tOn    = link.TOn;
                var tOff   = link.TOff;

                if (link.IsGradualTransactionEnabled)
                {
                    var to = e ? onPos : offPos;
                    var t  = e ? tOn : tOff;
                    link.OnMovementStarting?.Invoke(link);
                    link.SetPosition = (d) =>
                    {
                        setAction(d);
                        if (d == to)
                        {
                            link.OnMovementCompleted?.Invoke(link);
                        }
                    };
                    LinearLinkMovementManager.Add(link.Id, link.Pos, to, t);
                }
                else
                {
                    var v = e ? onPos : offPos;
                    link.OnMovementStarting?.Invoke(link);
                    setAction(v);
                    link.OnMovementCompleted?.Invoke(link);
                }
            };

            vm.Transform = tg;
        }
 private void OnArcInterpolationLinkMessage(ArcInterpolationLinkMessage msg)
 {
     if (Id == msg.LinkId)
     {
         if (IsPneumaticTransactionEnabled)
         {
             _backNotifyId = msg.BackNotifyId;
             LinearLinkMovementManager.Add(msg.LinkId, msg.Value, msg.Duration, msg.ArcComponentData);
         }
         else
         {
             UpdateValue(msg);
         }
     }
 }
 private void OnLinearInterpolationLinkMessage(LinearInterpolationLinkMessage msg)
 {
     if (Id == msg.LinkId)
     {
         if (IsPneumaticTransactionEnabled)
         {
             _backNotifyId = msg.BackNotifyId;
             LinearLinkMovementManager.Add(msg.GroupId, msg.LinkId, Value, msg.Value, msg.Duration);
         }
         else
         {
             UpdateValue(msg);
         }
     }
 }
Esempio n. 6
0
        private static void ApplyRotaryPneumaticLinkAction(Transform3DGroup transformGroup, Point3D rotationCenter, RotaryPneumaticViewModel vm)
        {
            if (transformGroup != null)
            {
                var             stopAnimation = new DoubleAnimation();
                Vector3D        vector        = GetRotationDirection(vm);
                var             ar            = new AxisAngleRotation3D(vector, 0.0);
                var             tr            = new RotateTransform3D(ar, rotationCenter);
                var             dp            = AxisAngleRotation3D.AngleProperty;
                Action <double> setAction     = (d) => ar.Angle = d;

                vm.SetPosition = setAction;
                vm.GetPosition = () => ar.Angle;

                transformGroup.Children.Add(tr);

                vm.ValueChanged += (s, e) =>
                {
                    var onPos  = vm.OnPos;
                    var offPos = vm.OffPos;
                    var tOn    = vm.TOn;
                    var tOff   = vm.TOff;

                    if (vm.IsGradualTransactionEnabled)
                    {
                        var to = e ? onPos : offPos;
                        var t  = e ? tOn : tOff;
                        vm.OnMovementStarting?.Invoke(vm);
                        vm.SetPosition = (d) =>
                        {
                            setAction(d);
                            if (d == to)
                            {
                                vm.OnMovementCompleted?.Invoke(vm);
                            }
                        };
                        LinearLinkMovementManager.Add(vm.Id, vm.Pos, to, t);
                    }
                    else
                    {
                        var v = e ? onPos : offPos;
                        vm.OnMovementStarting?.Invoke(vm);
                        setAction(v);
                        vm.OnMovementCompleted?.Invoke(vm);
                    }
                };
            }
        }
 private void OnMoveLinearLinkMessage(MoveLinearLinkMessage msg)
 {
     if (Id == msg.LinkId)
     {
         if (IsPneumaticTransactionEnabled)
         {
             _backNotifyId = msg.BackNotifyId;
             LinearLinkMovementManager.Add(msg.LinkId, Value, msg.Value, msg.Duration);
         }
         else
         {
             UpdateValue(msg);
             LinearLinkMovementManager.ForceMaterialRemoval();
         }
     }
 }
        //private static void ApplyLinearPneumaticLinkAction(MachineElementViewModel vm)
        //{
        //    var tg = new Transform3DGroup();
        //    var tt = new TranslateTransform3D();
        //    var link = vm.LinkToParent as LinearPneumaticViewModel;

        //    tg.Children.Add(vm.Transform);
        //    tg.Children.Add(tt);

        //    var setAction = GetSetTraslationAction(link.Direction, tt);

        //    link.ValueChanged += (s, e) => setAction(e ? link.OnPos : link.OffPos);
        //    vm.Transform = tg;
        //}

        private static void ApplyLinearPneumaticLinkAction(IMachineElementViewModel vm)
        {
            var tg   = new Transform3DGroup();
            var tt   = new TranslateTransform3D();
            var link = vm.LinkToParent as LinearPneumaticViewModel;

            tg.Children.Add(vm.Transform);
            tg.Children.Add(tt);

            var setAction = GetSetTraslationAction(link.Direction, tt);

            link.SetPosition = setAction;
            link.GetPosition = GetGetTraslationFuncion(link.Direction, tt);

            link.ValueChanged += (s, e) =>
            {
                var onPos         = link.OnPos;
                var offPos        = link.OffPos;
                var tOn           = link.TOn;
                var tOff          = link.TOff;
                var toolActivator = link.ToolActivator;
                var lmevm         = vm;
                var inserterId    = link.InserterId;

                EvaluateLinkDataByCollision(link, e, ref onPos, offPos, ref tOn, ref tOff);

                if (link.IsGradualTransactionEnabled)
                {
                    var to = e ? onPos : offPos;
                    var t  = e ? tOn : tOff;
                    link.OnMovementStarting?.Invoke(link);
                    link.SetPosition = (d) =>
                    {
                        setAction(d);
                        if (d == to)
                        {
                            link.OnMovementCompleted?.Invoke(link);
                            if (toolActivator)
                            {
                                lmevm.ManageToolActivation(e);
                            }
                            if (inserterId > 0)
                            {
                                link.ManageInserter(e);
                            }
                        }
                    };
                    LinearLinkMovementManager.Add(link.Id, link.Pos, to, t);
                }
                else
                {
                    var v = e ? onPos : offPos;
                    link.OnMovementStarting?.Invoke(link);
                    setAction(v);
                    link.OnMovementCompleted?.Invoke(link);
                    if (toolActivator)
                    {
                        lmevm.ManageToolActivation(e);
                    }
                    if (inserterId > 0)
                    {
                        link.ManageInserter(e);
                    }
                }
            };

            vm.Transform = tg;
        }
Esempio n. 9
0
        private static void ApplyLinearPneumaticLinkAction(Transform3DGroup transformGroup, LinearPneumaticViewModel vm, MachineElementViewModel mevm)
        {
            if (transformGroup != null)
            {
                var tt = new TranslateTransform3D();

                transformGroup.Children.Add(tt);

                var setAction = GetSetTraslationAction(vm, tt);

                vm.SetPosition = setAction;
                vm.GetPosition = GetGetTraslationFuncion(vm, tt);

                vm.ValueChanged += (s, e) =>
                {
                    var onPos         = vm.OnPos;
                    var offPos        = vm.OffPos;
                    var tOn           = vm.TOn;
                    var tOff          = vm.TOff;
                    var toolActivator = vm.ToolActivator;
                    var lmevm         = mevm;
                    var inserterId    = vm.InserterId;

                    EvaluateLinkDataByCollision(vm, e, ref onPos, offPos, ref tOn, ref tOff);

                    if (vm.IsGradualTransactionEnabled)
                    {
                        var to = e ? onPos : offPos;
                        var t  = e ? tOn : tOff;
                        vm.OnMovementStarting?.Invoke(vm);
                        vm.SetPosition = (d) =>
                        {
                            setAction(d);
                            if (d == to)
                            {
                                vm.OnMovementCompleted?.Invoke(vm);
                                if (toolActivator)
                                {
                                    lmevm.ManageToolActivation(e);
                                }
                                if (inserterId > 0)
                                {
                                    vm.ManageInserter(e);
                                }
                            }
                        };
                        LinearLinkMovementManager.Add(vm.Id, vm.Pos, to, t);
                    }
                    else
                    {
                        var v = e ? onPos : offPos;
                        vm.OnMovementStarting?.Invoke(vm);
                        setAction(v);
                        vm.OnMovementCompleted?.Invoke(vm);
                        if (toolActivator)
                        {
                            lmevm.ManageToolActivation(e);
                        }
                        if (inserterId > 0)
                        {
                            vm.ManageInserter(e);
                        }
                    }
                };
            }
        }