Browse Source

Modified the style of the venusDE page and added the DERobot movement.

kuangzl 9 months ago
parent
commit
cfd9253e8a

+ 203 - 175
Venus/Venus_MainPages/ViewModels/VenusDETMViewModel.cs

@@ -18,16 +18,22 @@ using System.Windows.Threading;
 using Venus_Core;
 using Venus_MainPages.Unity;
 using Venus_Themes.CustomControls;
-using static Venus_Themes.CustomControls.SERobot;
+using static Venus_Themes.CustomControls.DERobot;
 
 namespace Venus_MainPages.ViewModels
 {
     public class VenusDETMViewModel : BindableBase
     {
+        public enum DeTMModule
+        {
+            PMA, PMB, PMC, PMD, LP1, LP2, Aligner1
+        }
+        public enum DeTMBlade
+        {
+            Blade1, Blade2
+        }
         #region 私有字段
-        public double m_Alignerangle;
 
-        private ModuleInfo m_VCEModuleInfo;
         private ModuleInfo m_AlignerModuleInfo;
         private ModuleInfo m_TMModuleInfo;
 
@@ -35,6 +41,8 @@ namespace Venus_MainPages.ViewModels
         private WaferInfo m_PMAWafer;
         private WaferInfo m_PMBWafer;
         private WaferInfo m_PMCWafer;
+        private WaferInfo m_PMDWafer;
+
         public WaferInfo m_RobotUpperWafer;
         public WaferInfo m_RobotLowerWafer;
         public WaferInfo m_PAWafer;
@@ -43,20 +51,24 @@ namespace Venus_MainPages.ViewModels
         private bool m_PMADoorIsOpen;
         private bool m_PMBDoorIsOpen;
         private bool m_PMCDoorIsOpen;
-        private bool m_VCEDoorIsOpen;
-        private bool m_VCEOutDoorIsOpen;
+        private bool m_PMDDoorIsOpen;
 
+        private bool m_VCEADoorIsOpen;
+        private bool m_VCEBDoorIsOpen;
+        private bool m_VCEAOutDoorIsOpen;
+        private bool m_VCEBOutDoorIsOpen;
+        private bool m_IsAlignerOnRight;
         //Pick、Place、Extend、Retract行下拉框内容
-        private SeTMModule m_PickSelectedModule;
-        private SeTMModule m_PlaceSelectedModule;
-        private SeTMModule m_ExtendSelectedModule;
-        private SeTMModule m_RetractSelectedModule;
-        private SeTMModule m_GotoSelectedModule;
-        private SeTMBlade m_PickSelectedBlade;
-        private SeTMBlade m_PlaceSelectedBlade;
-        private SeTMBlade m_ExtendSelectedBlade;
-        private SeTMBlade m_RetractSelectedBlade;
-        private SeTMBlade m_GoToSelectedBlade;
+        private DeTMModule m_PickSelectedModule;
+        private DeTMModule m_PlaceSelectedModule;
+        private DeTMModule m_ExtendSelectedModule;
+        private DeTMModule m_RetractSelectedModule;
+        private DeTMModule m_GotoSelectedModule;
+        private DeTMBlade m_PickSelectedBlade;
+        private DeTMBlade m_PlaceSelectedBlade;
+        private DeTMBlade m_ExtendSelectedBlade;
+        private DeTMBlade m_RetractSelectedBlade;
+        private DeTMBlade m_GoToSelectedBlade;
 
 
         //Pick、Place、Extend、Retract行下拉框关联
@@ -71,22 +83,26 @@ namespace Venus_MainPages.ViewModels
 
 
         //下拉框内容
-        private List<SeTMModule> m_TMModules = new List<SeTMModule>();
+        private List<DeTMModule> m_TMModules = new List<DeTMModule>();
 
         private bool m_PMAIsInstalled;
         private bool m_PMBIsInstalled;
         private bool m_PMCIsInstalled;
-        private bool m_VCEIsInstalled;
+        private bool m_PMDIsInstalled;
+
+        private bool m_VCEAIsInstalled;
+        private bool m_VCEBIsInstalled;
+
         private bool m_AlignerIsInstalled;
         private Dictionary<string, object> m_RtDataValues = new Dictionary<string, object>();
         private List<string> m_RtDataKeys = new List<string>();
 
         //Robot动画
-        private SERobotTAction m_SERobotTAction;
-        private SERobotTAction m_Robot1TAction;
-        private SERobotXAction m_Robot1XAction;
-        private SERobotTAction m_Robot2TAction;
-        private SERobotXAction m_Robot2XAction;
+        private DERobotTAction m_DERobotTAction;
+        private DERobotTAction m_Robot1TAction;
+        private DERobotXAction m_Robot1XAction;
+        private DERobotTAction m_Robot2TAction;
+        private DERobotXAction m_Robot2XAction;
         public RobotMoveInfo m_robotMoveInfo;
         //Cycle
         private List<string> m_OriginalCycle = new List<string>();
@@ -96,17 +112,13 @@ namespace Venus_MainPages.ViewModels
         private bool m_PMAIsCycle;
         private bool m_PMBIsCycle;
         private bool m_PMCIsCycle;
+        private bool m_PMDIsCycle;
 
         private int m_CycleCount;
 
         #endregion
 
         #region 属性
-        public double Alignerangle
-        {
-            get { return m_Alignerangle; }
-            set { SetProperty(ref m_Alignerangle, value); }
-        }
         public WaferInfo PMAWafer
         {
             get { return m_PMAWafer; }
@@ -122,6 +134,11 @@ namespace Venus_MainPages.ViewModels
             get { return m_PMCWafer; }
             set { SetProperty(ref m_PMCWafer, value); }
         }
+        public WaferInfo PMDWafer
+        {
+            get { return m_PMDWafer; }
+            set { SetProperty(ref m_PMDWafer, value); }
+        }
         public WaferInfo RobotUpperWafer
         {
             get { return m_RobotUpperWafer; }
@@ -138,9 +155,13 @@ namespace Venus_MainPages.ViewModels
             get { return m_PAWafer; }
             set { SetProperty(ref m_PAWafer, value); }
         }
-        public bool VCEDoorIsOpen { get => m_VCEDoorIsOpen; set => SetProperty(ref m_VCEDoorIsOpen, value); }
-        public bool VCEOutDoorIsOpen { get => m_VCEOutDoorIsOpen; set => SetProperty(ref m_VCEOutDoorIsOpen, value); }
+        public bool IsAligner1OnRight { get => m_IsAlignerOnRight; set => SetProperty(ref m_IsAlignerOnRight, value); }
 
+        public bool VCEADoorIsOpen { get => m_VCEADoorIsOpen; set => SetProperty(ref m_VCEADoorIsOpen, value); }
+        public bool VCEBDoorIsOpen { get => m_VCEBDoorIsOpen; set => SetProperty(ref m_VCEBDoorIsOpen, value); }
+        public bool VCEAOutDoorIsOpen { get => m_VCEAOutDoorIsOpen; set => SetProperty(ref m_VCEAOutDoorIsOpen, value); }
+        public bool VCEBOutDoorIsOpen { get => m_VCEBOutDoorIsOpen; set => SetProperty(ref m_VCEBOutDoorIsOpen, value); }
+        public bool PMDDoorIsOpen { get => m_PMDDoorIsOpen; set => SetProperty(ref m_PMDDoorIsOpen, value); }
 
         public bool PMCDoorIsOpen
         {
@@ -161,14 +182,7 @@ namespace Venus_MainPages.ViewModels
             get { return m_PMBDoorIsOpen; }
             set { SetProperty(ref m_PMBDoorIsOpen, value); }
         }
-        public ModuleInfo VCEModuleInfo
-        {
-            get { return m_VCEModuleInfo; }
-            set
-            {
-                SetProperty(ref m_VCEModuleInfo, value);
-            }
-        }
+
         public ModuleInfo AlignerModuleInfo
         {
             get { return m_AlignerModuleInfo; }
@@ -198,10 +212,26 @@ namespace Venus_MainPages.ViewModels
             get { return m_PMCIsInstalled; }
             set { SetProperty(ref m_PMCIsInstalled, value); }
         }
-        public bool VCEIsInstalled
+        public bool PMDIsInstalled
+        {
+            get { return m_PMDIsInstalled; }
+            set
+            {
+                SetProperty(ref m_PMDIsInstalled, value);
+            }
+        }
+        public bool VCEAIsInstalled
         {
-            get { return m_VCEIsInstalled; }
-            set { SetProperty(ref m_VCEIsInstalled, value); }
+            get { return m_VCEAIsInstalled; }
+            set { SetProperty(ref m_VCEAIsInstalled, value); }
+        }
+        public bool VCEBIsInstalled
+        {
+            get { return m_VCEBIsInstalled; }
+            set
+            {
+                SetProperty(ref m_VCEBIsInstalled, value);
+            }
         }
         public bool AlignerIsInstalled
         {
@@ -209,34 +239,34 @@ namespace Venus_MainPages.ViewModels
             set { SetProperty(ref m_AlignerIsInstalled, value); }
         }
 
-        public List<SeTMModule> TMModules
+        public List<DeTMModule> TMModules
         {
             get { return m_TMModules; }
             set { SetProperty(ref m_TMModules, value); }
         }
 
         //Module属性
-        public SeTMModule PickSelectedModule
+        public DeTMModule PickSelectedModule
         {
             get { return m_PickSelectedModule; }
             set { SetProperty(ref m_PickSelectedModule, value); }
         }
-        public SeTMModule PlaceSelectedModule
+        public DeTMModule PlaceSelectedModule
         {
             get { return m_PlaceSelectedModule; }
             set { SetProperty(ref m_PlaceSelectedModule, value); }
         }
-        public SeTMModule ExtendSelectedModule
+        public DeTMModule ExtendSelectedModule
         {
             get { return m_ExtendSelectedModule; }
             set { SetProperty(ref m_ExtendSelectedModule, value); }
         }
-        public SeTMModule RetractSelectedModule
+        public DeTMModule RetractSelectedModule
         {
             get { return m_RetractSelectedModule; }
             set { SetProperty(ref m_RetractSelectedModule, value); }
         }
-        public SeTMModule GotoSelectedModule
+        public DeTMModule GotoSelectedModule
         {
             get { return m_GotoSelectedModule; }
             set { SetProperty(ref m_GotoSelectedModule, value); }
@@ -250,27 +280,27 @@ namespace Venus_MainPages.ViewModels
             }
         }
         //Blade属性
-        public SeTMBlade PickSelectedBlade
+        public DeTMBlade PickSelectedBlade
         {
             get { return m_PickSelectedBlade; }
             set { SetProperty(ref m_PickSelectedBlade, value); }
         }
-        public SeTMBlade PlaceSelectedBlade
+        public DeTMBlade PlaceSelectedBlade
         {
             get { return m_PlaceSelectedBlade; }
             set { SetProperty(ref m_PlaceSelectedBlade, value); }
         }
-        public SeTMBlade ExtendSelectedBlade
+        public DeTMBlade ExtendSelectedBlade
         {
             get { return m_ExtendSelectedBlade; }
             set { SetProperty(ref m_ExtendSelectedBlade, value); }
         }
-        public SeTMBlade RetractSelectedBlade
+        public DeTMBlade RetractSelectedBlade
         {
             get { return m_RetractSelectedBlade; }
             set { SetProperty(ref m_RetractSelectedBlade, value); }
         }
-        public SeTMBlade GoToSelectedBlade
+        public DeTMBlade GoToSelectedBlade
         {
             get { return m_GoToSelectedBlade; }
             set { SetProperty(ref m_GoToSelectedBlade, value); }
@@ -317,27 +347,27 @@ namespace Venus_MainPages.ViewModels
             set { SetProperty(ref m_RetractSoltSelectedIndex, value); }
         }
         //Robot动作
-        public SERobotTAction SERobotTAction
+        public DERobotTAction DERobotTAction
         {
-            get { return m_SERobotTAction; }
-            set { SetProperty(ref m_SERobotTAction, value); }
+            get { return m_DERobotTAction; }
+            set { SetProperty(ref m_DERobotTAction, value); }
         }
-        public SERobotTAction Robot1TAction
+        public DERobotTAction Robot1TAction
         {
             get { return m_Robot1TAction; }
             set { SetProperty(ref m_Robot1TAction, value); }
         }
-        public SERobotXAction Robot1XAction
+        public DERobotXAction Robot1XAction
         {
             get { return m_Robot1XAction; }
             set { SetProperty(ref m_Robot1XAction, value); }
         }
-        public SERobotTAction Robot2TAction
+        public DERobotTAction Robot2TAction
         {
             get { return m_Robot2TAction; }
             set { SetProperty(ref m_Robot2TAction, value); }
         }
-        public SERobotXAction Robot2XAction
+        public DERobotXAction Robot2XAction
         {
             get { return m_Robot2XAction; }
             set { SetProperty(ref m_Robot2XAction, value); }
@@ -348,7 +378,7 @@ namespace Venus_MainPages.ViewModels
             set
             {
                 RobotMoveInfoChanged(m_robotMoveInfo, value);
-                m_robotMoveInfo = value;
+                SetProperty(ref m_robotMoveInfo, value);
             }
         }
         //Cycle
@@ -382,6 +412,11 @@ namespace Venus_MainPages.ViewModels
             get { return m_PMCIsCycle; }
             set { SetProperty(ref m_PMCIsCycle, value); }
         }
+        public bool PMDIsCycle
+        {
+            get { return m_PMDIsCycle; }
+            set { SetProperty(ref m_PMDIsCycle, value); }
+        }
         public int CycleCount
         {
             get { return m_CycleCount; }
@@ -440,38 +475,41 @@ namespace Venus_MainPages.ViewModels
             string allModules = QueryDataClient.Instance.Service.GetConfig($"System.InstalledModules").ToString();
             PMAIsInstalled = allModules.Contains("PMA");
             PMBIsInstalled = allModules.Contains("PMB");
-            //PMCIsInstalled = allModules.Contains("PMC");
-            PMCIsInstalled = true;
-            //VCEIsInstalled = allModules.Contains("VCE1");
-            VCEIsInstalled = true;
-            AlignerIsInstalled = true;
+            PMCIsInstalled = allModules.Contains("PMC");
+            PMDIsInstalled = allModules.Contains("PMD");
+            VCEAIsInstalled = allModules.Contains("VCEA");
+            VCEBIsInstalled = allModules.Contains("VCEB");
+            AlignerIsInstalled = allModules.Contains("Aligner");
+            IsAligner1OnRight = true;
             if (PMAIsInstalled == true)
             {
-                TMModules.Add(SeTMModule.PMA);
+                TMModules.Add(DeTMModule.PMA);
             }
             if (PMBIsInstalled == true)
             {
-                TMModules.Add(SeTMModule.PMB);
+                TMModules.Add(DeTMModule.PMB);
             }
             if (PMCIsInstalled == true)
             {
-                TMModules.Add(SeTMModule.PMC);
-                m_Alignerangle = 270;
+                TMModules.Add(DeTMModule.PMC);
             }
-            else
+            if (PMDIsInstalled == true)
             {
-                m_Alignerangle = 180;
+                TMModules.Add(DeTMModule.PMD);
+                IsAligner1OnRight = false;
             }
-
-            if (VCEIsInstalled == true)
+            if (VCEAIsInstalled == true)
+            {
+                TMModules.Add(DeTMModule.LP1);
+            }
+            if (VCEBIsInstalled == true)
             {
-                TMModules.Add(SeTMModule.VCE1);
+                TMModules.Add(DeTMModule.LP2);
             }
             if (AlignerIsInstalled == true)
             {
-                TMModules.Add(SeTMModule.Aligner1);
+                TMModules.Add(DeTMModule.Aligner1);
             }
-
             PickSoltItemsSource.Add(1);
             PlaceSoltItemsSource.Add(1);
             ExtendSoltItemsSource.Add(1);
@@ -481,11 +519,12 @@ namespace Venus_MainPages.ViewModels
             addDataKeys();
             RtDataValues = QueryDataClient.Instance.Service.PollData(m_RtDataKeys);
 
-            VCEDoorIsOpen = !CommonFunction.GetValue<bool>(RtDataValues, "TM.VCESlitDoorClosed");
             PMADoorIsOpen = !CommonFunction.GetValue<bool>(RtDataValues, "TM.PMASlitDoorClosed");
             PMBDoorIsOpen = !CommonFunction.GetValue<bool>(RtDataValues, "TM.PMBSlitDoorClosed");
             PMCDoorIsOpen = !CommonFunction.GetValue<bool>(RtDataValues, "TM.PMCSlitDoorClosed");
-            VCEOutDoorIsOpen = !CommonFunction.GetValue<bool>(RtDataValues, "VCE1.VCEOutDoorClosed");
+            PMDDoorIsOpen = !CommonFunction.GetValue<bool>(RtDataValues, "TM.PMDSlitDoorClosed");
+            VCEADoorIsOpen = !CommonFunction.GetValue<bool>(RtDataValues, "TM.VCEASlitDoorClosed");
+            VCEBDoorIsOpen = !CommonFunction.GetValue<bool>(RtDataValues, "TM.VCEBSlitDoorClosed");
             DispatcherTimer timer = new DispatcherTimer();
             timer.Interval = TimeSpan.FromSeconds(0.5);
             timer.Tick += Timer_Tick;
@@ -497,16 +536,19 @@ namespace Venus_MainPages.ViewModels
         #region 命令方法
         private void addDataKeys()
         {
-            m_RtDataKeys.Add($"TM.VCESlitDoorClosed");
+            m_RtDataKeys.Add($"TM.VCEASlitDoorClosed");
+            m_RtDataKeys.Add($"TM.VCEBSlitDoorClosed");
             m_RtDataKeys.Add($"TM.PMASlitDoorClosed");
             m_RtDataKeys.Add($"TM.PMBSlitDoorClosed");
             m_RtDataKeys.Add($"TM.PMCSlitDoorClosed");
-            m_RtDataKeys.Add($"VCE1.VCEOutDoorClosed");
+            m_RtDataKeys.Add($"TM.PMDSlitDoorClosed");
+            m_RtDataKeys.Add($"LP1.CassettePlaced");
+            m_RtDataKeys.Add($"LP2.CassettePlaced");
             m_RtDataKeys.Add($"PMA.ChamberPressure");
             m_RtDataKeys.Add($"PMB.ChamberPressure");
             m_RtDataKeys.Add($"PMC.ChamberPressure");
+            m_RtDataKeys.Add($"PMD.ChamberPressure");
             m_RtDataKeys.Add($"TM.VCEPressure.Value");
-            m_RtDataKeys.Add($"VCE1.CassetteArrive");
             m_RtDataKeys.Add($"TMCycle.CycleIndex");
         }
         //模块选择根据obj选择下拉框内容
@@ -590,7 +632,7 @@ namespace Venus_MainPages.ViewModels
             var selectedHand = (Hand)Enum.Parse(typeof(Hand), PickSelectedBlade.ToString(), true);
             MoveItem moveItem = new MoveItem(moduleName, PickSoltItemsSource[PickSoltSelectedIndex] - 1, ModuleName.TMRobot, 0, selectedHand);
             moveItems.Enqueue(moveItem);
-            if ((int)PickSelectedModule < TMModules.Count - 2)
+            if ((int)PickSelectedModule < TMModules.Count - 3)
             {
                 InvokeClient.Instance.Service.DoOperation($"TM.PMPick", moveItems);
             }
@@ -607,7 +649,7 @@ namespace Venus_MainPages.ViewModels
             var selectedHand = (Hand)Enum.Parse(typeof(Hand), PlaceSelectedBlade.ToString(), true);
             MoveItem moveItem = new MoveItem(ModuleName.TMRobot, 0, moduleName, PlaceSoltItemsSource[PlaceSoltSelectedIndex] - 1, selectedHand);
             moveItems.Enqueue(moveItem);
-            if ((int)PlaceSelectedModule < TMModules.Count - 2)
+            if ((int)PlaceSelectedModule < TMModules.Count - 3)
             {
                 InvokeClient.Instance.Service.DoOperation($"TM.PMPlace", moveItems);
             }
@@ -657,7 +699,7 @@ namespace Venus_MainPages.ViewModels
                 return;
             }
             List<string> stations = new List<string>();
-            stations.Add("VCE1");
+            stations.Add("VCEA");
             stations.Add("Aligner1");
             if (PMAIsCycle == true)
             {
@@ -671,7 +713,11 @@ namespace Venus_MainPages.ViewModels
             {
                 stations.Add("PMC");
             }
-            stations.Add("VCE1");
+            if (PMDIsCycle == true)
+            {
+                stations.Add("PMD");
+            }
+            stations.Add("VCEA");
             InvokeClient.Instance.Service.DoOperation("System.SETMCycle", stations.ToArray(), CycleCount);
 
         }
@@ -688,11 +734,6 @@ namespace Venus_MainPages.ViewModels
         private void Timer_Tick(object sender, EventArgs e)
         {
             TMModuleInfo = ModuleManager.ModuleInfos["TMRobot"];
-            if (VCEIsInstalled)
-            {
-
-            }
-
             if (PMAIsInstalled == true)
             {
                 ModuleInfo PMAModuleInfo = ModuleManager.ModuleInfos["PMA"];
@@ -708,13 +749,18 @@ namespace Venus_MainPages.ViewModels
                 ModuleInfo PMCModuleInfo = ModuleManager.ModuleInfos["PMC"];
                 PMCWafer = PMCModuleInfo.WaferManager.Wafers[0];
             }
-
+            if (PMDIsInstalled == true)
+            {
+                ModuleInfo PMDModuleInfo = ModuleManager.ModuleInfos["PMC"];
+                PMDWafer = PMDModuleInfo.WaferManager.Wafers[0];
+            }
             RtDataValues = QueryDataClient.Instance.Service.PollData(m_RtDataKeys);
-            VCEDoorIsOpen = !CommonFunction.GetValue<bool>(RtDataValues, "TM.VCESlitDoorClosed");
             PMADoorIsOpen = !CommonFunction.GetValue<bool>(RtDataValues, "TM.PMASlitDoorClosed");
             PMBDoorIsOpen = !CommonFunction.GetValue<bool>(RtDataValues, "TM.PMBSlitDoorClosed");
             PMCDoorIsOpen = !CommonFunction.GetValue<bool>(RtDataValues, "TM.PMCSlitDoorClosed");
-            VCEOutDoorIsOpen = !CommonFunction.GetValue<bool>(RtDataValues, "VCE1.VCEOutDoorClosed");
+            PMDDoorIsOpen = !CommonFunction.GetValue<bool>(RtDataValues, "TM.PMDSlitDoorClosed");
+            VCEADoorIsOpen = !CommonFunction.GetValue<bool>(RtDataValues, "TM.VCEASlitDoorClosed");
+            VCEBDoorIsOpen = !CommonFunction.GetValue<bool>(RtDataValues, "TM.VCEBSlitDoorClosed");
             RobotMoveInfo = (RobotMoveInfo)QueryDataClient.Instance.Service.GetData("TM.RobotMoveAction");
             PAWafer = ModuleManager.ModuleInfos["Aligner1"].WaferManager.Wafers[0];
             RobotUpperWafer = TMModuleInfo.WaferManager.Wafers[0];
@@ -744,26 +790,16 @@ namespace Venus_MainPages.ViewModels
                 var values = RobotTarget.Split('.');
                 var arm = values[0];
                 var module = values[1];
-                if (arm == "ArmA")
-                {
-                    var SERobotTAction = (SERobotTAction)Enum.Parse(typeof(SERobotTAction), module, true);
-                    if (SERobotTAction != Robot1TAction)
-                    {
-                        Robot1TAction = SERobotTAction;
-                    }
-                }
-                else if (arm == "ArmB")
+                var DERobotTAction = (DERobotTAction)Enum.Parse(typeof(DERobotTAction), module, true);
+                if (DERobotTAction != Robot1TAction || DERobotTAction != Robot2TAction)
                 {
-                    var SERobotTAction = (SERobotTAction)Enum.Parse(typeof(SERobotTAction), module, true);
-                    if (SERobotTAction != Robot2TAction)
-                    {
-                        Robot2TAction = SERobotTAction;
-                    }
+                    Robot1TAction = DERobotTAction;
+                    Robot2TAction = DERobotTAction;
                 }
             }
             #endregion
 
-            #region Aligner1、VCE1 Pick、Place
+            #region Aligner1、VCE Pick、Place
             else if ((oldValue.Action == RobotAction.None || oldValue.ArmTarget != newValue.ArmTarget) && (newValue.Action == RobotAction.Placing || newValue.Action == RobotAction.Picking))
             {
                 var TMRobotMoveActionBladeTarget = newValue.BladeTarget;
@@ -778,60 +814,62 @@ namespace Venus_MainPages.ViewModels
                 var values = RobotTarget.Split('.');
                 var arm = values[0];
                 var module = values[1];
-                //if (module == "VPA")
-                //{
-                //    module = PMCIsInstalled ? "VPA" : "VPARight";
-                //}
+                if (module == "Aligner1")
+                {
+                    module = IsAligner1OnRight ? "PMD" : "Aligner1";
+                }
+                var DERobotTAction = (DERobotTAction)Enum.Parse(typeof(DERobotTAction), module, true);
+                if (DERobotTAction != Robot1TAction || DERobotTAction != Robot2TAction)
+                {
+                    Robot1TAction = DERobotTAction;
+                    Robot2TAction = DERobotTAction;
+                }
                 if (arm == "ArmA")
                 {
-                    var SERobotTAction = (SERobotTAction)Enum.Parse(typeof(SERobotTAction), module, true);
-                    if (SERobotTAction != Robot1TAction)
-                    {
-                        Robot1TAction = SERobotTAction;
-                    }
                     await Task.Delay(600);
-
-                    if (module == "VCE1")
+                    if (module == "VCEA" || module == "VCEB")
                     {
-                        Robot1XAction = SERobotXAction.ToVCE;
+                        Robot1XAction = DERobotXAction.ToVCE;
+                        while ((newValue.Action == RobotAction.Placing && ModuleManager.ModuleInfos["TMRobot"].WaferManager.Wafers[0].WaferStatus != 0) || (newValue.Action == RobotAction.Picking && ModuleManager.ModuleInfos["TMRobot"].WaferManager.Wafers[0].WaferStatus == 0))
+                        {
+                            await Task.Delay(100);
+                        }
+                        Robot1XAction = DERobotXAction.FromVCE;
                     }
                     else
                     {
-                        Robot1XAction = SERobotXAction.Extend;
-                    }
-                    while ((newValue.Action == RobotAction.Placing && ModuleManager.ModuleInfos["TMRobot"].WaferManager.Wafers[0].WaferStatus != 0) || (newValue.Action == RobotAction.Picking && ModuleManager.ModuleInfos["TMRobot"].WaferManager.Wafers[0].WaferStatus == 0))
-                    {
-                        await Task.Delay(100);
+                        Robot1XAction = DERobotXAction.Extend;
+                        while ((newValue.Action == RobotAction.Placing && ModuleManager.ModuleInfos["TMRobot"].WaferManager.Wafers[0].WaferStatus != 0) || (newValue.Action == RobotAction.Picking && ModuleManager.ModuleInfos["TMRobot"].WaferManager.Wafers[0].WaferStatus == 0))
+                        {
+                            await Task.Delay(100);
+                        }
+                        Robot1XAction = DERobotXAction.Retract;
                     }
-                    Robot1XAction = SERobotXAction.Retract;
+
                 }
                 else if (arm == "ArmB")
                 {
-                    var SERobotTAction = (SERobotTAction)Enum.Parse(typeof(SERobotTAction), module, true);
-                    if (SERobotTAction != Robot2TAction)
-                    {
-                        Robot2TAction = SERobotTAction;
-                    }
-                    else
-                    {
-                        //await Task.Delay(100);
-                    }
                     await Task.Delay(600);
-                    if (module == "VCE1")
+                    if (module == "VCEA" || module == "VCEB")
                     {
-                        Robot2XAction = SERobotXAction.ToVCE2;
+                        Robot2XAction = DERobotXAction.ToVCE2;
+                        while ((newValue.Action == RobotAction.Placing && ModuleManager.ModuleInfos["TMRobot"].WaferManager.Wafers[1].WaferStatus != 0) || (newValue.Action == RobotAction.Picking && ModuleManager.ModuleInfos["TMRobot"].WaferManager.Wafers[1].WaferStatus == 0))
+                        {
+                            await Task.Delay(100);
+                        }
+                        Robot2XAction = DERobotXAction.FromVCE2;
                     }
                     else
                     {
-                        Robot2XAction = SERobotXAction.Extend2;
-                    }
-                    while ((newValue.Action == RobotAction.Placing && ModuleManager.ModuleInfos["TMRobot"].WaferManager.Wafers[1].WaferStatus != 0) || (newValue.Action == RobotAction.Picking && ModuleManager.ModuleInfos["TMRobot"].WaferManager.Wafers[1].WaferStatus == 0))
-                    {
-                        await Task.Delay(100);
+                        Robot2XAction = DERobotXAction.Extend2;
+                        while ((newValue.Action == RobotAction.Placing && ModuleManager.ModuleInfos["TMRobot"].WaferManager.Wafers[1].WaferStatus != 0) || (newValue.Action == RobotAction.Picking && ModuleManager.ModuleInfos["TMRobot"].WaferManager.Wafers[1].WaferStatus == 0))
+                        {
+                            await Task.Delay(100);
+                        }
+                        Robot2XAction = DERobotXAction.Retract2;
                     }
-                    Robot2XAction = SERobotXAction.Retract2;
-                }
 
+                }
             }
             #endregion
 
@@ -850,35 +888,21 @@ namespace Venus_MainPages.ViewModels
                 var values = RobotTarget.Split('.');
                 var arm = values[0];
                 var module = values[1];
+                var DERobotTAction = (DERobotTAction)Enum.Parse(typeof(DERobotTAction), module, true);
+                if (DERobotTAction != Robot1TAction || DERobotTAction != Robot2TAction)
+                {
+                    Robot1TAction = DERobotTAction;
+                    Robot2TAction = DERobotTAction;
+                }
                 if (arm == "ArmA")
                 {
-                    var SERobotTAction = (SERobotTAction)Enum.Parse(typeof(SERobotTAction), module, true);
-                    if (SERobotTAction != Robot1TAction)
-                    {
-                        Robot1TAction = SERobotTAction;
-                    }
-                    else
-                    {
-                        // await Task.Delay(100);
-                    }
                     await Task.Delay(600);
-
-                    Robot1XAction = SERobotXAction.Extend;
+                    Robot1XAction = DERobotXAction.Extend;
                 }
                 else if (arm == "ArmB")
                 {
-                    var SERobotTAction = (SERobotTAction)Enum.Parse(typeof(SERobotTAction), module, true);
-                    if (SERobotTAction != Robot2TAction)
-                    {
-                        Robot2TAction = SERobotTAction;
-                    }
-                    else
-                    {
-                        // await Task.Delay(100);
-                    }
                     await Task.Delay(600);
-
-                    Robot2XAction = SERobotXAction.Extend2;
+                    Robot2XAction = DERobotXAction.Extend2;
                 }
             }
 
@@ -895,35 +919,39 @@ namespace Venus_MainPages.ViewModels
                 }
                 var values = RobotTarget.Split('.');
                 var arm = values[0];
+                var module = values[1];
+
                 if (arm == "ArmA")
                 {
-                    Robot1XAction = SERobotXAction.Retract;
+                    await Task.Delay(100);
+                    Robot1XAction = DERobotXAction.Retract;
                 }
                 else if (arm == "ArmB")
                 {
-                    Robot2XAction = SERobotXAction.Retract2;
+                    await Task.Delay(100);
+                    Robot2XAction = DERobotXAction.Retract2;
                 }
             }
             #endregion
             #region Home
             else if (oldValue.Action == RobotAction.None && newValue.Action == RobotAction.Homing)
             {
-                if (Robot1XAction == SERobotXAction.Extend)
+                if (Robot1XAction == DERobotXAction.Extend)
                 {
-                    Robot1XAction = SERobotXAction.Retract;
+                    Robot1XAction = DERobotXAction.Retract;
                 }
-                if (Robot2XAction == SERobotXAction.Extend2)
+                if (Robot2XAction == DERobotXAction.Extend2)
                 {
-                    Robot2XAction = SERobotXAction.Retract2;
+                    Robot2XAction = DERobotXAction.Retract2;
                 }
                 await Task.Delay(2000);
-                if (Robot1TAction != SERobotTAction.T_Origin)
+                if (Robot1TAction != DERobotTAction.T_Origin)
                 {
-                    Robot1TAction = SERobotTAction.T_Origin;
+                    Robot1TAction = DERobotTAction.T_Origin;
                 }
-                if (Robot2TAction != SERobotTAction.T_Origin)
+                if (Robot2TAction != DERobotTAction.T_Origin)
                 {
-                    Robot2TAction = SERobotTAction.T_Origin;
+                    Robot2TAction = DERobotTAction.T_Origin;
                 }
             }
 

+ 102 - 88
Venus/Venus_MainPages/ViewModels/VenusDeOperationOverViewModel.cs

@@ -19,10 +19,11 @@ using ExcelLibrary.BinaryFileFormat;
 using MECF.Framework.Common.Schedulers;
 using Venus_MainPages.Views;
 using System.Windows;
-using static Venus_Themes.CustomControls.SERobot;
 using System.Security.RightsManagement;
 using System.Collections.ObjectModel;
 using Aitex.Core.Util;
+using static Venus_MainPages.ViewModels.VenusDETMViewModel;
+using static Venus_Themes.CustomControls.DERobot;
 
 namespace Venus_MainPages.ViewModels
 {
@@ -44,10 +45,10 @@ namespace Venus_MainPages.ViewModels
         public WaferInfo m_RobotUpperWafer;
         public WaferInfo m_RobotLowerWafer;
         public WaferInfo m_PAWafer;
-        private SERobotTAction m_Robot1TAction;
-        private SERobotXAction m_Robot1XAction;
-        private SERobotTAction m_Robot2TAction;
-        private SERobotXAction m_Robot2XAction;
+        private DERobotTAction m_Robot1TAction;
+        private DERobotXAction m_Robot1XAction;
+        private DERobotTAction m_Robot2TAction;
+        private DERobotXAction m_Robot2XAction;
         public RobotMoveInfo m_robotMoveInfo;
         private int m_VCEAWaferCount;
         private int m_VCEBWaferCount;
@@ -65,6 +66,8 @@ namespace Venus_MainPages.ViewModels
         private bool m_PMDDoorIsOpen;
         private bool m_VCEAOutDoorIsOpen;
         private bool m_VCEBOutDoorIsOpen;
+        private bool m_IsAlignerOnRight;
+
         private Dictionary<string, object> m_RtDataValues = new Dictionary<string, object>();
         private List<string> m_RtDataKeys = new List<string>();
         private double m_PMAPercent;
@@ -93,6 +96,11 @@ namespace Venus_MainPages.ViewModels
         #endregion
 
         #region 属性
+        public bool IsAligner1OnRight {
+            get => m_IsAlignerOnRight;
+            set => SetProperty(ref m_IsAlignerOnRight, value);
+        }
+
 
         public int CurrentSlotA
         {
@@ -131,7 +139,7 @@ namespace Venus_MainPages.ViewModels
             get { return m_VCEBIsVAC; }
             set { SetProperty(ref m_VCEBIsVAC, value); }
         }
-        public SERobotTAction Robot1TAction
+        public DERobotTAction Robot1TAction
         {
             get { return m_Robot1TAction; }
             set { SetProperty(ref m_Robot1TAction, value); }
@@ -139,17 +147,17 @@ namespace Venus_MainPages.ViewModels
         private DelegateCommand<object> _AbortJobCommand;
         public DelegateCommand<object> AbortJobCommand =>
             _AbortJobCommand ?? (_AbortJobCommand = new DelegateCommand<object>(OnAbortJob));
-        public SERobotXAction Robot1XAction
+        public DERobotXAction Robot1XAction
         {
             get { return m_Robot1XAction; }
             set { SetProperty(ref m_Robot1XAction, value); }
         }
-        public SERobotTAction Robot2TAction
+        public DERobotTAction Robot2TAction
         {
             get { return m_Robot2TAction; }
             set { SetProperty(ref m_Robot2TAction, value); }
         }
-        public SERobotXAction Robot2XAction
+        public DERobotXAction Robot2XAction
         {
             get { return m_Robot2XAction; }
             set { SetProperty(ref m_Robot2XAction, value); }
@@ -159,7 +167,7 @@ namespace Venus_MainPages.ViewModels
             get { return m_robotMoveInfo; }
             set
             {
-                //RobotMoveInfoChanged(m_robotMoveInfo, value);
+                RobotMoveInfoChanged(m_robotMoveInfo, value);
                 m_robotMoveInfo = value;
             }
         }
@@ -534,8 +542,11 @@ namespace Venus_MainPages.ViewModels
             PMDIsInstalled = allModules.Contains("PMD");
             VCEAIsInstalled = allModules.Contains("VCEA");
             VCEBIsInstalled = allModules.Contains("VCEB");
-
-
+            IsAligner1OnRight = true;
+            if (PMDIsInstalled == true)
+            {
+                IsAligner1OnRight = false;
+            }
             addDataKeys();
             RtDataValues = QueryDataClient.Instance.Service.PollData(m_RtDataKeys);
 
@@ -764,9 +775,15 @@ namespace Venus_MainPages.ViewModels
             m_RtDataKeys.Add($"TM.TMPressure.Value");
             m_RtDataKeys.Add($"TM.VCEAPressure.Value");
             m_RtDataKeys.Add($"TM.VCEBPressure.Value");
+            m_RtDataKeys.Add($"TM.IsOnline");
+
             m_RtDataKeys.Add($"VCEA.VCEOutDoorClosed");
+            m_RtDataKeys.Add($"VCEA.IsOnline");
+
             m_RtDataKeys.Add($"LP1.CassettePlaced");
             m_RtDataKeys.Add($"VCEB.VCEOutDoorClosed");
+            m_RtDataKeys.Add($"VCEB.IsOnline");
+
             m_RtDataKeys.Add($"LP2.CassettePlaced");
             m_RtDataKeys.Add($"SEScheduler.CycledWafer");
             m_RtDataKeys.Add($"SEScheduler.CycleSetPoint");
@@ -776,15 +793,22 @@ namespace Venus_MainPages.ViewModels
             m_RtDataKeys.Add($"PMA.ChamberPressure");
             m_RtDataKeys.Add($"PMA.VentingFlag");
             m_RtDataKeys.Add($"PMA.CurrentRecipeResult");
+            m_RtDataKeys.Add($"PMA.IsOnline");
             m_RtDataKeys.Add($"PMB.ChamberPressure");
             m_RtDataKeys.Add($"PMB.VentingFlag");
             m_RtDataKeys.Add($"PMB.CurrentRecipeResult");
+            m_RtDataKeys.Add($"PMB.IsOnline");
+
             m_RtDataKeys.Add($"PMC.ChamberPressure");
             m_RtDataKeys.Add($"PMC.VentingFlag");
             m_RtDataKeys.Add($"PMC.CurrentRecipeResult");
+            m_RtDataKeys.Add($"PMC.IsOnline");
+
             m_RtDataKeys.Add($"PMD.ChamberPressure");
             m_RtDataKeys.Add($"PMD.VentingFlag");
             m_RtDataKeys.Add($"PMD.CurrentRecipeResult");
+            m_RtDataKeys.Add($"PMD.IsOnline");
+
             m_RtDataKeys.Add($"VCEA.CurrentSlot");
             m_RtDataKeys.Add($"VCEB.CurrentSlot");
 
@@ -987,7 +1011,7 @@ namespace Venus_MainPages.ViewModels
                 if (PMDIsInstalled == true)
                 {
                     PMDModuleInfo = ModuleManager.ModuleInfos["PMD"];
-                    PMDWafer = PMCModuleInfo.WaferManager.Wafers[0];
+                    PMDWafer = PMDModuleInfo.WaferManager.Wafers[0];
                     PMDPercent = CommonFunction.GetValue<double>(RtDataValues, "PMD.ChamberPressure") * 260 / 750000;
                     PMDRecipeResult = CommonFunction.GetValue<RecipeResult>(RtDataValues, "PMD.CurrentRecipeResult");
                 }
@@ -1035,18 +1059,16 @@ namespace Venus_MainPages.ViewModels
                 var values = RobotTarget.Split('.');
                 var arm = values[0];
                 var module = values[1];
-                if (arm == "ArmA")
+                var DERobotTAction = (DERobotTAction)Enum.Parse(typeof(DERobotTAction), module, true);
+                if (DERobotTAction != Robot1TAction || DERobotTAction != Robot2TAction)
                 {
-                    Robot1TAction = (SERobotTAction)Enum.Parse(typeof(SERobotTAction), module, true);
-                }
-                else if (arm == "ArmB")
-                {
-                    Robot2TAction = (SERobotTAction)Enum.Parse(typeof(SERobotTAction), module, true);
+                    Robot1TAction = DERobotTAction;
+                    Robot2TAction = DERobotTAction;
                 }
             }
             #endregion
 
-            #region Aligner1、VCE1 Pick、Place
+            #region Aligner1、VCE Pick、Place
             else if ((oldValue.Action == RobotAction.None || oldValue.ArmTarget != newValue.ArmTarget) && (newValue.Action == RobotAction.Placing || newValue.Action == RobotAction.Picking))
             {
                 var TMRobotMoveActionBladeTarget = newValue.BladeTarget;
@@ -1061,60 +1083,62 @@ namespace Venus_MainPages.ViewModels
                 var values = RobotTarget.Split('.');
                 var arm = values[0];
                 var module = values[1];
+                if (module == "Aligner1")
+                {
+                    module = IsAligner1OnRight ? "PMD" : "Aligner1";
+                }
+                var DERobotTAction = (DERobotTAction)Enum.Parse(typeof(DERobotTAction), module, true);
+                if (DERobotTAction != Robot1TAction || DERobotTAction != Robot2TAction)
+                {
+                    Robot1TAction = DERobotTAction;
+                    Robot2TAction = DERobotTAction;
+                }
                 if (arm == "ArmA")
                 {
-                    var SERobotTAction = (SERobotTAction)Enum.Parse(typeof(SERobotTAction), module, true);
-                    if (SERobotTAction != Robot1TAction)
-                    {
-                        Robot1TAction = SERobotTAction;
-                    }
-                    else
-                    {
-                        //await Task.Delay(100);
-                    }
                     await Task.Delay(600);
-
-                    if (module == "VCE1")
+                    if (module == "VCEA" || module == "VCEB")
                     {
-                        Robot1XAction = SERobotXAction.ToVCE;
+                        Robot1XAction = DERobotXAction.ToVCE;
+                        while ((newValue.Action == RobotAction.Placing && ModuleManager.ModuleInfos["TMRobot"].WaferManager.Wafers[0].WaferStatus != 0) || (newValue.Action == RobotAction.Picking && ModuleManager.ModuleInfos["TMRobot"].WaferManager.Wafers[0].WaferStatus == 0))
+                        {
+                            await Task.Delay(100);
+                        }
+                        Robot1XAction = DERobotXAction.FromVCE;
                     }
                     else
                     {
-                        Robot1XAction = SERobotXAction.Extend;
+                        Robot1XAction = DERobotXAction.Extend;
+                        while ((newValue.Action == RobotAction.Placing && ModuleManager.ModuleInfos["TMRobot"].WaferManager.Wafers[0].WaferStatus != 0) || (newValue.Action == RobotAction.Picking && ModuleManager.ModuleInfos["TMRobot"].WaferManager.Wafers[0].WaferStatus == 0))
+                        {
+                            await Task.Delay(100);
+                        }
+                        Robot1XAction = DERobotXAction.Retract;
                     }
-                    while ((newValue.Action == RobotAction.Placing && ModuleManager.ModuleInfos["TMRobot"].WaferManager.Wafers[0].WaferStatus != 0) || (newValue.Action == RobotAction.Picking && ModuleManager.ModuleInfos["TMRobot"].WaferManager.Wafers[0].WaferStatus == 0))
-                    {
-                        await Task.Delay(100);
-                    }
-                    Robot1XAction = SERobotXAction.Retract;
+
                 }
                 else if (arm == "ArmB")
                 {
-                    var waferRobotTAction = (SERobotTAction)Enum.Parse(typeof(SERobotTAction), module, true);
-                    if (waferRobotTAction != Robot2TAction)
-                    {
-                        Robot2TAction = waferRobotTAction;
-                    }
-                    else
-                    {
-                        //await Task.Delay(100);
-                    }
                     await Task.Delay(600);
-                    if (module == "VCE1")
+                    if (module == "VCEA" || module == "VCEB")
                     {
-                        Robot2XAction = SERobotXAction.ToVCE2;
+                        Robot2XAction = DERobotXAction.ToVCE2;
+                        while ((newValue.Action == RobotAction.Placing && ModuleManager.ModuleInfos["TMRobot"].WaferManager.Wafers[1].WaferStatus != 0) || (newValue.Action == RobotAction.Picking && ModuleManager.ModuleInfos["TMRobot"].WaferManager.Wafers[1].WaferStatus == 0))
+                        {
+                            await Task.Delay(100);
+                        }
+                        Robot2XAction = DERobotXAction.FromVCE2;
                     }
                     else
                     {
-                        Robot2XAction = SERobotXAction.Extend2;
+                        Robot2XAction = DERobotXAction.Extend2;
+                        while ((newValue.Action == RobotAction.Placing && ModuleManager.ModuleInfos["TMRobot"].WaferManager.Wafers[1].WaferStatus != 0) || (newValue.Action == RobotAction.Picking && ModuleManager.ModuleInfos["TMRobot"].WaferManager.Wafers[1].WaferStatus == 0))
+                        {
+                            await Task.Delay(100);
+                        }
+                        Robot2XAction = DERobotXAction.Retract2;
                     }
-                    while ((newValue.Action == RobotAction.Placing && ModuleManager.ModuleInfos["TMRobot"].WaferManager.Wafers[1].WaferStatus != 0) || (newValue.Action == RobotAction.Picking && ModuleManager.ModuleInfos["TMRobot"].WaferManager.Wafers[1].WaferStatus == 0))
-                    {
-                        await Task.Delay(100);
-                    }
-                    Robot2XAction = SERobotXAction.Retract2;
-                }
 
+                }
             }
             #endregion
 
@@ -1133,35 +1157,21 @@ namespace Venus_MainPages.ViewModels
                 var values = RobotTarget.Split('.');
                 var arm = values[0];
                 var module = values[1];
+                var DERobotTAction = (DERobotTAction)Enum.Parse(typeof(DERobotTAction), module, true);
+                if (DERobotTAction != Robot1TAction || DERobotTAction != Robot2TAction)
+                {
+                    Robot1TAction = DERobotTAction;
+                    Robot2TAction = DERobotTAction;
+                }
                 if (arm == "ArmA")
                 {
-                    var SERobotTAction = (SERobotTAction)Enum.Parse(typeof(SERobotTAction), module, true);
-                    if (SERobotTAction != Robot1TAction)
-                    {
-                        Robot1TAction = SERobotTAction;
-                    }
-                    else
-                    {
-                        // await Task.Delay(100);
-                    }
                     await Task.Delay(600);
-
-                    Robot1XAction = SERobotXAction.Extend;
+                    Robot1XAction = DERobotXAction.Extend;
                 }
                 else if (arm == "ArmB")
                 {
-                    var SERobotTAction = (SERobotTAction)Enum.Parse(typeof(SERobotTAction), module, true);
-                    if (SERobotTAction != Robot2TAction)
-                    {
-                        Robot2TAction = SERobotTAction;
-                    }
-                    else
-                    {
-                        // await Task.Delay(100);
-                    }
                     await Task.Delay(600);
-
-                    Robot2XAction = SERobotXAction.Extend2;
+                    Robot2XAction = DERobotXAction.Extend2;
                 }
             }
 
@@ -1178,40 +1188,44 @@ namespace Venus_MainPages.ViewModels
                 }
                 var values = RobotTarget.Split('.');
                 var arm = values[0];
+
                 if (arm == "ArmA")
                 {
-                    Robot1XAction = SERobotXAction.Retract;
+                    await Task.Delay(100);
+                    Robot1XAction = DERobotXAction.Retract;
                 }
                 else if (arm == "ArmB")
                 {
-                    Robot2XAction = SERobotXAction.Retract2;
+                    await Task.Delay(100);
+                    Robot2XAction = DERobotXAction.Retract2;
                 }
             }
             #endregion
             #region Home
             else if (oldValue.Action == RobotAction.None && newValue.Action == RobotAction.Homing)
             {
-                if (Robot1XAction == SERobotXAction.Extend)
+                if (Robot1XAction == DERobotXAction.Extend)
                 {
-                    Robot1XAction = SERobotXAction.Retract;
+                    Robot1XAction = DERobotXAction.Retract;
                 }
-                if (Robot2XAction == SERobotXAction.Extend2)
+                if (Robot2XAction == DERobotXAction.Extend2)
                 {
-                    Robot2XAction = SERobotXAction.Retract2;
+                    Robot2XAction = DERobotXAction.Retract2;
                 }
                 await Task.Delay(2000);
-                if (Robot1TAction != SERobotTAction.T_Origin)
+                if (Robot1TAction != DERobotTAction.T_Origin)
                 {
-                    Robot1TAction = SERobotTAction.T_Origin;
+                    Robot1TAction = DERobotTAction.T_Origin;
                 }
-                if (Robot2TAction != SERobotTAction.T_Origin)
+                if (Robot2TAction != DERobotTAction.T_Origin)
                 {
-                    Robot2TAction = SERobotTAction.T_Origin;
+                    Robot2TAction = DERobotTAction.T_Origin;
                 }
             }
 
             #endregion
 
         }
+
     }
 }

+ 3 - 2
Venus/Venus_MainPages/Views/DETMOperationView.xaml

@@ -68,7 +68,7 @@
             <!-- 用于整体定位 -->
 
             <Canvas Canvas.Left="100" Canvas.Top="80">
-                <userControls:VenusDETM Canvas.Top="-50" Canvas.Left="442" PAWafer="{Binding PAWafer}" 
+                <userControls:VenusDETM Canvas.Top="-45" Canvas.Left="442" PAWafer="{Binding PAWafer}" 
                                             VCEAIsInstalled="{Binding VCEAIsInstalled}" 
                                             VCEBIsInstalled="{Binding VCEBIsInstalled}" 
                                             PMAIsInstalled="{Binding PMAIsInstalled}"
@@ -81,6 +81,7 @@
                                             PMBDoorIsOpen = "{Binding PMBDoorIsOpen}"
                                             PMCDoorIsOpen = "{Binding PMCDoorIsOpen}"
                                             PMDDoorIsOpen = "{Binding PMDDoorIsOpen}"
+                                            IsShowAisle="False"
                                             VPAIsShow ="False"  Panel.ZIndex="99"></userControls:VenusDETM>
                 <userControls:DEVceA  VCEName="" Canvas.Top="249" Canvas.Left="435" Width="150" Height="180" PressureValue="{Binding RtDataValues[TM.VCEAPressure.Value],TargetNullValue=0}" PercentValue="{Binding VCEPercent}" IsVenting="True" VCEOutDoorIsOpen="{Binding VCEOutDoorIsOpen}" CassetteArrive="{Binding RtDataValues[LP1.CassettePlaced]}" HorizontalAlignment="Center" VerticalAlignment="Top" Panel.ZIndex="1"></userControls:DEVceA>
                 <userControls:DEVceB  VCEName="" Canvas.Top="249" Canvas.Left="623" Width="150" Height="180" PressureValue="{Binding RtDataValues[TM.VCEBPressure.Value],TargetNullValue=0}" PercentValue="{Binding VCEPercent}" IsVenting="True" VCEOutDoorIsOpen="{Binding VCEOutDoorIsOpen}" CassetteArrive="{Binding RtDataValues[LP2.CassettePlaced]}" HorizontalAlignment="Left" VerticalAlignment="Center" Panel.ZIndex="1"></userControls:DEVceB>
@@ -452,7 +453,7 @@
 
         <!--选项卡-->
         <Canvas>
-            <TabControl Height="500" Width="400" Canvas.Left="1370" Canvas.Top="14" Background="Transparent" TabStripPlacement="Top">
+            <TabControl Height="500" Width="400" Canvas.Left="1370" Canvas.Top="14" BorderThickness="0" Background="Transparent" TabStripPlacement="Top">
                 <TabControl.Style>
                     <Style TargetType="{x:Type TabControl}">
                         <Setter Property="Background" Value="Transparent"></Setter>

File diff suppressed because it is too large
+ 37 - 20
Venus/Venus_MainPages/Views/VenusDETMView.xaml


+ 2 - 0
Venus/Venus_MainPages/Views/VenusDETMView.xaml.cs

@@ -12,6 +12,7 @@ using System.Windows.Media;
 using System.Windows.Media.Imaging;
 using System.Windows.Navigation;
 using System.Windows.Shapes;
+using Venus_Themes.CustomControls;
 
 namespace Venus_MainPages.Views
 {
@@ -24,5 +25,6 @@ namespace Venus_MainPages.Views
         {
             InitializeComponent();
         }
+
     }
 }

File diff suppressed because it is too large
+ 130 - 101
Venus/Venus_MainPages/Views/VenusDeOperationOverView.xaml


+ 4 - 0
Venus/Venus_RT/Config/TM/_ioDefineVenusDE_MF.xml

@@ -68,6 +68,8 @@
 		<DI_ITEM Index="64" Name="DI_TM_Soft_Pump"				Device="" Addr="w5.00"  Note="TM-Soft-pump" />
 		<DI_ITEM Index="65" Name="DI_TM_Soft_Vent"				Device="" Addr="w5.01"  Note="TM-Soft-vent" />
 		<DI_ITEM Index="66" Name="DI_TM_Fast_Pump"				Device="" Addr="w5.02"  Note="TM-Fast-Pump" />
+		<DI_ITEM Index="67" Name="DI_PMD_SlitDoor_Open_POS"		Device="" Addr="w5.11" Note="PMD SlitDoor Open POS" />
+		<DI_ITEM Index="68" Name="DI_PMD_SlitDoor_Close_POS"	Device="" Addr="w5.12" Note="PMD SlitDoor Close POS" />
 		
 	</Dig_In>
 	<Dig_Out>
@@ -105,6 +107,8 @@
 		<DO_ITEM Index="31"  Name="DO_Smif2_Load_Unload" Device="" Addr="w202.00" Note="2#smif load/unload"/>
 		<DO_ITEM Index="32"  Name="DO_Flow_Mode" Device="" Addr="w202.14" Note="恒流模式"/>
 		<DO_ITEM Index="33"  Name="DO_Pressure_Mode" Device="" Addr="w202.15" Note="控压模式"/>
+		<DO_ITEM Index="34"   Name="DO_PMD_SlitDoor_Open" Device="" Addr="w203.01" Note="PMD-slit-door-open"/>
+		<DO_ITEM Index="35"   Name="DO_PMD_SlitDoor_Close" Device="" Addr="w203.02" Note="PMD-slit-door-close"/>
 		
 	</Dig_Out>
 	<Ana_Out>

+ 2 - 0
Venus/Venus_RT/Devices/TM/HongHuVR.cs

@@ -289,6 +289,8 @@ namespace Venus_RT.Devices.VCE
         {
             _currentStep = VRStep.Pick;
             _status = RState.Running;
+            SetRobotMovingInfo(RobotAction.Picking, hand, station);
+
             return _SendCommand($"PICK {_StationNumbers[station.ToString()]} ARM {Hand2Arm(hand)} RO {Roffset} TO {Toffset}"); ;
         }
         public bool ReQueryLoadA()

+ 3 - 1
Venus/Venus_RT/Modules/TM/VenusEntity/SEMFPMPickRoutine.cs

@@ -196,7 +196,6 @@ namespace Venus_RT.Modules.TM.VenusEntity
             }
             else if (_robot.Status == RState.End)
             {
-                WaferManager.Instance.WaferMoved(_targetModule, _targetSlot, ModuleName.TMRobot, (int)_hand);
                 return true;
             }
             else
@@ -252,6 +251,9 @@ namespace Venus_RT.Modules.TM.VenusEntity
 
         private bool WaitPMWaferDropDown()
         {
+            if(_pmModule.Status == PMEntity.PMStatus.Exchange_Ready)
+                WaferManager.Instance.WaferMoved(_targetModule, _targetSlot, ModuleName.TMRobot, (int)_hand);
+
             return _pmModule.Status == PMEntity.PMStatus.Exchange_Ready;
         }
 

+ 3 - 2
Venus/Venus_RT/Modules/TM/VenusEntity/SEMFPMPlaceRoutine.cs

@@ -261,6 +261,9 @@ namespace Venus_RT.Modules.TM.VenusEntity
 
         private bool WaitPMWaferLiftUp()
         {
+            if(_pmModule.Status == PMEntity.PMStatus.Exchange_Ready)
+                WaferManager.Instance.WaferMoved(ModuleName.TMRobot, (int)_hand, _targetModule, _targetSlot);
+
             return _pmModule.Status == PMEntity.PMStatus.Exchange_Ready;
         }
 
@@ -272,8 +275,6 @@ namespace Venus_RT.Modules.TM.VenusEntity
             }
             else if (_robot.Status == RState.End)
             {
-
-                WaferManager.Instance.WaferMoved(ModuleName.TMRobot, (int)_hand, _targetModule, _targetSlot);
                 return true;
             }
             else

+ 4 - 0
Venus/Venus_Simulator/Config/_ioDefineVenusDE_MF.xml

@@ -68,6 +68,8 @@
 		<DI_ITEM Index="64" Name="DI_TM_Soft_Pump"				Device="" Addr="w5.00"  Note="TM-Soft-pump" />
 		<DI_ITEM Index="65" Name="DI_TM_Soft_Vent"				Device="" Addr="w5.01"  Note="TM-Soft-vent" />
 		<DI_ITEM Index="66" Name="DI_TM_Fast_Pump"				Device="" Addr="w5.02"  Note="TM-Fast-Pump" />
+		<DI_ITEM Index="67" Name="DI_PMD_SlitDoor_Open_POS"		Device="" Addr="w5.11" Note="PMD SlitDoor Open POS" />
+		<DI_ITEM Index="68" Name="DI_PMD_SlitDoor_Close_POS"	Device="" Addr="w5.12" Note="PMD SlitDoor Close POS" />
 		
 	</Dig_In>
 	<Dig_Out>
@@ -103,6 +105,8 @@
 		<DO_ITEM Index="29"  Name="DO_Allow_PowerOff" Device="" Addr="w201.13" Note="系统允许断电"/>
 		<DO_ITEM Index="30"  Name="DO_Smif1_Load_Unload" Device="" Addr="w201.15" Note="1#smif load/unload"/>
 		<DO_ITEM Index="31"  Name="DO_Smif2_Load_Unload" Device="" Addr="w202.00" Note="2#smif load/unload"/>
+		<DO_ITEM Index="34"   Name="DO_PMD_SlitDoor_Open" Device="" Addr="w203.01" Note="PMD-slit-door-open"/>
+		<DO_ITEM Index="35"   Name="DO_PMD_SlitDoor_Close" Device="" Addr="w203.02" Note="PMD-slit-door-close"/>
 	</Dig_Out>
 	<Ana_Out>
 		<AO_ITEM Index="8" Name="AO_MFC_Flow_Setpoint" BufferOffset="8" Device="" Addr="d1016"  Note="MFC Flow Setpoint" />

+ 13 - 1
Venus/Venus_Simulator/Instances/SimulatorSystem.cs

@@ -1193,7 +1193,19 @@ namespace Venus_Simulator.Instances
                 IO.DI[$"{mod}.DI_PMC_SlitDoor_Open_POS"].Value = false;
                 IO.DI[$"{mod}.DI_PMC_SlitDoor_Close_POS"].Value = true;
             }
-			if (IO.DO[$"{mod}.DO_TM_Soft_Pump"].Value)
+            if (IO.DO[$"{mod}.DO_PMD_SlitDoor_Open"].Value)
+            {
+
+                IO.DI[$"{mod}.DI_PMD_SlitDoor_Open_POS"].Value = true;
+                IO.DI[$"{mod}.DI_PMD_SlitDoor_Close_POS"].Value = false;
+            }
+
+            if (IO.DO[$"{mod}.DO_PMD_SlitDoor_Close"].Value)
+            {
+                IO.DI[$"{mod}.DI_PMD_SlitDoor_Open_POS"].Value = false;
+                IO.DI[$"{mod}.DI_PMD_SlitDoor_Close_POS"].Value = true;
+            }
+            if (IO.DO[$"{mod}.DO_TM_Soft_Pump"].Value)
             {
                 IO.DI[$"{mod}.DI_TM_Soft_Pump"].Value = true;
             }

+ 27 - 0
Venus/Venus_Themes/Converters/BoolToAngle.cs

@@ -0,0 +1,27 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Data;
+
+namespace Venus_Themes.Converters
+{
+    public class BoolToAngle : IValueConverter
+    {
+        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
+        {
+            if (value == null) return 0;
+
+            return (bool)value ? 0 : 120;
+        }
+
+        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
+        {
+            return null;
+
+        }
+    }
+}
+

+ 26 - 0
Venus/Venus_Themes/Converters/BoolToAngle2.cs

@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Data;
+
+namespace Venus_Themes.Converters
+{
+    public class BoolToAngle2 : IValueConverter
+    {
+        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
+        {
+            if (value == null) return 0;
+
+            return (bool)value ? 0 : -180;
+        }
+
+        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
+        {
+            return null;
+
+        }
+    }
+}

+ 197 - 0
Venus/Venus_Themes/CustomControls/DERobot.cs

@@ -0,0 +1,197 @@
+using OpenSEMI.ClientBase;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Media.Animation;
+
+namespace Venus_Themes.CustomControls
+{
+    public class DERobot: Control
+    {
+        public enum DERobotXAction
+        {
+            X_Origin,
+            Extend,
+            ToVCE,
+            FromVCE,
+            Retract,
+            X_Origin2,
+            Extend2,
+            ToVCE2,
+            FromVCE2,
+            Retract2
+        }
+
+        public enum DERobotTAction
+        {
+            T_Origin,
+            PMA,
+            PMB,
+            PMC,
+            PMD,
+            VCEA,
+            VCEB,
+            Aligner1
+
+        }
+        static DERobot()
+        {
+            DefaultStyleKeyProperty.OverrideMetadata(typeof(DERobot), new FrameworkPropertyMetadata(typeof(DERobot)));
+        }
+        //注册Wafer、ExtendTime、RobotWafer、RobotXAction属性
+
+        public static readonly DependencyProperty WaferProperty = DependencyProperty.Register("Wafer", typeof(int), typeof(DERobot));
+        public int Wafer { get => (int)GetValue(WaferProperty); set => SetValue(WaferProperty, value); }
+
+
+        public static readonly DependencyProperty ExtendTimeProperty = DependencyProperty.Register("ExtendTime", typeof(KeyTime), typeof(DERobot), new PropertyMetadata(KeyTime.FromTimeSpan(TimeSpan.FromSeconds(9))));
+        public KeyTime ExtendTime { get => (KeyTime)GetValue(ExtendTimeProperty); set => SetValue(ExtendTimeProperty, value); }
+
+        public static readonly DependencyProperty RobotWaferProperty = DependencyProperty.Register(
+          "RobotWafer",
+          typeof(WaferInfo),
+          typeof(DERobot));
+
+        public WaferInfo RobotWafer
+        {
+            get => (WaferInfo)GetValue(RobotWaferProperty);
+            set => SetValue(RobotWaferProperty, value);
+        }
+
+        public static readonly DependencyProperty RobotXActionProperty = DependencyProperty.Register(
+            "RobotXAction",
+            typeof(DERobotXAction),
+            typeof(DERobot),
+            new PropertyMetadata(DERobotXAction.X_Origin, RobotXActionPropertyChangedCallback));
+        public DERobotXAction RobotXAction
+        {
+            get => (DERobotXAction)GetValue(RobotXActionProperty);
+            set => SetValue(RobotXActionProperty, value);
+        }
+        //RobotXAction依赖属性的值被改变之后此委托会被调用
+        private static void RobotXActionPropertyChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e)
+        {
+            var control = d as DERobot;
+            var oldAct = (DERobotXAction)e.OldValue; //现在的位置
+            var newAct = (DERobotXAction)e.NewValue; //下一个位置
+            switch (newAct)
+            {
+                case DERobotXAction.X_Origin:
+                    VisualStateManager.GoToState(control, newAct.ToString(), true);
+                    break;
+                case DERobotXAction.Extend:
+                    if (newAct != oldAct)
+                    {
+                        VisualStateManager.GoToState(control, newAct.ToString(), true);
+                    }
+                    break;
+                case DERobotXAction.Retract:
+                    if (newAct != oldAct)
+                    {
+                        VisualStateManager.GoToState(control, newAct.ToString(), true);
+                    }
+                    break;
+                case DERobotXAction.ToVCE:
+                    if (newAct != oldAct)
+                    {
+                        VisualStateManager.GoToState(control, newAct.ToString(), true);
+                    }
+                    break;
+                case DERobotXAction.FromVCE:
+                    if (newAct != oldAct)
+                    {
+                        VisualStateManager.GoToState(control, newAct.ToString(), true);
+                    }
+                    break;
+                case DERobotXAction.X_Origin2:
+                    VisualStateManager.GoToState(control, newAct.ToString(), true);
+                    break;
+                case DERobotXAction.Extend2:
+                    if (newAct != oldAct)
+                    {
+                        VisualStateManager.GoToState(control, newAct.ToString(), true);
+                    }
+                    break;
+                case DERobotXAction.Retract2:
+                    if (newAct != oldAct)
+                    {
+                        VisualStateManager.GoToState(control, newAct.ToString(), true);
+                    }
+                    break;
+                case DERobotXAction.ToVCE2:
+                    if (newAct != oldAct)
+                    {
+                        VisualStateManager.GoToState(control, newAct.ToString(), true);
+                    }
+                    break;
+                case DERobotXAction.FromVCE2:
+                    if (newAct != oldAct)
+                    {
+                        VisualStateManager.GoToState(control, newAct.ToString(), true);
+                    }
+                    break;
+                default:
+                    break;
+            }
+        }
+
+        public static readonly DependencyProperty RobotTActionProperty = DependencyProperty.Register(
+            "RobotTAction",
+            typeof(DERobotTAction),
+            typeof(DERobot),
+            new PropertyMetadata(DERobotTAction.T_Origin, RobotTActionPropertyChangedCallback));
+
+        public DERobotTAction RobotTAction
+        {
+            get => (DERobotTAction)GetValue(RobotTActionProperty);
+            set => SetValue(RobotTActionProperty, value);
+        }
+
+        public static readonly DependencyProperty RobotSpeedProperty = DependencyProperty.Register(
+           "RobotSpeed",
+           typeof(double),
+           typeof(DERobot),
+            new PropertyMetadata(9.0d, RobotSpeedPropertyChangedCallback));
+
+        public double RobotSpeed
+        {
+            get => (double)GetValue(RobotSpeedProperty);
+            set => SetValue(RobotSpeedProperty, value);
+        }
+        private static void RobotSpeedPropertyChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e)
+        {
+
+
+        }
+        public string OriginX { get; set; }
+        public string OriginT { get; set; }
+
+        private static void RobotTActionPropertyChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e)
+        {
+            var control = d as DERobot;
+            var oldAct = (DERobotTAction)e.OldValue;
+            var newAct = (DERobotTAction)e.NewValue;
+            //while (newAct.ToString() == "Aligner1" && !control.PMDIsInstalled)
+            //{
+            //    newAct = DERobotTAction.VPARight;
+            //}
+            if (oldAct != newAct)
+            {
+                VisualStateManager.GoToState(control, newAct.ToString(), true);//前后动作不一致,改变控件状态
+            }
+        }
+
+        public override void OnApplyTemplate()
+        {
+            base.OnApplyTemplate();
+            VisualStateManager.GoToState(this, OriginX, true);
+            //VisualStateManager.GoToState(this, DERobotXAction.X_Origin.ToString(), true);
+
+            VisualStateManager.GoToState(this, OriginT, true);
+        }
+    }
+}

+ 662 - 0
Venus/Venus_Themes/Themes/Generic.xaml

@@ -1129,6 +1129,668 @@
             </Setter.Value>
         </Setter>
     </Style>
+    <Style TargetType="{x:Type customControls:DERobot}" >
+        <!--<Setter Property="Cursor" Value="Hand" />-->
+        <Setter Property="Width" Value="200"/>
+        <Setter Property="Height" Value="230"/>
+        <Setter Property="Template">
+            <Setter.Value>
+                <ControlTemplate TargetType="{x:Type customControls:DERobot}">
+                    <Viewbox x:Name="viewbox" Stretch="Fill">
+                        <VisualStateManager.VisualStateGroups>
+                            <VisualStateGroup Name="RobotXActions">
+                                <VisualStateGroup.Transitions>
+                                    <VisualTransition To="Extend">
+                                        <Storyboard FillBehavior="HoldEnd" Timeline.SpeedRatio="13">
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT1RotateAct" Storyboard.TargetProperty="Angle">
+                                                <LinearDoubleKeyFrame Value="-120" KeyTime="0:0:0"/>
+                                                <LinearDoubleKeyFrame Value="-90" KeyTime="0:0:6"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                            <!--中臂-->
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2ArmRotateAct" Storyboard.TargetProperty="Angle">
+                                                <LinearDoubleKeyFrame Value="-115" KeyTime="0:0:0"/>
+                                                <LinearDoubleKeyFrame Value="-210" KeyTime="0:0:6"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                            <!--前臂-->
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT3ArmTranslateAct" Storyboard.TargetProperty="X">
+                                                <LinearDoubleKeyFrame Value="225" KeyTime="0:0:0"/>
+                                                <LinearDoubleKeyFrame Value="110" KeyTime="0:0:6"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT3ArmTranslateAct" Storyboard.TargetProperty="Y">
+                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:6"/>
+                                                <LinearDoubleKeyFrame Value="-5" KeyTime="0:0:5"/>
+                                                <LinearDoubleKeyFrame Value="-10" KeyTime="0:0:4"/>
+                                                <LinearDoubleKeyFrame Value="-11" KeyTime="0:0:3"/>
+                                                <LinearDoubleKeyFrame Value="-10" KeyTime="0:0:2"/>
+                                                <LinearDoubleKeyFrame Value="-5" KeyTime="0:0:1"/>
+                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                        </Storyboard>
+                                    </VisualTransition>
+                                    <VisualTransition To="Retract">
+                                        <Storyboard FillBehavior="HoldEnd" SpeedRatio="14">
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT1RotateAct" Storyboard.TargetProperty="Angle">
+                                                <LinearDoubleKeyFrame Value="-90" KeyTime="0:0:0"/>
+                                                <LinearDoubleKeyFrame Value="-115" KeyTime="0:0:6"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                            <!--中臂-->
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2ArmRotateAct" Storyboard.TargetProperty="Angle">
+                                                <LinearDoubleKeyFrame Value="-210" KeyTime="0:0:0"/>
+                                                <LinearDoubleKeyFrame Value="-120" KeyTime="0:0:6"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                            <!--前臂-->
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT3ArmTranslateAct" Storyboard.TargetProperty="X">
+                                                <LinearDoubleKeyFrame Value="110" KeyTime="0:0:0"/>
+                                                <LinearDoubleKeyFrame Value="225" KeyTime="0:0:6"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT3ArmTranslateAct" Storyboard.TargetProperty="Y">
+                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
+                                                <LinearDoubleKeyFrame Value="-5" KeyTime="0:0:1"/>
+                                                <LinearDoubleKeyFrame Value="-10" KeyTime="0:0:2"/>
+                                                <LinearDoubleKeyFrame Value="-11" KeyTime="0:0:3"/>
+                                                <LinearDoubleKeyFrame Value="-10" KeyTime="0:0:4"/>
+                                                <LinearDoubleKeyFrame Value="-5" KeyTime="0:0:5"/>
+                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:6"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                        </Storyboard>
+                                    </VisualTransition>
+                                    <VisualTransition To="ToVCE">
+                                        <Storyboard FillBehavior="HoldEnd" SpeedRatio="14">
+                                            <!--后臂+底座-->
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT1RotateAct" Storyboard.TargetProperty="Angle">
+                                                <LinearDoubleKeyFrame Value="-115" KeyTime="0:0:0"/>
+                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:6"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                            <!--中臂-->
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2ArmRotateAct" Storyboard.TargetProperty="Angle">
+                                                <LinearDoubleKeyFrame Value="-120" KeyTime="0:0:0"/>
+                                                <LinearDoubleKeyFrame Value="-360" KeyTime="0:0:6"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                            <!--前臂-->
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT3ArmTranslateAct" Storyboard.TargetProperty="X">
+                                                <LinearDoubleKeyFrame Value="225" KeyTime="0:0:0"/>
+                                                <LinearDoubleKeyFrame Value="178" KeyTime="0:0:1"/>
+                                                <LinearDoubleKeyFrame Value="127" KeyTime="0:0:2"/>
+                                                <LinearDoubleKeyFrame Value="80" KeyTime="0:0:3"/>
+                                                <LinearDoubleKeyFrame Value="40" KeyTime="0:0:4"/>
+                                                <LinearDoubleKeyFrame Value="10" KeyTime="0:0:5"/>
+                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:6"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT3ArmTranslateAct" Storyboard.TargetProperty="Y">
+                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
+                                                <LinearDoubleKeyFrame Value="-7" KeyTime="0:0:1"/>
+                                                <LinearDoubleKeyFrame Value="-10" KeyTime="0:0:2"/>
+                                                <LinearDoubleKeyFrame Value="-10" KeyTime="0:0:3"/>
+                                                <LinearDoubleKeyFrame Value="-8" KeyTime="0:0:4"/>
+                                                <LinearDoubleKeyFrame Value="-5" KeyTime="0:0:5"/>
+                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:6"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                        </Storyboard>
+                                    </VisualTransition>
+                                    <VisualTransition To="FromVCE">
+                                        <Storyboard FillBehavior="HoldEnd" SpeedRatio="14">
+                                            <!--后臂+底座-->
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT1RotateAct" Storyboard.TargetProperty="Angle">
+                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
+                                                <LinearDoubleKeyFrame Value="-115" KeyTime="0:0:6"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                            <!--中臂-->
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2ArmRotateAct" Storyboard.TargetProperty="Angle">
+                                                <LinearDoubleKeyFrame Value="-360" KeyTime="0:0:0"/>
+                                                <LinearDoubleKeyFrame Value="-120" KeyTime="0:0:6"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                            <!--前臂-->
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT3ArmTranslateAct" Storyboard.TargetProperty="X">
+                                                <LinearDoubleKeyFrame Value="225" KeyTime="0:0:6"/>
+                                                <LinearDoubleKeyFrame Value="178" KeyTime="0:0:5"/>
+                                                <LinearDoubleKeyFrame Value="127" KeyTime="0:0:4"/>
+                                                <LinearDoubleKeyFrame Value="80" KeyTime="0:0:3"/>
+                                                <LinearDoubleKeyFrame Value="40" KeyTime="0:0:2"/>
+                                                <LinearDoubleKeyFrame Value="10" KeyTime="0:0:1"/>
+                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT3ArmTranslateAct" Storyboard.TargetProperty="Y">
+                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:6"/>
+                                                <LinearDoubleKeyFrame Value="-7" KeyTime="0:0:5"/>
+                                                <LinearDoubleKeyFrame Value="-10" KeyTime="0:0:4"/>
+                                                <LinearDoubleKeyFrame Value="-10" KeyTime="0:0:3"/>
+                                                <LinearDoubleKeyFrame Value="-8" KeyTime="0:0:2"/>
+                                                <LinearDoubleKeyFrame Value="-5" KeyTime="0:0:1"/>
+                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                        </Storyboard>
+                                    </VisualTransition>
+                                    <VisualTransition To="FromVCEToVPA">
+                                        <Storyboard FillBehavior="HoldEnd" SpeedRatio="14">
+                                            <!--后臂+底座-->
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT1RotateAct" Storyboard.TargetProperty="Angle">
+                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
+                                                <LinearDoubleKeyFrame Value="-90" KeyTime="0:0:6"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                            <!--中臂-->
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2ArmRotateAct" Storyboard.TargetProperty="Angle">
+                                                <LinearDoubleKeyFrame Value="-360" KeyTime="0:0:0"/>
+                                                <LinearDoubleKeyFrame Value="-210" KeyTime="0:0:6"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                            <!--前臂-->
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT3ArmTranslateAct" Storyboard.TargetProperty="X">
+                                                <LinearDoubleKeyFrame Value="110" KeyTime="0:0:6"/>
+                                                <LinearDoubleKeyFrame Value="82" KeyTime="0:0:5"/>
+                                                <LinearDoubleKeyFrame Value="55" KeyTime="0:0:4"/>
+                                                <LinearDoubleKeyFrame Value="32" KeyTime="0:0:3"/>
+                                                <LinearDoubleKeyFrame Value="15" KeyTime="0:0:2"/>
+                                                <LinearDoubleKeyFrame Value="5" KeyTime="0:0:1"/>
+                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT3ArmTranslateAct" Storyboard.TargetProperty="Y">
+                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:6"/>
+                                                <LinearDoubleKeyFrame Value="5" KeyTime="0:0:5"/>
+                                                <LinearDoubleKeyFrame Value="8" KeyTime="0:0:4"/>
+                                                <LinearDoubleKeyFrame Value="8" KeyTime="0:0:3"/>
+                                                <LinearDoubleKeyFrame Value="6" KeyTime="0:0:2"/>
+                                                <LinearDoubleKeyFrame Value="4" KeyTime="0:0:1"/>
+                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                        </Storyboard>
+                                    </VisualTransition>
+                                </VisualStateGroup.Transitions>
+                                <VisualState Name="X_Origin">
+                                    <Storyboard FillBehavior="HoldEnd">
+                                        <!--后臂+底座-->
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT1RotateAct" Storyboard.TargetProperty="Angle">
+                                            <LinearDoubleKeyFrame Value="-115" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                        <!--中臂-->
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2ArmRotateAct" Storyboard.TargetProperty="Angle">
+                                            <LinearDoubleKeyFrame Value="-120" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                        <!--前臂-->
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT3ArmTranslateAct" Storyboard.TargetProperty="X">
+                                            <LinearDoubleKeyFrame Value="225" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                    </Storyboard>
+                                </VisualState>
+                                <VisualState Name="ToVCE">
+                                    <Storyboard FillBehavior="HoldEnd">
+                                        <!--后臂+底座-->
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT1RotateAct" Storyboard.TargetProperty="Angle">
+                                            <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                        <!--中臂-->
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2ArmRotateAct" Storyboard.TargetProperty="Angle">
+                                            <LinearDoubleKeyFrame Value="-360" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                        <!--前臂-->
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT3ArmTranslateAct" Storyboard.TargetProperty="X">
+                                            <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                    </Storyboard>
+                                </VisualState>
+                                <VisualState Name="FromVCE">
+                                    <Storyboard FillBehavior="HoldEnd">
+                                        <!--后臂+底座-->
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT1RotateAct" Storyboard.TargetProperty="Angle">
+                                            <LinearDoubleKeyFrame Value="-115" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                        <!--中臂-->
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2ArmRotateAct" Storyboard.TargetProperty="Angle">
+                                            <LinearDoubleKeyFrame Value="-120" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                        <!--前臂-->
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT3ArmTranslateAct" Storyboard.TargetProperty="X">
+                                            <LinearDoubleKeyFrame Value="225" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                    </Storyboard>
+                                </VisualState>
+                                <VisualState Name="FromVCEToVPA">
+                                    <Storyboard FillBehavior="HoldEnd">
+                                        <!--后臂+底座-->
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT1RotateAct" Storyboard.TargetProperty="Angle">
+                                            <LinearDoubleKeyFrame Value="-90" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                        <!--中臂-->
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2ArmRotateAct" Storyboard.TargetProperty="Angle">
+                                            <LinearDoubleKeyFrame Value="-210" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                        <!--前臂-->
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT3ArmTranslateAct" Storyboard.TargetProperty="X">
+                                            <LinearDoubleKeyFrame Value="110" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                    </Storyboard>
+                                </VisualState>
+                                <VisualState Name="Extend">
+                                    <Storyboard FillBehavior="HoldEnd">
+                                        <!--后臂+底座-->
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT1RotateAct" Storyboard.TargetProperty="Angle">
+                                            <LinearDoubleKeyFrame Value="-90" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                        <!--中臂-->
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2ArmRotateAct" Storyboard.TargetProperty="Angle">
+                                            <LinearDoubleKeyFrame Value="-210" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                        <!--前臂-->
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT3ArmTranslateAct" Storyboard.TargetProperty="X">
+                                            <LinearDoubleKeyFrame Value="110" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                    </Storyboard>
+                                </VisualState>
+
+                                <VisualState Name="Retract">
+                                    <Storyboard FillBehavior="HoldEnd">
+                                        <!--后臂+底座-->
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT1RotateAct" Storyboard.TargetProperty="Angle">
+                                            <LinearDoubleKeyFrame Value="-115" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                        <!--中臂-->
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2ArmRotateAct" Storyboard.TargetProperty="Angle">
+                                            <LinearDoubleKeyFrame Value="-120" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                        <!--前臂-->
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT3ArmTranslateAct" Storyboard.TargetProperty="X">
+                                            <LinearDoubleKeyFrame Value="225" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                    </Storyboard>
+                                </VisualState>
+                            </VisualStateGroup>
+                            <!--ArmB动画-->
+                            <VisualStateGroup Name="RobotXActions2">
+                                <VisualStateGroup.Transitions>
+                                    <VisualTransition To="Extend2">
+                                        <Storyboard FillBehavior="HoldEnd" Timeline.SpeedRatio="13">
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT1RotateAct" Storyboard.TargetProperty="Angle">
+                                                <LinearDoubleKeyFrame Value="120" KeyTime="0:0:0"/>
+                                                <LinearDoubleKeyFrame Value="90" KeyTime="0:0:6"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                            <!--中臂-->
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2ArmRotateAct" Storyboard.TargetProperty="Angle">
+                                                <LinearDoubleKeyFrame Value="115" KeyTime="0:0:0"/>
+                                                <LinearDoubleKeyFrame Value="210" KeyTime="0:0:6"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                            <!--前臂-->
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT3ArmTranslateAct" Storyboard.TargetProperty="X">
+                                                <LinearDoubleKeyFrame Value="225" KeyTime="0:0:0"/>
+                                                <LinearDoubleKeyFrame Value="110" KeyTime="0:0:6"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT3ArmTranslateAct" Storyboard.TargetProperty="Y">
+                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:6"/>
+                                                <LinearDoubleKeyFrame Value="5" KeyTime="0:0:5"/>
+                                                <LinearDoubleKeyFrame Value="10" KeyTime="0:0:4"/>
+                                                <LinearDoubleKeyFrame Value="11" KeyTime="0:0:3"/>
+                                                <LinearDoubleKeyFrame Value="10" KeyTime="0:0:2"/>
+                                                <LinearDoubleKeyFrame Value="5" KeyTime="0:0:1"/>
+                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                        </Storyboard>
+                                    </VisualTransition>
+                                    <VisualTransition To="Retract2">
+                                        <Storyboard FillBehavior="HoldEnd" SpeedRatio="14">
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT1RotateAct" Storyboard.TargetProperty="Angle">
+                                                <LinearDoubleKeyFrame Value="90" KeyTime="0:0:0"/>
+                                                <LinearDoubleKeyFrame Value="115" KeyTime="0:0:6"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                            <!--中臂-->
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2ArmRotateAct" Storyboard.TargetProperty="Angle">
+                                                <LinearDoubleKeyFrame Value="210" KeyTime="0:0:0"/>
+                                                <LinearDoubleKeyFrame Value="120" KeyTime="0:0:6"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                            <!--前臂-->
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT3ArmTranslateAct" Storyboard.TargetProperty="X">
+                                                <LinearDoubleKeyFrame Value="110" KeyTime="0:0:0"/>
+                                                <LinearDoubleKeyFrame Value="225" KeyTime="0:0:6"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT3ArmTranslateAct" Storyboard.TargetProperty="Y">
+                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
+                                                <LinearDoubleKeyFrame Value="5" KeyTime="0:0:1"/>
+                                                <LinearDoubleKeyFrame Value="10" KeyTime="0:0:2"/>
+                                                <LinearDoubleKeyFrame Value="11" KeyTime="0:0:3"/>
+                                                <LinearDoubleKeyFrame Value="10" KeyTime="0:0:4"/>
+                                                <LinearDoubleKeyFrame Value="5" KeyTime="0:0:5"/>
+                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:6"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                        </Storyboard>
+                                    </VisualTransition>
+                                    <VisualTransition To="ToVCE2">
+                                        <Storyboard FillBehavior="HoldEnd" SpeedRatio="14">
+                                            <!--后臂+底座-->
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT1RotateAct" Storyboard.TargetProperty="Angle">
+                                                <LinearDoubleKeyFrame Value="115" KeyTime="0:0:0"/>
+                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:6"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                            <!--中臂-->
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2ArmRotateAct" Storyboard.TargetProperty="Angle">
+                                                <LinearDoubleKeyFrame Value="120" KeyTime="0:0:0"/>
+                                                <LinearDoubleKeyFrame Value="360" KeyTime="0:0:6"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                            <!--前臂-->
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT3ArmTranslateAct" Storyboard.TargetProperty="X">
+                                                <LinearDoubleKeyFrame Value="225" KeyTime="0:0:0"/>
+                                                <LinearDoubleKeyFrame Value="178" KeyTime="0:0:1"/>
+                                                <LinearDoubleKeyFrame Value="127" KeyTime="0:0:2"/>
+                                                <LinearDoubleKeyFrame Value="80" KeyTime="0:0:3"/>
+                                                <LinearDoubleKeyFrame Value="40" KeyTime="0:0:4"/>
+                                                <LinearDoubleKeyFrame Value="10" KeyTime="0:0:5"/>
+                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:6"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT3ArmTranslateAct" Storyboard.TargetProperty="Y">
+                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
+                                                <LinearDoubleKeyFrame Value="7" KeyTime="0:0:1"/>
+                                                <LinearDoubleKeyFrame Value="10" KeyTime="0:0:2"/>
+                                                <LinearDoubleKeyFrame Value="10" KeyTime="0:0:3"/>
+                                                <LinearDoubleKeyFrame Value="8" KeyTime="0:0:4"/>
+                                                <LinearDoubleKeyFrame Value="5" KeyTime="0:0:5"/>
+                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:6"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                        </Storyboard>
+                                    </VisualTransition>
+                                    <VisualTransition To="FromVCE2">
+                                        <Storyboard FillBehavior="HoldEnd" SpeedRatio="14">
+                                            <!--后臂+底座-->
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT1RotateAct" Storyboard.TargetProperty="Angle">
+                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
+                                                <LinearDoubleKeyFrame Value="115" KeyTime="0:0:6"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                            <!--中臂-->
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2ArmRotateAct" Storyboard.TargetProperty="Angle">
+                                                <LinearDoubleKeyFrame Value="360" KeyTime="0:0:0"/>
+                                                <LinearDoubleKeyFrame Value="120" KeyTime="0:0:6"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                            <!--前臂-->
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT3ArmTranslateAct" Storyboard.TargetProperty="X">
+                                                <LinearDoubleKeyFrame Value="225" KeyTime="0:0:6"/>
+                                                <LinearDoubleKeyFrame Value="178" KeyTime="0:0:5"/>
+                                                <LinearDoubleKeyFrame Value="127" KeyTime="0:0:4"/>
+                                                <LinearDoubleKeyFrame Value="80" KeyTime="0:0:3"/>
+                                                <LinearDoubleKeyFrame Value="40" KeyTime="0:0:2"/>
+                                                <LinearDoubleKeyFrame Value="10" KeyTime="0:0:1"/>
+                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT3ArmTranslateAct" Storyboard.TargetProperty="Y">
+                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:6"/>
+                                                <LinearDoubleKeyFrame Value="7" KeyTime="0:0:5"/>
+                                                <LinearDoubleKeyFrame Value="10" KeyTime="0:0:4"/>
+                                                <LinearDoubleKeyFrame Value="10" KeyTime="0:0:3"/>
+                                                <LinearDoubleKeyFrame Value="8" KeyTime="0:0:2"/>
+                                                <LinearDoubleKeyFrame Value="5" KeyTime="0:0:1"/>
+                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                        </Storyboard>
+                                    </VisualTransition>
+                                    
+                                </VisualStateGroup.Transitions>
+                                <VisualState Name="X_Origin2">
+                                    <Storyboard FillBehavior="HoldEnd">
+                                        <!--后臂+底座-->
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT1RotateAct" Storyboard.TargetProperty="Angle">
+                                            <LinearDoubleKeyFrame Value="115" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                        <!--中臂-->
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2ArmRotateAct" Storyboard.TargetProperty="Angle">
+                                            <LinearDoubleKeyFrame Value="120" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                        <!--前臂-->
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT3ArmTranslateAct" Storyboard.TargetProperty="X">
+                                            <LinearDoubleKeyFrame Value="225" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                    </Storyboard>
+                                </VisualState>
+                                <VisualState Name="ToVCE2">
+                                    <Storyboard FillBehavior="HoldEnd">
+                                        <!--后臂+底座-->
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT1RotateAct" Storyboard.TargetProperty="Angle">
+                                            <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                        <!--中臂-->
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2ArmRotateAct" Storyboard.TargetProperty="Angle">
+                                            <LinearDoubleKeyFrame Value="360" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                        <!--前臂-->
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT3ArmTranslateAct" Storyboard.TargetProperty="X">
+                                            <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                    </Storyboard>
+                                </VisualState>
+                                <VisualState Name="FromVCE2">
+                                    <Storyboard FillBehavior="HoldEnd">
+                                        <!--后臂+底座-->
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT1RotateAct" Storyboard.TargetProperty="Angle">
+                                            <LinearDoubleKeyFrame Value="115" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                        <!--中臂-->
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2ArmRotateAct" Storyboard.TargetProperty="Angle">
+                                            <LinearDoubleKeyFrame Value="120" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                        <!--前臂-->
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT3ArmTranslateAct" Storyboard.TargetProperty="X">
+                                            <LinearDoubleKeyFrame Value="225" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                    </Storyboard>
+                                </VisualState>
+
+                                <VisualState Name="Extend2">
+                                    <Storyboard FillBehavior="HoldEnd">
+                                        <!--后臂+底座-->
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT1RotateAct" Storyboard.TargetProperty="Angle">
+                                            <LinearDoubleKeyFrame Value="90" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                        <!--中臂-->
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2ArmRotateAct" Storyboard.TargetProperty="Angle">
+                                            <LinearDoubleKeyFrame Value="210" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                        <!--前臂-->
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT3ArmTranslateAct" Storyboard.TargetProperty="X">
+                                            <LinearDoubleKeyFrame Value="110" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                    </Storyboard>
+                                </VisualState>
+                                <VisualState Name="Retract2">
+                                    <Storyboard FillBehavior="HoldEnd">
+                                        <!--后臂+底座-->
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT1RotateAct" Storyboard.TargetProperty="Angle">
+                                            <LinearDoubleKeyFrame Value="115" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                        <!--中臂-->
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2ArmRotateAct" Storyboard.TargetProperty="Angle">
+                                            <LinearDoubleKeyFrame Value="120" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                        <!--前臂-->
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT3ArmTranslateAct" Storyboard.TargetProperty="X">
+                                            <LinearDoubleKeyFrame Value="225" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                    </Storyboard>
+                                </VisualState>
+                            </VisualStateGroup>
+                            <VisualStateGroup Name="RobotTActions">
+                                <VisualStateGroup.Transitions>
+                                    <VisualTransition To="T_Origin">
+                                        <Storyboard FillBehavior="HoldEnd">
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
+                                                <LinearDoubleKeyFrame Value="-90" KeyTime="0:0:1"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                        </Storyboard>
+                                    </VisualTransition>
+
+                                    <VisualTransition To="PMA">
+                                        <Storyboard FillBehavior="HoldEnd">
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
+                                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0.5"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                        </Storyboard>
+                                    </VisualTransition>
+                                    <VisualTransition To="PMB">
+                                        <Storyboard FillBehavior="HoldEnd">
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
+                                                <LinearDoubleKeyFrame Value="60" KeyTime="0:0:0.5"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                        </Storyboard>
+                                    </VisualTransition>
+                                    <VisualTransition To="PMC">
+                                        <Storyboard FillBehavior="HoldEnd">
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
+                                                <LinearDoubleKeyFrame Value="120" KeyTime="0:0:0.5"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                        </Storyboard>
+                                    </VisualTransition>
+                                    <VisualTransition To="Aligner1">
+                                        <Storyboard FillBehavior="HoldEnd">
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
+                                                <LinearDoubleKeyFrame Value="-60" KeyTime="0:0:0.5"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                        </Storyboard>
+                                    </VisualTransition>
+                                    <VisualTransition To="PMD">
+                                        <Storyboard FillBehavior="HoldEnd">
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
+                                                <LinearDoubleKeyFrame Value="180" KeyTime="0:0:0.5"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                        </Storyboard>
+                                    </VisualTransition>
+                                    <VisualTransition To="VCEA">
+                                        <Storyboard FillBehavior="HoldEnd">
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
+                                                <LinearDoubleKeyFrame Value="-60" KeyTime="0:0:0.5"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                        </Storyboard>
+                                    </VisualTransition>
+                                    <VisualTransition To="VCEB">
+                                        <Storyboard FillBehavior="HoldEnd">
+                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
+                                                <LinearDoubleKeyFrame Value="-120" KeyTime="0:0:0.5"/>
+                                            </DoubleAnimationUsingKeyFrames>
+                                        </Storyboard>
+                                    </VisualTransition>
+                                </VisualStateGroup.Transitions>
+
+                                <VisualState Name="T_Origin">
+                                    <Storyboard FillBehavior="HoldEnd">
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
+                                            <LinearDoubleKeyFrame Value="-90" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                    </Storyboard>
+                                </VisualState>
+                                <VisualState Name="PMA">
+                                    <Storyboard FillBehavior="HoldEnd">
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
+                                            <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                    </Storyboard>
+                                </VisualState>
+                                <VisualState Name="PMB">
+                                    <Storyboard FillBehavior="HoldEnd">
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
+                                            <LinearDoubleKeyFrame Value="60" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                    </Storyboard>
+                                </VisualState>
+                                <VisualState Name="PMC">
+                                    <Storyboard FillBehavior="HoldEnd">
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
+                                            <LinearDoubleKeyFrame Value="120" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                    </Storyboard>
+                                </VisualState>
+                                <VisualState Name="Aligner1">
+                                    <Storyboard FillBehavior="HoldEnd">
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
+                                            <LinearDoubleKeyFrame Value="-60" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                    </Storyboard>
+                                </VisualState>
+                                <VisualState Name="PMD">
+                                    <Storyboard FillBehavior="HoldEnd">
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
+                                            <LinearDoubleKeyFrame Value="180" KeyTime="0:0:0.0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                    </Storyboard>
+                                </VisualState>
+                                <VisualState Name="VCEA">
+                                    <Storyboard FillBehavior="HoldEnd">
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
+                                            <LinearDoubleKeyFrame Value="-60" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                    </Storyboard>
+                                </VisualState>
+                                <VisualState Name="VCEB">
+                                    <Storyboard FillBehavior="HoldEnd">
+                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
+                                            <LinearDoubleKeyFrame Value="-120" KeyTime="0:0:0"/>
+                                        </DoubleAnimationUsingKeyFrames>
+                                    </Storyboard>
+                                </VisualState>
+                            </VisualStateGroup>
+
+                        </VisualStateManager.VisualStateGroups>
+
+                        <Canvas Width="200" Height="300" >
+
+                            <Canvas x:Name="robot" Width="100" Height="150" RenderTransformOrigin="1 1" >
+                                <!--robot总动作-->
+                                <Canvas.RenderTransform>
+                                    <TransformGroup>
+                                        <RotateTransform  x:Name="robotRotateAct"/>
+                                        <!--<RotateTransform Angle="-90"/>-->
+                                        <!--<TranslateTransform  x:Name="robotUpDownAct"></TranslateTransform>-->
+                                    </TransformGroup>
+                                </Canvas.RenderTransform>
+                                <Canvas x:Name="armXT1" Width="200" Height="100"  Canvas.Top="100" RenderTransformOrigin="0.5 0.5">
+                                    <!--后臂+底座动作-->
+                                    <Canvas.RenderTransform>
+                                        <!--<RotateTransform Angle="-115"/>-->
+                                        <RotateTransform  x:Name="armXT1RotateAct"/>
+                                    </Canvas.RenderTransform>
+                                    <Canvas x:Name="armXT1Center"  Width="60" Height="60" Canvas.Left="70" Canvas.Top="20" ToolTip="底座">
+                                        <Viewbox Canvas.Left="0" Canvas.Top="0" Width="60" Height="60">
+                                            <userControls:SERobot4 IsEnabled="False" Height="60"/>
+                                        </Viewbox>
+                                    </Canvas>
+                                    <Canvas x:Name="armXT1Arm" Width="120" Height="40"  Canvas.Left="10" Canvas.Top="30"  ToolTip="后臂" >
+                                        <Viewbox Canvas.Left="0" Canvas.Top="-40" Width="120" Height="120" >
+                                            <userControls:SERobot3 IsEnabled="False" Height="150"/>
+                                        </Viewbox>
+                                    </Canvas>
+                                    <Canvas x:Name="armXT2Arm" Width="105" Height="40"  Canvas.Left="-73" Canvas.Top="30" ToolTip="中臂"  RenderTransformOrigin="1 0.5">
+                                        <!--中臂动作-->
+                                        <Canvas.RenderTransform>
+                                            <TransformGroup>
+                                                <!--<RotateTransform Angle="-120"/>-->
+                                                <!--<TranslateTransform Y="15"/>-->
+                                                <TranslateTransform x:Name="armXT2ArmTranslateAct"/>
+                                                <RotateTransform x:Name="armXT2ArmRotateAct"/>
+                                            </TransformGroup>
+                                        </Canvas.RenderTransform>
+                                        <Viewbox Canvas.Left="10" Canvas.Top="-40" Width="110" Height="120" >
+                                            <userControls:SERobot2 IsEnabled="False"/>
+                                        </Viewbox>
+                                    </Canvas>
+                                </Canvas>
+                                <!--前臂动作-->
+                                <Canvas x:Name="armGripper" Height="40" Width="158"  Canvas.Left="-190" Canvas.Top="130" ToolTip="前臂" RenderTransformOrigin="1 0.5">
+                                    <Canvas.RenderTransform>
+                                        <TransformGroup>
+                                            <!--<TranslateTransform X="225"/>-->
+                                            <TranslateTransform x:Name="armXT3ArmTranslateAct"/>
+                                            <RotateTransform x:Name="armXT3ArmRotateAct"/>
+                                        </TransformGroup>
+                                    </Canvas.RenderTransform>
+                                    <Viewbox  Canvas.Left="56" Canvas.Top="-60" Width="45" Height="160">
+                                        <userControls:SERobot1 IsEnabled="False"/>
+                                    </Viewbox>
+                                    <Viewbox Canvas.Left="-30" Canvas.Top="-15" Width="70" Height="70">
+                                        <!--<Border BorderBrush="Black" BorderThickness="2">-->
+                                        <userControls:WaferCtrl WaferData="{Binding RobotWafer,RelativeSource={RelativeSource TemplatedParent}}" IsEnabled="False"/>
+                                        <!--</Border>-->
+                                    </Viewbox>
+
+                                </Canvas>
+
+                            </Canvas>
+                        </Canvas>
+
+                    </Viewbox>
+
+                </ControlTemplate>
+            </Setter.Value>
+        </Setter>
+    </Style>
 
     <Style TargetType="{x:Type customControls:GuangChuanRobotControl}" >
         <Setter Property="Cursor" Value="Hand" />

BIN
Venus/Venus_Themes/Themes/Images/parts/venusde/VCEleft2.png


BIN
Venus/Venus_Themes/Themes/Images/parts/venusde/VCEright2.png


+ 2 - 2
Venus/Venus_Themes/UserControls/DEVceA.xaml

@@ -48,7 +48,7 @@
     </UserControl.Triggers>
     <Viewbox>
         <Canvas Height="120" Width="200">
-            <Image Width="100"  Canvas.Left="30" Canvas.Top="-45" Source="pack://application:,,,/Venus_Themes;component/Resources/cassette.png"  Opacity="0.8"  Visibility="{Binding ElementName=devceChamber,Path=CassetteArrive,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged,Converter={StaticResource bool2VisibilityConverter}}" RenderTransformOrigin="0.5,0.5" Panel.ZIndex="2">
+            <Image Width="160"  Canvas.Left="10" Canvas.Top="-64" Source="pack://application:,,,/Venus_Themes;component/Resources/cassette.png"  Opacity="0.8"  Visibility="{Binding ElementName=devceChamber,Path=CassetteArrive,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged,Converter={StaticResource bool2VisibilityConverter}}" RenderTransformOrigin="0.5,0.5" Panel.ZIndex="2" HorizontalAlignment="Center" VerticalAlignment="Top">
                 <Image.RenderTransform>
                     <TransformGroup>
                         <ScaleTransform/>
@@ -59,7 +59,7 @@
                 </Image.RenderTransform>
             </Image>
 
-            <Image Width="200" Canvas.Left="0" Canvas.Top="-93" Source="pack://application:,,,/Venus_Themes;component/Themes/Images/parts/venusde/VCEleft1.png"></Image>
+            <Image Width="200" Canvas.Left="0" Canvas.Top="-93" Source="pack://application:,,,/Venus_Themes;component/Themes/Images/parts/venusde/VCEleft2.png"></Image>
             <!--<Rectangle Cursor="Hand" DataContext="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl,AncestorLevel=1}}" Style="{StaticResource doorAnimation}"  Fill="DimGray"   VerticalAlignment="Top"    Height="15"    Canvas.Top="-20" Canvas.Left="-4" Name="door2">
                 <Rectangle.RenderTransform >
                     <RotateTransform CenterX="102" CenterY="10" Angle="180"/>

+ 3 - 3
Venus/Venus_Themes/UserControls/DEVceB.xaml

@@ -27,7 +27,7 @@
     </UserControl.Triggers>
     <Viewbox>
         <Canvas Height="120" Width="200">
-            <Image Width="100"  Canvas.Left="70" Canvas.Top="-50" Source="pack://application:,,,/Venus_Themes;component/Resources/cassette.png"  Opacity="0.9"  Visibility="{Binding ElementName=devceBChamber,Path=CassetteArrive,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged,Converter={StaticResource bool2VisibilityConverter}}" RenderTransformOrigin="0.5,0.5" Panel.ZIndex="2">
+            <Image Width="160"  Canvas.Left="30" Canvas.Top="-62" Source="pack://application:,,,/Venus_Themes;component/Resources/cassette.png"  Opacity="0.9"  Visibility="{Binding ElementName=devceBChamber,Path=CassetteArrive,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged,Converter={StaticResource bool2VisibilityConverter}}" RenderTransformOrigin="0.5,0.5" Panel.ZIndex="2" HorizontalAlignment="Center" VerticalAlignment="Top">
                 <Image.RenderTransform>
                     <TransformGroup>
                         <ScaleTransform/>
@@ -38,7 +38,7 @@
                 </Image.RenderTransform>
             </Image>
 
-            <Image Width="200" Canvas.Left="0" Canvas.Top="-93" Source="pack://application:,,,/Venus_Themes;component/Themes/Images/parts/venusde/VCEright1.png"></Image>
+            <Image Width="200" Canvas.Left="0" Canvas.Top="-93" Source="pack://application:,,,/Venus_Themes;component/Themes/Images/parts/venusde/VCEright2.png"></Image>
             <!--<Rectangle Cursor="Hand" DataContext="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl,AncestorLevel=1}}" Style="{StaticResource doorAnimation}"  Fill="DimGray"   VerticalAlignment="Top"    Height="15"    Canvas.Top="-20" Canvas.Left="-4" Name="door2">
                 <Rectangle.RenderTransform >
                     <RotateTransform CenterX="102" CenterY="10" Angle="180"/>
@@ -50,7 +50,7 @@
                     </ContextMenu>
                 </Rectangle.ContextMenu>
             </Rectangle>-->
-          
+
 
             <Canvas Canvas.Top="20">
                 <Border Canvas.Bottom="-120" Canvas.Left="10" HorizontalAlignment="Center" Width="180">

+ 5 - 5
Venus/Venus_Themes/UserControls/TMChamber.xaml

@@ -87,7 +87,7 @@
                 </Border>
 
 
-                <Border  Canvas.Top="-50" Canvas.Left="-59" HorizontalAlignment="Center" Width="320">
+                <Border  Canvas.Top="-50" Canvas.Left="-39" HorizontalAlignment="Center" Width="320">
                     <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center" Visibility="{Binding ElementName=tmChamber,Path=PMVisibility}">
                         <TextBlock  FontSize="30" Text="{Binding ElementName=tmChamber,Path=Name}"/>
                         <TextBlock  FontSize="30" Text="(" HorizontalAlignment="Center"/>
@@ -97,7 +97,7 @@
 
                     </StackPanel>
                 </Border>
-               
+
 
 
 
@@ -141,9 +141,9 @@
                     </Canvas>
                 </Viewbox>
 
-                <Rectangle Fill="Silver"  Width="200" VerticalAlignment="Top"    Height="20"    Canvas.Top="200" Canvas.Left="-2"/>
+                <Rectangle Visibility="Hidden" Fill="Silver"  Width="200" VerticalAlignment="Top"    Height="20"    Canvas.Top="200" Canvas.Left="-2"/>
 
-                <Rectangle Cursor="Hand" DataContext="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl,AncestorLevel=1}}" Style="{StaticResource doorAnimation}"  Fill="{StaticResource doorColor2}"   VerticalAlignment="Top"    Height="20" Width="102"   Canvas.Top="200" Canvas.Left="-2" Name="door1">
+                <Rectangle Visibility="Hidden" Cursor="Hand" DataContext="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl,AncestorLevel=1}}" Style="{StaticResource doorAnimation}"  Fill="{StaticResource doorColor2}"   VerticalAlignment="Top"    Height="20" Width="102"   Canvas.Top="200" Canvas.Left="-2" Name="door1">
                     <Rectangle.ContextMenu >
                         <ContextMenu>
                             <MenuItem Header="Open Door"  Click="OpenDoor_Click"    IsChecked="{Binding DoorIsOpen}" IsEnabled="{Binding DoorIsOpen,Converter={StaticResource BoolToBool}}"/>
@@ -151,7 +151,7 @@
                         </ContextMenu>
                     </Rectangle.ContextMenu>
                 </Rectangle>
-                <Rectangle Cursor="Hand" DataContext="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl,AncestorLevel=1}}" Style="{StaticResource doorAnimation}"  Fill="{StaticResource doorColor2}"   VerticalAlignment="Top"    Height="20"  Width="102"  Canvas.Top="200" Canvas.Left="-2" Name="door2">
+                <Rectangle Visibility="Hidden"  Cursor="Hand" DataContext="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl,AncestorLevel=1}}" Style="{StaticResource doorAnimation}"  Fill="{StaticResource doorColor2}"   VerticalAlignment="Top"    Height="20"  Width="102"  Canvas.Top="200" Canvas.Left="-2" Name="door2">
                     <Rectangle.RenderTransform >
                         <RotateTransform CenterX="102" CenterY="10" Angle="180"/>
                     </Rectangle.RenderTransform>

+ 334 - 91
Venus/Venus_Themes/UserControls/VenusDETM.xaml

@@ -6,37 +6,125 @@
              xmlns:local="clr-namespace:Venus_Themes.UserControls"
              mc:Ignorable="d" 
              xmlns:converters="clr-namespace:Venus_Themes.Converters"
-             d:DesignHeight="450" d:DesignWidth="800" Name="venusSetm">
+             d:DesignHeight="450" d:DesignWidth="800" Name="venusDetm">
     <UserControl.Resources>
         <converters:BoolToVisibility x:Key="boolToVisibility"/>
         <converters:BoolToVisibility2 x:Key="boolToVisibility2"/>
+        <converters:BoolToAngle x:Key="boolToAngle"/>
+        <converters:BoolToAngle2 x:Key="boolToAngle2"/>
         <converters:BoolToBool x:Key="BoolToBool"/>
-        <Style x:Key="DoorAnimationStyle" TargetType="Rectangle">
+        <!--<Style x:Key="AlignerLocation" TargetType="Viewbox">
             <Setter Property="RenderTransform">
                 <Setter.Value>
-                    <RotateTransform Angle="0"/>
+                    <TransformGroup>
+                        <RotateTransform Angle="0"/>
+                    </TransformGroup>
                 </Setter.Value>
             </Setter>
             <Style.Triggers>
-                <DataTrigger Binding="{Binding IsOpen}" Value="True">
-                    <DataTrigger.EnterActions>
-                        <BeginStoryboard>
-                            <Storyboard>
-                                <DoubleAnimation From="0" To="-90" Duration="0:0:1"
-                                                 Storyboard.TargetProperty="(Rectangle.RenderTransform).(RotateTransform.Angle)"/>
-                            </Storyboard>
-                        </BeginStoryboard>
-                    </DataTrigger.EnterActions>
+                <DataTrigger Binding="{Binding IsAlignerOnRight}" Value="True">
+                    <Setter Property="RenderTransform">
+                        <Setter.Value>
+                            <TransformGroup>
+                                <RotateTransform Angle="90"/>
+                            </TransformGroup>
+                        </Setter.Value>
+                    </Setter>
+                </DataTrigger>
+                <DataTrigger Binding="{Binding IsAlignerOnRight}" Value="False">
+                    <Setter Property="RenderTransform">
+                        <Setter.Value>
+                            <TransformGroup>
+                                <RotateTransform Angle="120"/>
+                            </TransformGroup>
+                        </Setter.Value>
+                    </Setter>
                 </DataTrigger>
             </Style.Triggers>
         </Style>
+        <Style x:Key="AlignerTextLocation" TargetType="TextBlock">
+            <Setter Property="RenderTransform">
+                <Setter.Value>
+                    <TransformGroup>
+                        <RotateTransform Angle="90"/>
+                    </TransformGroup>
+                </Setter.Value>
+            </Setter>
+            <Style.Triggers>
+                <DataTrigger Binding="{Binding IsAlignerOnRight}" Value="True">
+                    <Setter Property="RenderTransform">
+                        <Setter.Value>
+                            <TransformGroup>
+                                <RotateTransform Angle="-90"/>
+                            </TransformGroup>
+                        </Setter.Value>
+                    </Setter>
+                </DataTrigger>
+                <DataTrigger Binding="{Binding IsAlignerOnRight}" Value="False">
+                    <Setter Property="RenderTransform">
+                        <Setter.Value>
+                            <TransformGroup>
+                                <RotateTransform Angle="-90"/>
+                            </TransformGroup>
+                        </Setter.Value>
+                    </Setter>
+                    <Setter Property="Width" Value="120">
+                    </Setter>
+                </DataTrigger>
+            </Style.Triggers>
+        </Style>-->
     </UserControl.Resources>
     <Viewbox>
         <Canvas Width="200" Height="200">
-            <Image Width="280" Canvas.Left="20" Source="pack://application:,,,/Venus_Themes;component/Themes/Images/parts/venusde/detm.png"></Image>
+            <!--过道-->
+            <Border RenderTransformOrigin="0.5 0.5"  Canvas.Top="268" Canvas.Left="-8" BorderBrush="Gray" BorderThickness="3" CornerRadius="0,0,5,5" Opacity=".5" Visibility="Visible" HorizontalAlignment="Center" VerticalAlignment="Top">
+                <Border.RenderTransform>
+                    <TransformGroup>
+                        <ScaleTransform/>
+                        <SkewTransform/>
+                        <RotateTransform Angle="30"/>
+                        <TranslateTransform/>
+                    </TransformGroup>
+                </Border.RenderTransform>
+                <Canvas Width="140" Height="110" HorizontalAlignment="Left" VerticalAlignment="Top" Panel.ZIndex="2" Visibility="{Binding ElementName=venusDetm,Path=IsShowAisle,Converter={StaticResource boolToVisibility2}}">
+                    <Canvas.Background>
+                        <LinearGradientBrush StartPoint="1,1" EndPoint="0,0">
+                            <GradientStop Color="Gray" Offset="0"></GradientStop>
+                            <GradientStop Color="LightGray" Offset=".2"></GradientStop>
+                            <GradientStop Color="White" Offset=".5"></GradientStop>
+                            <GradientStop Color="LightGray" Offset=".8"></GradientStop>
+                            <GradientStop Color="Gray" Offset="1"></GradientStop>
+                        </LinearGradientBrush>
+                    </Canvas.Background>
+                </Canvas>
+            </Border>
+            <!--过道-->
+            <Border RenderTransformOrigin="0.5 0.5"  Canvas.Top="268" Canvas.Left="183" BorderBrush="Gray" BorderThickness="3" CornerRadius="0,0,5,5" Opacity=".5" Visibility="Visible" HorizontalAlignment="Center" VerticalAlignment="Top">
+                <Border.RenderTransform>
+                    <TransformGroup>
+                        <ScaleTransform/>
+                        <SkewTransform/>
+                        <RotateTransform Angle="-30"/>
+                        <TranslateTransform/>
+                    </TransformGroup>
+                </Border.RenderTransform>
+                <Canvas Width="140" Height="110" HorizontalAlignment="Left" VerticalAlignment="Top" Panel.ZIndex="2" Visibility="{Binding ElementName=venusDetm,Path=IsShowAisle,Converter={StaticResource boolToVisibility2}}">
+                    <Canvas.Background>
+                        <LinearGradientBrush StartPoint="1,1" EndPoint="0,0">
+                            <GradientStop Color="Gray" Offset="0"></GradientStop>
+                            <GradientStop Color="LightGray" Offset=".2"></GradientStop>
+                            <GradientStop Color="White" Offset=".5"></GradientStop>
+                            <GradientStop Color="LightGray" Offset=".8"></GradientStop>
+                            <GradientStop Color="Gray" Offset="1"></GradientStop>
+                        </LinearGradientBrush>
+                    </Canvas.Background>
+                </Canvas>
+            </Border>
+
+            <Image Width="280" Canvas.Left="20" Source="pack://application:,,,/Venus_Themes;component/Themes/Images/parts/venusde/detm.png" HorizontalAlignment="Left" VerticalAlignment="Center"></Image>
 
             <!-- robot -->
-            <!--<Border BorderBrush="Gray" BorderThickness="2" Canvas.Top="20" Canvas.Left="20" CornerRadius="2">
+            <!--<Border BorderBrush="Gray" BorderThickness="2" Canvas.Top="15" Canvas.Left="15" CornerRadius="2">
                 <Rectangle Height="200" Width="200" >
                     <Rectangle.Fill>
                         <LinearGradientBrush StartPoint="-1,0" EndPoint="0,-1">
@@ -49,8 +137,14 @@
                     </Rectangle.Fill>
                 </Rectangle>
             </Border>-->
-            <!-- aligner1 两个位置 112,225 222,75-->
-            <Viewbox Stretch="Uniform" Width="80" Height="80" Canvas.Left="295" Canvas.Top="120" Name="VPAligner" Visibility="{Binding ElementName=venusSetm,Path=VPAIsShow,Converter={StaticResource boolToVisibility2}}" Canvas.ZIndex="2">
+            <!-- aligner1 两个位置-->
+            <Viewbox Stretch="Uniform" RenderTransformOrigin="-1.385,0.5" Width="100" Height="100" Canvas.Left="298" Canvas.Top="111" Name="VPAligner" Visibility="{Binding ElementName=venusDetm,Path=VPAIsShow,Converter={StaticResource boolToVisibility2}}" Canvas.ZIndex="2">
+                <Viewbox.RenderTransform>
+                    <TransformGroup>
+                        <RotateTransform Angle="{Binding ElementName=venusDetm,Path=IsAlignerOnRight,Converter={StaticResource boolToAngle}}"/>
+                    </TransformGroup>
+                </Viewbox.RenderTransform>
+
 
                 <Canvas UseLayoutRounding="False"  Width="100" Height="100" HorizontalAlignment="Left" VerticalAlignment="Center">
                     <Canvas.Background>
@@ -60,12 +154,12 @@
                             <GradientStop Color="Gray" Offset="1"></GradientStop>
                         </LinearGradientBrush>
                     </Canvas.Background>
-                    <TextBlock Text="Aligner" FontSize="15" Canvas.Top="20" Canvas.Left="120" FontWeight="Normal">
+                    <TextBlock Text="Aligner" RenderTransformOrigin="0.5 0.5" FontSize="15" Canvas.Top="103" Canvas.Left="25" FontWeight="Normal" HorizontalAlignment="Center" VerticalAlignment="Top">
                         <TextBlock.RenderTransform>
-                            <RotateTransform Angle="90" />
+                            <RotateTransform Angle="{Binding ElementName=venusDetm,Path=IsAlignerOnRight,Converter={StaticResource boolToAngle2}}"/>
                         </TextBlock.RenderTransform>
                     </TextBlock>
-                    <Canvas  Width="72.522" Height="72.521" Canvas.Left="14" Canvas.Top="14">
+                    <Canvas Width="72.522" Height="72.521" Canvas.Left="14" Canvas.Top="14">
                         <Path Data="F1M10.473,65.041C10.473,85.068,26.708,101.302,46.734,101.302L46.734,101.302C66.761,101.302,82.995,85.068,82.995,65.041L82.995,65.041C82.995,45.015,66.761,28.781,46.734,28.781L46.734,28.781C26.708,28.781,10.473,45.015,10.473,65.041" Stretch="Fill" Width="72.522" Height="72.521" Canvas.Left="0" Canvas.Top="0">
                             <Path.Fill>
                                 <RadialGradientBrush Center="0.5,0.5" RadiusX="0.5" RadiusY="0.5" GradientOrigin="0.5,0.5">
@@ -89,12 +183,12 @@
                         <Path Data="M46.8477,36.8872C62.3957,36.8872 74.9997,49.4912 74.9997,65.0402 74.9997,80.5882 62.3957,93.1932 46.8477,93.1932 31.2987,93.1932 18.6947,80.5882 18.6947,65.0402 18.6947,49.4912 31.2987,36.8872 46.8477,36.8872z" Stretch="Fill" Stroke="White" StrokeThickness="0.25" Width="56.555" Height="56.556" />
                     </Canvas>
 
-                    <local:WaferCtrl WaferData="{Binding ElementName=venusSetm, Path=PAWafer}" Canvas.Left="18" Canvas.Top="18"/>
+                    <local:WaferCtrl WaferData="{Binding ElementName=venusDetm, Path=PAWafer}" Canvas.Left="18" Canvas.Top="18"/>
                 </Canvas>
             </Viewbox>
 
-            <Canvas Width="85" Height="20">
-                <Rectangle Width="85" Height="20" HorizontalAlignment="Center" Canvas.Left="45" VerticalAlignment="Top" Fill="Gray" Opacity=".8" Visibility="{Binding ElementName=venusSetm,Path=PMBIsInstalled,Converter={StaticResource boolToVisibility2}}" Canvas.Top="44">
+            <Canvas Width="145" Height="15">
+                <Rectangle Width="145" Height="15" HorizontalAlignment="Left" Canvas.Left="22" VerticalAlignment="Center" Fill="Gray" Opacity=".8" Visibility="{Binding ElementName=venusDetm,Path=PMBIsInstalled,Converter={StaticResource boolToVisibility2}}" Canvas.Top="65">
                     <Rectangle.RenderTransform>
                         <TransformGroup>
                             <ScaleTransform/>
@@ -106,18 +200,18 @@
                     <Rectangle.Style>
                         <Style TargetType="Rectangle">
                             <Style.Triggers>
-                                <DataTrigger Binding="{Binding ElementName=venusSetm,Path=PMBDoorIsOpen}" Value="True">
+                                <DataTrigger Binding="{Binding ElementName=venusDetm,Path=PMBDoorIsOpen}" Value="True">
                                     <DataTrigger.EnterActions>
                                         <BeginStoryboard>
                                             <Storyboard>
-                                                <DoubleAnimation  Storyboard.TargetProperty="Width" To="20" Duration="0:0:1"/>
+                                                <DoubleAnimation  Storyboard.TargetProperty="Width" To="15" Duration="0:0:1"/>
                                             </Storyboard>
                                         </BeginStoryboard>
                                     </DataTrigger.EnterActions>
                                     <DataTrigger.ExitActions>
                                         <BeginStoryboard>
                                             <Storyboard>
-                                                <DoubleAnimation  Storyboard.TargetProperty="Width" To="85" Duration="0:0:1"/>
+                                                <DoubleAnimation  Storyboard.TargetProperty="Width" To="145" Duration="0:0:1"/>
                                             </Storyboard>
                                         </BeginStoryboard>
                                     </DataTrigger.ExitActions>
@@ -130,7 +224,7 @@
                     </Rectangle.DataContext>
                 </Rectangle>
 
-                <Rectangle Fill="#bababa" Panel.ZIndex="-1"  Width="85" Height="20" HorizontalAlignment="Left" Canvas.Left="44"  Visibility="{Binding ElementName=venusSetm,Path=PMBIsInstalled,Converter={StaticResource boolToVisibility2}}" RenderTransformOrigin="0.5,0.5" VerticalAlignment="Center" Canvas.Top="23">
+                <Rectangle Fill="#bababa" Panel.ZIndex="-1"  Width="145" Height="15" HorizontalAlignment="Center" Canvas.Left="16"  Visibility="{Binding ElementName=venusDetm,Path=PMBIsInstalled,Converter={StaticResource boolToVisibility2}}" RenderTransformOrigin="0.5,0.5" VerticalAlignment="Top" Canvas.Top="28">
                     <Rectangle.RenderTransform>
                         <TransformGroup>
                             <ScaleTransform/>
@@ -140,7 +234,7 @@
                         </TransformGroup>
                     </Rectangle.RenderTransform>
                 </Rectangle>
-                <Rectangle Width="85" Height="20" HorizontalAlignment="Center" Canvas.Left="129" Canvas.Top="20" VerticalAlignment="Top" Fill="Gray" Opacity=".8" Visibility="{Binding ElementName=venusSetm,Path=PMBIsInstalled,Converter={StaticResource boolToVisibility2}}">
+                <Rectangle Width="145" Height="15" HorizontalAlignment="Left" Canvas.Left="155" Canvas.Top="5" VerticalAlignment="Center" Fill="Gray" Opacity=".8" Visibility="{Binding ElementName=venusDetm,Path=PMBIsInstalled,Converter={StaticResource boolToVisibility2}}">
                     <Rectangle.Style>
                         <Style TargetType="Rectangle">
                             <Setter Property="RenderTransform">
@@ -149,18 +243,18 @@
                                 </Setter.Value>
                             </Setter>
                             <Style.Triggers>
-                                <DataTrigger Binding="{Binding ElementName=venusSetm,Path=PMBDoorIsOpen}" Value="True">
+                                <DataTrigger Binding="{Binding ElementName=venusDetm,Path=PMBDoorIsOpen}" Value="True">
                                     <DataTrigger.EnterActions>
                                         <BeginStoryboard>
                                             <Storyboard>
-                                                <DoubleAnimation  Storyboard.TargetProperty="Width" To="20" Duration="0:0:1"/>
+                                                <DoubleAnimation  Storyboard.TargetProperty="Width" To="15" Duration="0:0:1"/>
                                             </Storyboard>
                                         </BeginStoryboard>
                                     </DataTrigger.EnterActions>
                                     <DataTrigger.ExitActions>
                                         <BeginStoryboard>
                                             <Storyboard>
-                                                <DoubleAnimation  Storyboard.TargetProperty="Width" To="85" Duration="0:0:1"/>
+                                                <DoubleAnimation  Storyboard.TargetProperty="Width" To="145" Duration="0:0:1"/>
                                             </Storyboard>
                                         </BeginStoryboard>
                                     </DataTrigger.ExitActions>
@@ -180,29 +274,29 @@
 
             </Canvas>
 
-            <Rectangle Fill="#bababa" Panel.ZIndex="-1"  Width="85" Height="20" HorizontalAlignment="Center" Canvas.Left="22" Canvas.Top="120" VerticalAlignment="Top"  Visibility="{Binding ElementName=venusSetm,Path=PMAIsInstalled,Converter={StaticResource boolToVisibility2}}" >
+            <Rectangle Fill="#bababa" Panel.ZIndex="-1"  Width="145" Height="15" HorizontalAlignment="Center" Canvas.Left="22" Canvas.Top="91" VerticalAlignment="Top"  Visibility="{Binding ElementName=venusDetm,Path=PMAIsInstalled,Converter={StaticResource boolToVisibility2}}" >
                 <Rectangle.RenderTransform>
                     <TransformGroup>
                         <RotateTransform Angle="90"/>
                     </TransformGroup>
                 </Rectangle.RenderTransform>
             </Rectangle>
-            <Rectangle Width="85" Height="20" HorizontalAlignment="Center" Canvas.Left="22" Canvas.Top="120" VerticalAlignment="Top" Fill="Gray" Opacity=".8" Visibility="{Binding ElementName=venusSetm,Path=PMAIsInstalled,Converter={StaticResource boolToVisibility2}}" >
+            <Rectangle Width="145" Height="15" HorizontalAlignment="Center" Canvas.Left="22" Canvas.Top="91" VerticalAlignment="Top" Fill="Gray" Opacity=".8" Visibility="{Binding ElementName=venusDetm,Path=PMAIsInstalled,Converter={StaticResource boolToVisibility2}}" >
                 <Rectangle.Style>
                     <Style TargetType="Rectangle">
                         <Style.Triggers>
-                            <DataTrigger Binding="{Binding ElementName=venusSetm,Path=PMADoorIsOpen}" Value="True">
+                            <DataTrigger Binding="{Binding ElementName=venusDetm,Path=PMADoorIsOpen}" Value="True">
                                 <DataTrigger.EnterActions>
                                     <BeginStoryboard>
                                         <Storyboard>
-                                            <DoubleAnimation  Storyboard.TargetProperty="Width" To="20" Duration="0:0:1"/>
+                                            <DoubleAnimation  Storyboard.TargetProperty="Width" To="15" Duration="0:0:1"/>
                                         </Storyboard>
                                     </BeginStoryboard>
                                 </DataTrigger.EnterActions>
                                 <DataTrigger.ExitActions>
                                     <BeginStoryboard>
                                         <Storyboard>
-                                            <DoubleAnimation  Storyboard.TargetProperty="Width" To="85" Duration="0:0:1"/>
+                                            <DoubleAnimation  Storyboard.TargetProperty="Width" To="145" Duration="0:0:1"/>
                                         </Storyboard>
                                     </BeginStoryboard>
                                 </DataTrigger.ExitActions>
@@ -217,22 +311,22 @@
                 </Rectangle.RenderTransform>
             </Rectangle>
 
-            <Rectangle Width="85" Height="20" HorizontalAlignment="Center" Canvas.Top="204" VerticalAlignment="Top" Fill="Gray" Opacity=".8" Visibility="{Binding ElementName=venusSetm,Path=PMAIsInstalled,Converter={StaticResource boolToVisibility2}}" Canvas.Left="2" >
+            <Rectangle Width="145" Height="15" HorizontalAlignment="Center" Canvas.Top="235" VerticalAlignment="Top" Fill="Gray" Opacity=".8" Visibility="{Binding ElementName=venusDetm,Path=PMAIsInstalled,Converter={StaticResource boolToVisibility2}}" Canvas.Left="7" >
                 <Rectangle.Style>
                     <Style TargetType="Rectangle">
                         <Style.Triggers>
-                            <DataTrigger Binding="{Binding ElementName=venusSetm,Path=PMADoorIsOpen}" Value="True">
+                            <DataTrigger Binding="{Binding ElementName=venusDetm,Path=PMADoorIsOpen}" Value="True">
                                 <DataTrigger.EnterActions>
                                     <BeginStoryboard>
                                         <Storyboard>
-                                            <DoubleAnimation  Storyboard.TargetProperty="Width" To="20" Duration="0:0:1"/>
+                                            <DoubleAnimation  Storyboard.TargetProperty="Width" To="15" Duration="0:0:1"/>
                                         </Storyboard>
                                     </BeginStoryboard>
                                 </DataTrigger.EnterActions>
                                 <DataTrigger.ExitActions>
                                     <BeginStoryboard>
                                         <Storyboard>
-                                            <DoubleAnimation  Storyboard.TargetProperty="Width" To="85" Duration="0:0:1"/>
+                                            <DoubleAnimation  Storyboard.TargetProperty="Width" To="145" Duration="0:0:1"/>
                                         </Storyboard>
                                     </BeginStoryboard>
                                 </DataTrigger.ExitActions>
@@ -247,29 +341,29 @@
                 </Rectangle.RenderTransform>
             </Rectangle>
 
-            <Rectangle Fill="#bababa" Panel.ZIndex="-1"  Width="85" Height="20" HorizontalAlignment="Center" Canvas.Left="203" VerticalAlignment="Top" Visibility="{Binding ElementName=venusSetm,Path=PMCIsInstalled,Converter={StaticResource boolToVisibility2}}" Canvas.Top="2">
+            <Rectangle Fill="#bababa" Panel.ZIndex="-1"  Width="145" Height="15" HorizontalAlignment="Left" Canvas.Left="175" VerticalAlignment="Center" Visibility="{Binding ElementName=venusDetm,Path=PMCIsInstalled,Converter={StaticResource boolToVisibility2}}" Canvas.Top="-7">
                 <Rectangle.RenderTransform>
                     <TransformGroup>
                         <RotateTransform Angle="30"/>
                     </TransformGroup>
                 </Rectangle.RenderTransform>
             </Rectangle>
-            <Rectangle Width="85" Height="20" HorizontalAlignment="Left" Canvas.Left="203" VerticalAlignment="Center" Fill="Gray" Opacity=".8" Visibility="{Binding ElementName=venusSetm,Path=PMCIsInstalled,Converter={StaticResource boolToVisibility2}}" Cursor="" Canvas.Top="2" >
+            <Rectangle Width="145" Height="15" HorizontalAlignment="Center" Canvas.Left="175" VerticalAlignment="Top" Fill="Gray" Opacity=".8" Visibility="{Binding ElementName=venusDetm,Path=PMCIsInstalled,Converter={StaticResource boolToVisibility2}}" Cursor="" Canvas.Top="-7" >
                 <Rectangle.Style>
                     <Style TargetType="Rectangle">
                         <Style.Triggers>
-                            <DataTrigger Binding="{Binding ElementName=venusSetm,Path=PMCDoorIsOpen}" Value="True">
+                            <DataTrigger Binding="{Binding ElementName=venusDetm,Path=PMCDoorIsOpen}" Value="True">
                                 <DataTrigger.EnterActions>
                                     <BeginStoryboard>
                                         <Storyboard>
-                                            <DoubleAnimation  Storyboard.TargetProperty="Width" To="20" Duration="0:0:1"/>
+                                            <DoubleAnimation  Storyboard.TargetProperty="Width" To="15" Duration="0:0:1"/>
                                         </Storyboard>
                                     </BeginStoryboard>
                                 </DataTrigger.EnterActions>
                                 <DataTrigger.ExitActions>
                                     <BeginStoryboard>
                                         <Storyboard>
-                                            <DoubleAnimation  Storyboard.TargetProperty="Width" To="85" Duration="0:0:1"/>
+                                            <DoubleAnimation  Storyboard.TargetProperty="Width" To="145" Duration="0:0:1"/>
                                         </Storyboard>
                                     </BeginStoryboard>
                                 </DataTrigger.ExitActions>
@@ -286,22 +380,22 @@
                     </TransformGroup>
                 </Rectangle.RenderTransform>
             </Rectangle>
-            <Rectangle Width="85" Height="20" HorizontalAlignment="Center" Canvas.Left="267" VerticalAlignment="Top" Fill="Gray" Opacity=".8" Visibility="{Binding ElementName=venusSetm,Path=PMCIsInstalled,Converter={StaticResource boolToVisibility2}}" Cursor="" Canvas.Top="62" >
+            <Rectangle Width="145" Height="15" HorizontalAlignment="Left" Canvas.Left="293" VerticalAlignment="Center" Fill="Gray" Opacity=".8" Visibility="{Binding ElementName=venusDetm,Path=PMCIsInstalled,Converter={StaticResource boolToVisibility2}}" Cursor="" Canvas.Top="78" >
                 <Rectangle.Style>
                     <Style TargetType="Rectangle">
                         <Style.Triggers>
-                            <DataTrigger Binding="{Binding ElementName=venusSetm,Path=PMCDoorIsOpen}" Value="True">
+                            <DataTrigger Binding="{Binding ElementName=venusDetm,Path=PMCDoorIsOpen}" Value="True">
                                 <DataTrigger.EnterActions>
                                     <BeginStoryboard>
                                         <Storyboard>
-                                            <DoubleAnimation  Storyboard.TargetProperty="Width" To="20" Duration="0:0:1"/>
+                                            <DoubleAnimation  Storyboard.TargetProperty="Width" To="15" Duration="0:0:1"/>
                                         </Storyboard>
                                     </BeginStoryboard>
                                 </DataTrigger.EnterActions>
                                 <DataTrigger.ExitActions>
                                     <BeginStoryboard>
                                         <Storyboard>
-                                            <DoubleAnimation  Storyboard.TargetProperty="Width" To="85" Duration="0:0:1"/>
+                                            <DoubleAnimation  Storyboard.TargetProperty="Width" To="145" Duration="0:0:1"/>
                                         </Storyboard>
                                     </BeginStoryboard>
                                 </DataTrigger.ExitActions>
@@ -330,24 +424,24 @@
                         <TranslateTransform/>
                     </TransformGroup>
                 </Canvas.RenderTransform>
-                <Rectangle Fill="#bababa" Panel.ZIndex="-1"  Width="85" Height="20" HorizontalAlignment="Left" Canvas.Left="-38" Canvas.Top="76" VerticalAlignment="Center" Visibility="{Binding ElementName=venusSetm,Path=PMDIsInstalled,Converter={StaticResource boolToVisibility2}}">
+                <Rectangle Fill="#bababa" Panel.ZIndex="-1"  Width="145" Height="15" HorizontalAlignment="Left" Canvas.Left="-69" Canvas.Top="76" VerticalAlignment="Center" Visibility="{Binding ElementName=venusDetm,Path=PMDIsInstalled,Converter={StaticResource boolToVisibility2}}">
                 </Rectangle>
-                <Rectangle Width="85" Height="20" HorizontalAlignment="Center" Canvas.Left="46" Canvas.Top="96" VerticalAlignment="Top" Fill="Gray" Opacity=".8" Visibility="{Binding ElementName=venusSetm,Path=PMDIsInstalled,Converter={StaticResource boolToVisibility2}}" >
+                <Rectangle Width="145" Height="15" HorizontalAlignment="Center" Canvas.Left="76" Canvas.Top="91" VerticalAlignment="Top" Fill="Gray" Opacity=".8" Visibility="{Binding ElementName=venusDetm,Path=PMDIsInstalled,Converter={StaticResource boolToVisibility2}}" >
                     <Rectangle.Style>
                         <Style TargetType="Rectangle">
                             <Style.Triggers>
-                                <DataTrigger Binding="{Binding ElementName=venusSetm,Path=PMDDoorIsOpen}" Value="True">
+                                <DataTrigger Binding="{Binding ElementName=venusDetm,Path=PMDDoorIsOpen}" Value="True">
                                     <DataTrigger.EnterActions>
                                         <BeginStoryboard>
                                             <Storyboard>
-                                                <DoubleAnimation  Storyboard.TargetProperty="Width" To="20" Duration="0:0:1"/>
+                                                <DoubleAnimation  Storyboard.TargetProperty="Width" To="15" Duration="0:0:1"/>
                                             </Storyboard>
                                         </BeginStoryboard>
                                     </DataTrigger.EnterActions>
                                     <DataTrigger.ExitActions>
                                         <BeginStoryboard>
                                             <Storyboard>
-                                                <DoubleAnimation  Storyboard.TargetProperty="Width" To="85" Duration="0:0:1"/>
+                                                <DoubleAnimation  Storyboard.TargetProperty="Width" To="145" Duration="0:0:1"/>
                                             </Storyboard>
                                         </BeginStoryboard>
                                     </DataTrigger.ExitActions>
@@ -362,22 +456,22 @@
                         </TransformGroup>
                     </Rectangle.RenderTransform>
                 </Rectangle>
-                <Rectangle Width="85" Height="20" HorizontalAlignment="Left" Canvas.Left="-38" Canvas.Top="76" VerticalAlignment="Center" Fill="Gray" Opacity=".8" Visibility="{Binding ElementName=venusSetm,Path=PMDIsInstalled,Converter={StaticResource boolToVisibility2}}" >
+                <Rectangle Width="145" Height="15" HorizontalAlignment="Left" Canvas.Left="-69" Canvas.Top="76" VerticalAlignment="Center" Fill="Gray" Opacity=".8" Visibility="{Binding ElementName=venusDetm,Path=PMDIsInstalled,Converter={StaticResource boolToVisibility2}}" >
                     <Rectangle.Style>
                         <Style TargetType="Rectangle">
                             <Style.Triggers>
-                                <DataTrigger Binding="{Binding ElementName=venusSetm,Path=PMDDoorIsOpen}" Value="True">
+                                <DataTrigger Binding="{Binding ElementName=venusDetm,Path=PMDDoorIsOpen}" Value="True">
                                     <DataTrigger.EnterActions>
                                         <BeginStoryboard>
                                             <Storyboard>
-                                                <DoubleAnimation  Storyboard.TargetProperty="Width" To="20" Duration="0:0:1"/>
+                                                <DoubleAnimation  Storyboard.TargetProperty="Width" To="15" Duration="0:0:1"/>
                                             </Storyboard>
                                         </BeginStoryboard>
                                     </DataTrigger.EnterActions>
                                     <DataTrigger.ExitActions>
                                         <BeginStoryboard>
                                             <Storyboard>
-                                                <DoubleAnimation  Storyboard.TargetProperty="Width" To="85" Duration="0:0:1"/>
+                                                <DoubleAnimation  Storyboard.TargetProperty="Width" To="145" Duration="0:0:1"/>
                                             </Storyboard>
                                         </BeginStoryboard>
                                     </DataTrigger.ExitActions>
@@ -387,49 +481,185 @@
                     </Rectangle.Style>
                 </Rectangle>
 
-                <!--过道-->
-                <Border  Canvas.Top="94" Canvas.Left="-65" BorderBrush="Gray" BorderThickness="3" CornerRadius="0,0,5,5" Opacity=".5" Visibility="Collapsed">
-                    <Canvas Width="130" Height="110" HorizontalAlignment="Left" VerticalAlignment="Top" Panel.ZIndex="2">
-                        <Canvas.Background>
-                            <LinearGradientBrush StartPoint="1,1" EndPoint="0,0">
-                                <GradientStop Color="Gray" Offset="0"></GradientStop>
-                                <GradientStop Color="LightGray" Offset=".2"></GradientStop>
-                                <GradientStop Color="White" Offset=".5"></GradientStop>
-                                <GradientStop Color="LightGray" Offset=".8"></GradientStop>
-                                <GradientStop Color="Gray" Offset="1"></GradientStop>
-                            </LinearGradientBrush>
-                        </Canvas.Background>
-                    </Canvas>
-                </Border>
+
             </Canvas>
 
             <!--#endregion-->
 
             <!--#region vce-->
-            <Canvas Width="85" Height="20" Canvas.Top="229" Canvas.Left="-14">
-                <Rectangle Fill="#bababa" Panel.ZIndex="-1"  Width="70" Height="20" HorizontalAlignment="Left" Canvas.Left="211" VerticalAlignment="Center" Visibility="{Binding ElementName=venusSetm,Path=VCEBIsInstalled,Converter={StaticResource boolToVisibility2}}" Canvas.Top="72">
+            <Canvas Width="145" Height="15" Canvas.Top="229" Canvas.Left="-14"  Visibility="{Binding ElementName=venusDetm,Path=IsShowAisle,Converter={StaticResource boolToVisibility2}}">
+                <Rectangle Fill="#bababa" Panel.ZIndex="-1"  Width="145" Height="15" HorizontalAlignment="Left" Canvas.Left="234" VerticalAlignment="Center" Visibility="{Binding ElementName=venusDetm,Path=VCEBIsInstalled,Converter={StaticResource boolToVisibility2}}" Canvas.Top="183">
+                    <Rectangle.RenderTransform>
+                        <TransformGroup>
+                            <RotateTransform Angle="-30"/>
+                        </TransformGroup>
+                    </Rectangle.RenderTransform>
+                </Rectangle>
+                <Rectangle Width="145" Height="15" HorizontalAlignment="Center" Canvas.Left="234" Canvas.Top="182" VerticalAlignment="Top" Fill="Gray" Opacity=".8" Visibility="{Binding ElementName=venusDetm,Path=VCEBIsInstalled,Converter={StaticResource boolToVisibility2}}" Cursor="" >
+                    <Rectangle.Style>
+                        <Style TargetType="Rectangle">
+                            <Style.Triggers>
+                                <DataTrigger Binding="{Binding ElementName=venusDetm,Path=VCEBDoorIsOpen}" Value="True">
+                                    <DataTrigger.EnterActions>
+                                        <BeginStoryboard>
+                                            <Storyboard>
+                                                <DoubleAnimation  Storyboard.TargetProperty="Width" To="15" Duration="0:0:1"/>
+                                            </Storyboard>
+                                        </BeginStoryboard>
+                                    </DataTrigger.EnterActions>
+                                    <DataTrigger.ExitActions>
+                                        <BeginStoryboard>
+                                            <Storyboard>
+                                                <DoubleAnimation  Storyboard.TargetProperty="Width" To="145" Duration="0:0:1"/>
+                                            </Storyboard>
+                                        </BeginStoryboard>
+                                    </DataTrigger.ExitActions>
+                                </DataTrigger>
+                            </Style.Triggers>
+                        </Style>
+                    </Rectangle.Style>
+                    <Rectangle.RenderTransform>
+                        <TransformGroup>
+                            <ScaleTransform/>
+                            <SkewTransform/>
+                            <RotateTransform Angle="-30"/>
+                            <TranslateTransform/>
+                        </TransformGroup>
+                    </Rectangle.RenderTransform>
+                </Rectangle>
+                <Rectangle Width="145" Height="15" HorizontalAlignment="Left" Canvas.Left="368" VerticalAlignment="Center" Fill="Gray" Opacity=".8" Visibility="{Binding ElementName=venusDetm,Path=VCEBIsInstalled,Converter={StaticResource boolToVisibility2}}" Cursor="" Canvas.Top="122" >
+                    <Rectangle.Style>
+                        <Style TargetType="Rectangle">
+                            <Style.Triggers>
+                                <DataTrigger Binding="{Binding ElementName=venusDetm,Path=VCEBDoorIsOpen}" Value="True">
+                                    <DataTrigger.EnterActions>
+                                        <BeginStoryboard>
+                                            <Storyboard>
+                                                <DoubleAnimation  Storyboard.TargetProperty="Width" To="15" Duration="0:0:1"/>
+                                            </Storyboard>
+                                        </BeginStoryboard>
+                                    </DataTrigger.EnterActions>
+                                    <DataTrigger.ExitActions>
+                                        <BeginStoryboard>
+                                            <Storyboard>
+                                                <DoubleAnimation  Storyboard.TargetProperty="Width" To="145" Duration="0:0:1"/>
+                                            </Storyboard>
+                                        </BeginStoryboard>
+                                    </DataTrigger.ExitActions>
+                                </DataTrigger>
+                            </Style.Triggers>
+                        </Style>
+                    </Rectangle.Style>
+                    <Rectangle.RenderTransform>
+                        <TransformGroup>
+                            <ScaleTransform/>
+                            <SkewTransform/>
+                            <RotateTransform Angle="150"/>
+                            <TranslateTransform/>
+                        </TransformGroup>
+                    </Rectangle.RenderTransform>
+                </Rectangle>
+
+            </Canvas>
+            <Canvas Width="145" Height="15" Canvas.Top="186" Canvas.Left="-120"  Visibility="{Binding ElementName=venusDetm,Path=IsShowAisle,Converter={StaticResource boolToVisibility2}}">
+                <Rectangle Fill="#bababa" Panel.ZIndex="-1"  Width="145" Height="15" HorizontalAlignment="Left" Canvas.Left="95" VerticalAlignment="Center" Visibility="{Binding ElementName=venusDetm,Path=VCEAIsInstalled,Converter={StaticResource boolToVisibility2}}" Canvas.Top="153">
+                    <Rectangle.RenderTransform>
+                        <TransformGroup>
+                            <RotateTransform Angle="30"/>
+                        </TransformGroup>
+                    </Rectangle.RenderTransform>
+                </Rectangle>
+                <Rectangle Width="145" Height="15" HorizontalAlignment="Left" Canvas.Left="95" Canvas.Top="153" VerticalAlignment="Center" Fill="Gray" Opacity=".8" Visibility="{Binding ElementName=venusDetm,Path=VCEAIsInstalled,Converter={StaticResource boolToVisibility2}}" Cursor="" >
+                    <Rectangle.Style>
+                        <Style TargetType="Rectangle">
+                            <Style.Triggers>
+                                <DataTrigger Binding="{Binding ElementName=venusDetm,Path=VCEADoorIsOpen}" Value="True">
+                                    <DataTrigger.EnterActions>
+                                        <BeginStoryboard>
+                                            <Storyboard>
+                                                <DoubleAnimation  Storyboard.TargetProperty="Width" To="15" Duration="0:0:1"/>
+                                            </Storyboard>
+                                        </BeginStoryboard>
+                                    </DataTrigger.EnterActions>
+                                    <DataTrigger.ExitActions>
+                                        <BeginStoryboard>
+                                            <Storyboard>
+                                                <DoubleAnimation  Storyboard.TargetProperty="Width" To="145" Duration="0:0:1"/>
+                                            </Storyboard>
+                                        </BeginStoryboard>
+                                    </DataTrigger.ExitActions>
+                                </DataTrigger>
+                            </Style.Triggers>
+                        </Style>
+                    </Rectangle.Style>
+                    <Rectangle.RenderTransform>
+                        <TransformGroup>
+                            <ScaleTransform/>
+                            <SkewTransform/>
+                            <RotateTransform Angle="30"/>
+                            <TranslateTransform/>
+                        </TransformGroup>
+                    </Rectangle.RenderTransform>
+                </Rectangle>
+                <Rectangle Width="145" Height="15" HorizontalAlignment="Left" Canvas.Left="213" VerticalAlignment="Center" Fill="Gray" Opacity=".8" Visibility="{Binding ElementName=venusDetm,Path=VCEAIsInstalled,Converter={StaticResource boolToVisibility2}}" Cursor="" Canvas.Top="239" >
+                    <Rectangle.Style>
+                        <Style TargetType="Rectangle">
+                            <Style.Triggers>
+                                <DataTrigger Binding="{Binding ElementName=venusDetm,Path=VCEADoorIsOpen}" Value="True">
+                                    <DataTrigger.EnterActions>
+                                        <BeginStoryboard>
+                                            <Storyboard>
+                                                <DoubleAnimation  Storyboard.TargetProperty="Width" To="15" Duration="0:0:1"/>
+                                            </Storyboard>
+                                        </BeginStoryboard>
+                                    </DataTrigger.EnterActions>
+                                    <DataTrigger.ExitActions>
+                                        <BeginStoryboard>
+                                            <Storyboard>
+                                                <DoubleAnimation  Storyboard.TargetProperty="Width" To="145" Duration="0:0:1"/>
+                                            </Storyboard>
+                                        </BeginStoryboard>
+                                    </DataTrigger.ExitActions>
+                                </DataTrigger>
+                            </Style.Triggers>
+                        </Style>
+                    </Rectangle.Style>
+                    <Rectangle.RenderTransform>
+                        <TransformGroup>
+                            <ScaleTransform/>
+                            <SkewTransform/>
+                            <RotateTransform Angle="-150"/>
+                            <TranslateTransform/>
+                        </TransformGroup>
+                    </Rectangle.RenderTransform>
+                </Rectangle>
+
+            </Canvas>
+
+            <Canvas Width="145" Height="15" Canvas.Top="135" Canvas.Left="-67" Visibility="{Binding ElementName=venusDetm,Path=IsShowAisle,Converter={StaticResource boolToVisibility}}">
+                <Rectangle Fill="#bababa" Panel.ZIndex="-1"  Width="145" Height="15" HorizontalAlignment="Left" Canvas.Left="234" VerticalAlignment="Center" Visibility="{Binding ElementName=venusDetm,Path=VCEBIsInstalled,Converter={StaticResource boolToVisibility2}}" Canvas.Top="183">
                     <Rectangle.RenderTransform>
                         <TransformGroup>
                             <RotateTransform Angle="-30"/>
                         </TransformGroup>
                     </Rectangle.RenderTransform>
                 </Rectangle>
-                <Rectangle Width="85" Height="20" HorizontalAlignment="Left" Canvas.Left="211" Canvas.Top="72" VerticalAlignment="Center" Fill="Gray" Opacity=".8" Visibility="{Binding ElementName=venusSetm,Path=VCEBIsInstalled,Converter={StaticResource boolToVisibility2}}" Cursor="" >
+                <Rectangle Width="145" Height="15" HorizontalAlignment="Center" Canvas.Left="234" Canvas.Top="182" VerticalAlignment="Top" Fill="Gray" Opacity=".8" Visibility="{Binding ElementName=venusDetm,Path=VCEBIsInstalled,Converter={StaticResource boolToVisibility2}}" Cursor="" >
                     <Rectangle.Style>
                         <Style TargetType="Rectangle">
                             <Style.Triggers>
-                                <DataTrigger Binding="{Binding ElementName=venusSetm,Path=VCEBDoorIsOpen}" Value="True">
+                                <DataTrigger Binding="{Binding ElementName=venusDetm,Path=VCEBDoorIsOpen}" Value="True">
                                     <DataTrigger.EnterActions>
                                         <BeginStoryboard>
                                             <Storyboard>
-                                                <DoubleAnimation  Storyboard.TargetProperty="Width" To="20" Duration="0:0:1"/>
+                                                <DoubleAnimation  Storyboard.TargetProperty="Width" To="15" Duration="0:0:1"/>
                                             </Storyboard>
                                         </BeginStoryboard>
                                     </DataTrigger.EnterActions>
                                     <DataTrigger.ExitActions>
                                         <BeginStoryboard>
                                             <Storyboard>
-                                                <DoubleAnimation  Storyboard.TargetProperty="Width" To="85" Duration="0:0:1"/>
+                                                <DoubleAnimation  Storyboard.TargetProperty="Width" To="145" Duration="0:0:1"/>
                                             </Storyboard>
                                         </BeginStoryboard>
                                     </DataTrigger.ExitActions>
@@ -446,22 +676,22 @@
                         </TransformGroup>
                     </Rectangle.RenderTransform>
                 </Rectangle>
-                <Rectangle Width="85" Height="20" HorizontalAlignment="Center" Canvas.Left="295" VerticalAlignment="Top" Fill="Gray" Opacity=".8" Visibility="{Binding ElementName=venusSetm,Path=VCEBIsInstalled,Converter={StaticResource boolToVisibility2}}" Cursor="" Canvas.Top="46" >
+                <Rectangle Width="145" Height="15" HorizontalAlignment="Left" Canvas.Left="368" VerticalAlignment="Center" Fill="Gray" Opacity=".8" Visibility="{Binding ElementName=venusDetm,Path=VCEBIsInstalled,Converter={StaticResource boolToVisibility2}}" Cursor="" Canvas.Top="122" >
                     <Rectangle.Style>
                         <Style TargetType="Rectangle">
                             <Style.Triggers>
-                                <DataTrigger Binding="{Binding ElementName=venusSetm,Path=VCEBDoorIsOpen}" Value="True">
+                                <DataTrigger Binding="{Binding ElementName=venusDetm,Path=VCEBDoorIsOpen}" Value="True">
                                     <DataTrigger.EnterActions>
                                         <BeginStoryboard>
                                             <Storyboard>
-                                                <DoubleAnimation  Storyboard.TargetProperty="Width" To="20" Duration="0:0:1"/>
+                                                <DoubleAnimation  Storyboard.TargetProperty="Width" To="15" Duration="0:0:1"/>
                                             </Storyboard>
                                         </BeginStoryboard>
                                     </DataTrigger.EnterActions>
                                     <DataTrigger.ExitActions>
                                         <BeginStoryboard>
                                             <Storyboard>
-                                                <DoubleAnimation  Storyboard.TargetProperty="Width" To="85" Duration="0:0:1"/>
+                                                <DoubleAnimation  Storyboard.TargetProperty="Width" To="145" Duration="0:0:1"/>
                                             </Storyboard>
                                         </BeginStoryboard>
                                     </DataTrigger.ExitActions>
@@ -480,30 +710,30 @@
                 </Rectangle>
 
             </Canvas>
-            <Canvas Width="85" Height="20" Canvas.Top="186" Canvas.Left="-120">
-                <Rectangle Fill="#bababa" Panel.ZIndex="-1"  Width="85" Height="20" HorizontalAlignment="Center" Canvas.Left="173" VerticalAlignment="Top" Visibility="{Binding ElementName=venusSetm,Path=VCEAIsInstalled,Converter={StaticResource boolToVisibility2}}" Canvas.Top="72">
+            <Canvas Width="145" Height="15" Canvas.Top="92" Canvas.Left="-67"  Visibility="{Binding ElementName=venusDetm,Path=IsShowAisle,Converter={StaticResource boolToVisibility}}">
+                <Rectangle Fill="#bababa" Panel.ZIndex="-1"  Width="145" Height="15" HorizontalAlignment="Left" Canvas.Left="95" VerticalAlignment="Center" Visibility="{Binding ElementName=venusDetm,Path=VCEAIsInstalled,Converter={StaticResource boolToVisibility2}}" Canvas.Top="153">
                     <Rectangle.RenderTransform>
                         <TransformGroup>
                             <RotateTransform Angle="30"/>
                         </TransformGroup>
                     </Rectangle.RenderTransform>
                 </Rectangle>
-                <Rectangle Width="85" Height="20" HorizontalAlignment="Center" Canvas.Left="173" Canvas.Top="73" VerticalAlignment="Top" Fill="Gray" Opacity=".8" Visibility="{Binding ElementName=venusSetm,Path=VCEAIsInstalled,Converter={StaticResource boolToVisibility2}}" Cursor="" >
+                <Rectangle Width="145" Height="15" HorizontalAlignment="Left" Canvas.Left="95" Canvas.Top="153" VerticalAlignment="Center" Fill="Gray" Opacity=".8" Visibility="{Binding ElementName=venusDetm,Path=VCEAIsInstalled,Converter={StaticResource boolToVisibility2}}" Cursor="" >
                     <Rectangle.Style>
                         <Style TargetType="Rectangle">
                             <Style.Triggers>
-                                <DataTrigger Binding="{Binding ElementName=venusSetm,Path=VCEADoorIsOpen}" Value="True">
+                                <DataTrigger Binding="{Binding ElementName=venusDetm,Path=VCEADoorIsOpen}" Value="True">
                                     <DataTrigger.EnterActions>
                                         <BeginStoryboard>
                                             <Storyboard>
-                                                <DoubleAnimation  Storyboard.TargetProperty="Width" To="20" Duration="0:0:1"/>
+                                                <DoubleAnimation  Storyboard.TargetProperty="Width" To="15" Duration="0:0:1"/>
                                             </Storyboard>
                                         </BeginStoryboard>
                                     </DataTrigger.EnterActions>
                                     <DataTrigger.ExitActions>
                                         <BeginStoryboard>
                                             <Storyboard>
-                                                <DoubleAnimation  Storyboard.TargetProperty="Width" To="85" Duration="0:0:1"/>
+                                                <DoubleAnimation  Storyboard.TargetProperty="Width" To="145" Duration="0:0:1"/>
                                             </Storyboard>
                                         </BeginStoryboard>
                                     </DataTrigger.ExitActions>
@@ -520,22 +750,22 @@
                         </TransformGroup>
                     </Rectangle.RenderTransform>
                 </Rectangle>
-                <Rectangle Width="85" Height="20" HorizontalAlignment="Center" Canvas.Left="237" VerticalAlignment="Top" Fill="Gray" Opacity=".8" Visibility="{Binding ElementName=venusSetm,Path=VCEAIsInstalled,Converter={StaticResource boolToVisibility2}}" Cursor="" Canvas.Top="134" >
+                <Rectangle Width="145" Height="15" HorizontalAlignment="Left" Canvas.Left="213" VerticalAlignment="Center" Fill="Gray" Opacity=".8" Visibility="{Binding ElementName=venusDetm,Path=VCEAIsInstalled,Converter={StaticResource boolToVisibility2}}" Cursor="" Canvas.Top="239" >
                     <Rectangle.Style>
                         <Style TargetType="Rectangle">
                             <Style.Triggers>
-                                <DataTrigger Binding="{Binding ElementName=venusSetm,Path=VCEADoorIsOpen}" Value="True">
+                                <DataTrigger Binding="{Binding ElementName=venusDetm,Path=VCEADoorIsOpen}" Value="True">
                                     <DataTrigger.EnterActions>
                                         <BeginStoryboard>
                                             <Storyboard>
-                                                <DoubleAnimation  Storyboard.TargetProperty="Width" To="20" Duration="0:0:1"/>
+                                                <DoubleAnimation  Storyboard.TargetProperty="Width" To="15" Duration="0:0:1"/>
                                             </Storyboard>
                                         </BeginStoryboard>
                                     </DataTrigger.EnterActions>
                                     <DataTrigger.ExitActions>
                                         <BeginStoryboard>
                                             <Storyboard>
-                                                <DoubleAnimation  Storyboard.TargetProperty="Width" To="85" Duration="0:0:1"/>
+                                                <DoubleAnimation  Storyboard.TargetProperty="Width" To="145" Duration="0:0:1"/>
                                             </Storyboard>
                                         </BeginStoryboard>
                                     </DataTrigger.ExitActions>
@@ -555,7 +785,20 @@
 
             </Canvas>
             <!--#endregion-->
+
+            <Path Visibility="Hidden" Fill="DimGray" HorizontalAlignment="Center" Canvas.Left="10" VerticalAlignment="Top" Canvas.Top="-18">
+                <Path.Data>
+                    <GeometryGroup>
+                        <!--Center为圆心的坐标,RadiusX、RadiusY分别为X、Y两轴的半径-->
+                        <EllipseGeometry RadiusX="125" RadiusY="125" Center="150,180"/>
+                        <EllipseGeometry RadiusX="110" RadiusY="110" Center="150,180"/>
+                    </GeometryGroup>
+                </Path.Data>
+            </Path>
+
+
         </Canvas>
+
     </Viewbox>
 
 </UserControl>

+ 49 - 18
Venus/Venus_Themes/UserControls/VenusDETM.xaml.cs

@@ -11,6 +11,7 @@ using System.Windows.Documents;
 using System.Windows.Input;
 using System.Windows.Media;
 using System.Windows.Media.Imaging;
+using System.Windows.Media.Media3D;
 using System.Windows.Navigation;
 using System.Windows.Shapes;
 using Venus_Core;
@@ -60,31 +61,32 @@ namespace Venus_Themes.UserControls
         "PMCIsInstalled", typeof(bool), typeof(VenusDETM));
 
         public static readonly DependencyProperty PMDIsInstalledProperty = DependencyProperty.Register(
-        "PMDIsInstalled", typeof(bool), typeof(VenusDETM), new PropertyMetadata(true, OnDataPropertyChanged));
+        "PMDIsInstalled", typeof(bool), typeof(VenusDETM));
 
         public static readonly DependencyProperty PAWaferProperty = DependencyProperty.Register(
         "PAWafer", typeof(WaferInfo), typeof(VenusDETM));
+
         public WaferInfo PAWafer
         {
             get => (WaferInfo)GetValue(PAWaferProperty);
             set => SetValue(PAWaferProperty, value);
         }
-        private static void OnDataPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
-        {
-            if (d is VenusDETM setm)
-            {
-                if ((bool)e.NewValue)
-                {
-                    setm.VPAligner.SetValue(Canvas.LeftProperty, 84.0);
-                    setm.VPAligner.SetValue(Canvas.TopProperty, 240.0);
-                }
-                else
-                {
-                    setm.VPAligner.SetValue(Canvas.LeftProperty, 295.0);
-                    setm.VPAligner.SetValue(Canvas.TopProperty, 120.0) ;
-                }
-            }
-        }
+        //private static void OnDataPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
+        //{
+        //    if (d is VenusDETM setm)
+        //    {
+        //        if ((bool)e.NewValue)
+        //        {
+        //            setm.VPAligner.SetValue(Canvas.LeftProperty, 84.0);
+        //            setm.VPAligner.SetValue(Canvas.TopProperty, 240.0);
+        //        }
+        //        else
+        //        {
+        //            setm.VPAligner.SetValue(Canvas.LeftProperty, 295.0);
+        //            setm.VPAligner.SetValue(Canvas.TopProperty, 120.0) ;
+        //        }
+        //    }
+        //}
 
         public bool PMCIsInstalled
         {
@@ -111,7 +113,13 @@ namespace Venus_Themes.UserControls
             get => (bool)GetValue(VPAIsShowProperty);
             set => SetValue(VPAIsShowProperty, value);
         }
-
+        public static readonly DependencyProperty IsAlignerOnRightProperty = DependencyProperty.Register(
+    "IsAlignerOnRight", typeof(bool), typeof(VenusDETM), new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender));
+        public bool IsAlignerOnRight
+        {
+            get => (bool)GetValue(IsAlignerOnRightProperty);
+            set => SetValue(IsAlignerOnRightProperty, value);
+        }
         public static readonly DependencyProperty PMADoorIsOpenProperty = DependencyProperty.Register(
         "PMADoorIsOpen", typeof(bool), typeof(VenusDETM));
         public bool PMADoorIsOpen
@@ -159,6 +167,29 @@ namespace Venus_Themes.UserControls
             get => (bool)GetValue(VCEBDoorIsOpenProperty);
             set => SetValue(VCEBDoorIsOpenProperty, value);
         }
+        public static readonly DependencyProperty IsShowAisleProperty = DependencyProperty.Register(
+            "IsShowAisle", typeof(bool), typeof(VenusDETM));
+        public bool IsShowAisle
+        {
+            get => (bool)GetValue(IsShowAisleProperty);
+            set => SetValue(IsShowAisleProperty, value);
+        }
+        private static void OnDataPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
+        {
+            if (d is VenusDETM setm)
+            {
+                if ((bool)e.NewValue)
+                {
+                    setm.VPAligner.SetValue(Canvas.LeftProperty, 84.0);
+                    setm.VPAligner.SetValue(Canvas.TopProperty, 240.0);
+                }
+                else
+                {
+                    setm.VPAligner.SetValue(Canvas.LeftProperty, 222.0);
+                    setm.VPAligner.SetValue(Canvas.TopProperty, 75.0);
+                }
+            }
+        }
 
     }
 

+ 5 - 2
Venus/Venus_Themes/Venus_Themes.csproj

@@ -54,6 +54,8 @@
   </ItemGroup>
   <ItemGroup>
     <Compile Include="Converters\Bool2Not.cs" />
+    <Compile Include="Converters\BoolToAngle.cs" />
+    <Compile Include="Converters\BoolToAngle2.cs" />
     <Compile Include="Converters\BoolToColor.cs" />
     <Compile Include="Converters\BoolToColor2.cs" />
     <Compile Include="Converters\BoolToColor3.cs" />
@@ -111,6 +113,7 @@
     <Compile Include="CustomControls\Controls\WindowTopArea.cs" />
     <Compile Include="CustomControls\CustomComBobox.cs" />
     <Compile Include="CustomControls\CustomPasswordBox.cs" />
+    <Compile Include="CustomControls\DERobot.cs" />
     <Compile Include="CustomControls\GuangChuanRobot.cs" />
     <Compile Include="CustomControls\CustomRobot.cs" />
     <Compile Include="CustomControls\MultiComboBox.cs" />
@@ -748,9 +751,9 @@
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Resource>
     <Resource Include="Themes\Images\parts\venusde\VCEleft1.png" />
-    <Content Include="Themes\Images\parts\venusde\VCEleft2.png" />
+    <Resource Include="Themes\Images\parts\venusde\VCEleft2.png" />
     <Resource Include="Themes\Images\parts\venusde\VCEright1.png" />
-    <Content Include="Themes\Images\parts\venusde\VCEright2.png" />
+    <Resource Include="Themes\Images\parts\venusde\VCEright2.png" />
     <Content Include="Themes\Images\parts\vtmrobot\arm1.png" />
     <Content Include="Themes\Images\parts\vtmrobot\arm2.png" />
     <Content Include="Themes\Images\parts\vtmrobot\dock.png" />