浏览代码

优化efem动画

lixiang 1 年之前
父节点
当前提交
9f512c69c9

+ 4 - 0
Venus/Venus_MainPages/ViewModels/EfemViewModel.cs

@@ -902,6 +902,10 @@ namespace Venus_MainPages.ViewModels
             {
                 CurrentRobotPosition = RobotPosition.Right;
             }
+            else if (waferRobotTAction == WaferRobotTAction.LP2)
+            {
+                CurrentRobotPosition = RobotPosition.Middle;
+            }
             else
             { 
                 CurrentRobotPosition = RobotPosition.Origin;

+ 4 - 0
Venus/Venus_MainPages/ViewModels/OperationOverViewModel.cs

@@ -1003,6 +1003,10 @@ namespace Venus_MainPages.ViewModels
             {
                 CurrentRobotPosition = RobotPosition.Right;
             }
+            else if (waferRobotTAction == WaferRobotTAction.LP2)
+            {
+                CurrentRobotPosition = RobotPosition.Middle;
+            }
             else
             {
                 CurrentRobotPosition = RobotPosition.Origin;

+ 1 - 1
Venus/Venus_MainPages/Views/EfemView.xaml

@@ -598,7 +598,7 @@
         </StackPanel>
 
 
-        <Canvas Visibility="Collapsed">
+        <Canvas Visibility="Visible">
             <Button Content="平移" Canvas.Left="1600" Canvas.Top="60" Width="100" Height="30" Click="Button_Click_3"/>
             <ComboBox Canvas.Left="1700" Canvas.Top="60" Width="100" Height="30" x:Name="cb2">
                 <ComboBoxItem>Right</ComboBoxItem>

+ 7 - 5
Venus/Venus_MainPages/Views/EfemView.xaml.cs

@@ -38,17 +38,19 @@ namespace Venus_MainPages.Views
         {
             //DoubleAnimation doubleAnimation = new DoubleAnimation();
             //efem1.CurrentRobotPosition = RobotPosition.Original;
-            efem1.RobotATAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), cb1.Text);
+            //efem1.RobotATAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), cb1.Text);
+           // efem1.GoToPosition();
+           
         }
 
         private async void Button_Click_1(object sender, RoutedEventArgs e)
         {
             // robot1.RobotXAction = WaferRobotXAction.Extend;
             //efem1.RobotAXAction = WaferRobotXAction.Extend;
-            (this.DataContext as EfemViewModel).Robot1TAction = WaferRobotTAction.LP1;
-            await Task.Delay(2000);
-            (this.DataContext as EfemViewModel).Robot2TAction = WaferRobotTAction.LP2;
-
+            //(this.DataContext as EfemViewModel).Robot1TAction = WaferRobotTAction.LP1;
+            //await Task.Delay(2000);
+            //(this.DataContext as EfemViewModel).Robot2TAction = WaferRobotTAction.LP2;
+            efem1.RobotAXAction = WaferRobotXAction.Extend;
         }
 
         private void Button_Click_2(object sender, RoutedEventArgs e)

二进制
Venus/Venus_RT/Config/PM/Kepler2300/Kepler2300DeviceModel.xml


+ 2 - 2
Venus/Venus_Simulator/Instances/SimulatorSystem.cs

@@ -912,11 +912,11 @@ namespace Venus_Simulator.Instances
             float chamber_pressure1 = GetAiValue($"{mod}.{sAI_ChamberPressure}");
             if (chamber_pressure1 > ATM_PRESSURE)
             {
-                SetAiValue($"{mod}.AI_Chamber_Pressure_760t", ATM_PRESSURE);
+                SetAiValue($"{mod}.AI_Chamber_Pressure_10t", ATM_PRESSURE);
             }
             else if (chamber_pressure1 < 20)
             {
-                SetAiValue($"{mod}.AI_Chamber_Pressure_760t", 20);
+                SetAiValue($"{mod}.AI_Chamber_Pressure_10t", 20);
             }
 
             float process_pressure1 = GetAiValue($"{mod}.{sAI_ProcessPressure}");

+ 4 - 4
Venus/Venus_Themes/Themes/Generic.xaml

@@ -519,7 +519,7 @@
                                     <VisualTransition To="LP1">
                                         <Storyboard FillBehavior="HoldEnd">
                                             <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                                <LinearDoubleKeyFrame Value="-45" KeyTime="0:0:1"/>
+                                                <LinearDoubleKeyFrame Value="-90" KeyTime="0:0:1"/>
                                             </DoubleAnimationUsingKeyFrames>
                                         </Storyboard>
                                     </VisualTransition>
@@ -533,7 +533,7 @@
                                     <VisualTransition To="LP3">
                                         <Storyboard FillBehavior="HoldEnd">
                                             <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                                <LinearDoubleKeyFrame Value="-135" KeyTime="0:0:1"/>
+                                                <LinearDoubleKeyFrame Value="-90" KeyTime="0:0:1"/>
                                             </DoubleAnimationUsingKeyFrames>
                                         </Storyboard>
                                     </VisualTransition>
@@ -591,7 +591,7 @@
                                 <VisualState Name="LP1">
                                     <Storyboard FillBehavior="HoldEnd">
                                         <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                            <LinearDoubleKeyFrame Value="-45" KeyTime="0:0:0"/>
+                                            <LinearDoubleKeyFrame Value="-90" KeyTime="0:0:0"/>
                                         </DoubleAnimationUsingKeyFrames>
                                     </Storyboard>
                                 </VisualState>
@@ -605,7 +605,7 @@
                                 <VisualState Name="LP3">
                                     <Storyboard FillBehavior="HoldEnd">
                                         <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                            <LinearDoubleKeyFrame Value="-135" KeyTime="0:0:0"/>
+                                            <LinearDoubleKeyFrame Value="-90" KeyTime="0:0:0"/>
                                         </DoubleAnimationUsingKeyFrames>
                                     </Storyboard>
                                 </VisualState>

+ 102 - 32
Venus/Venus_Themes/UserControls/EFEM.xaml

@@ -9,6 +9,70 @@
              xmlns:customControls="clr-namespace:Venus_Themes.CustomControls"
              mc:Ignorable="d" 
              d:DesignHeight="450" d:DesignWidth="800" Name="efem">
+    <VisualStateManager.VisualStateGroups>
+        <VisualStateGroup Name="RobotTActions">
+            <VisualStateGroup.Transitions>
+                <VisualTransition To="Left">
+                    <Storyboard FillBehavior="HoldEnd">
+                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="X">
+                            <LinearDoubleKeyFrame Value="-210" KeyTime="0:0:1"/>
+                        </DoubleAnimationUsingKeyFrames>
+                    </Storyboard>
+                </VisualTransition>
+                <VisualTransition To="Right">
+                    <Storyboard FillBehavior="HoldEnd">
+                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="X">
+                            <LinearDoubleKeyFrame Value="510" KeyTime="0:0:1"/>
+                        </DoubleAnimationUsingKeyFrames>
+                    </Storyboard>
+                </VisualTransition>
+                <VisualTransition To="Middle">
+                    <Storyboard FillBehavior="HoldEnd">
+                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="X">
+                            <LinearDoubleKeyFrame Value="130" KeyTime="0:0:1"/>
+                        </DoubleAnimationUsingKeyFrames>
+                    </Storyboard>
+                </VisualTransition>
+                <VisualTransition To="Origin">
+                    <Storyboard FillBehavior="HoldEnd">
+                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="X">
+                            <LinearDoubleKeyFrame Value="0" KeyTime="0:0:1"/>
+                        </DoubleAnimationUsingKeyFrames>
+                    </Storyboard>
+                </VisualTransition>
+            </VisualStateGroup.Transitions>
+
+            <VisualState Name="Left">
+                <Storyboard FillBehavior="HoldEnd">
+                    <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="X">
+                        <LinearDoubleKeyFrame Value="-210" KeyTime="0:0:0"/>
+                    </DoubleAnimationUsingKeyFrames>
+                </Storyboard>
+            </VisualState>
+            <VisualState Name="Right">
+                <Storyboard FillBehavior="HoldEnd">
+                    <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="X">
+                        <LinearDoubleKeyFrame Value="510" KeyTime="0:0:0"/>
+                    </DoubleAnimationUsingKeyFrames>
+                </Storyboard>
+            </VisualState>
+            <VisualState Name="Middle">
+                <Storyboard FillBehavior="HoldEnd">
+                    <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="X">
+                        <LinearDoubleKeyFrame Value="130" KeyTime="0:0:0"/>
+                    </DoubleAnimationUsingKeyFrames>
+                </Storyboard>
+            </VisualState>
+            <VisualState Name="Origin">
+                <Storyboard FillBehavior="HoldEnd">
+                    <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="X">
+                        <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
+                    </DoubleAnimationUsingKeyFrames>
+                </Storyboard>
+            </VisualState>
+        </VisualStateGroup>
+
+    </VisualStateManager.VisualStateGroups>
     <UserControl.Resources>
         <converters:BoolToVisibility2 x:Key="BoolToVisibility2"/>
         <Style x:Key="LP1Style">
@@ -78,37 +142,49 @@
                     <DataTrigger.EnterActions>
                         <BeginStoryboard x:Name="toLeft">
                             <Storyboard>
-                                <DoubleAnimation  Storyboard.TargetProperty="RenderTransform.Children[0].X"  To="-200" Duration="0:0:1"/>
+                                <DoubleAnimation FillBehavior="HoldEnd" Storyboard.TargetProperty="RenderTransform.Children[0].X"  To="-200" Duration="0:0:1"/>
                             </Storyboard>
                         </BeginStoryboard>
                     </DataTrigger.EnterActions>
-                    <DataTrigger.ExitActions>
+                    <!--<DataTrigger.ExitActions>
                         <RemoveStoryboard BeginStoryboardName="toLeft"/>
-                    </DataTrigger.ExitActions>
+                    </DataTrigger.ExitActions>-->
+                </DataTrigger>
+                <DataTrigger Binding="{Binding ElementName=efem,Path=CurrentRobotPosition}" Value="Middle">
+                    <DataTrigger.EnterActions>
+                        <BeginStoryboard x:Name="toMiddle">
+                            <Storyboard>
+                                <DoubleAnimation FillBehavior="HoldEnd" Storyboard.TargetProperty="RenderTransform.Children[0].X"  To="100" Duration="0:0:1"/>
+                            </Storyboard>
+                        </BeginStoryboard>
+                    </DataTrigger.EnterActions>
+                    <!--<DataTrigger.ExitActions>
+                        <RemoveStoryboard BeginStoryboardName="toMiddle"/>
+                    </DataTrigger.ExitActions>-->
                 </DataTrigger>
                 <DataTrigger Binding="{Binding ElementName=efem,Path=CurrentRobotPosition}" Value="Right">
                     <DataTrigger.EnterActions>
                         <BeginStoryboard x:Name="toRight">
                             <Storyboard>
-                                <DoubleAnimation  Storyboard.TargetProperty="RenderTransform.Children[0].X"  To="200" Duration="0:0:1"/>
+                                <DoubleAnimation FillBehavior="HoldEnd" Storyboard.TargetProperty="RenderTransform.Children[0].X"  To="500" Duration="0:0:1"/>
                             </Storyboard>
                         </BeginStoryboard>
                     </DataTrigger.EnterActions>
-                    <DataTrigger.ExitActions>
+                    <!--<DataTrigger.ExitActions>
                         <RemoveStoryboard BeginStoryboardName="toRight"/>
-                    </DataTrigger.ExitActions>
+                    </DataTrigger.ExitActions>-->
                 </DataTrigger>
                 <DataTrigger Binding="{Binding ElementName=efem,Path=CurrentRobotPosition}" Value="Origin">
                     <DataTrigger.EnterActions>
                         <BeginStoryboard x:Name="toOrigin">
                             <Storyboard>
-                                <DoubleAnimation  Storyboard.TargetProperty="RenderTransform.Children[0].X"  To="0" Duration="0:0:1"/>
+                                <DoubleAnimation FillBehavior="HoldEnd"  Storyboard.TargetProperty="RenderTransform.Children[0].X"  To="0" Duration="0:0:1"/>
                             </Storyboard>
                         </BeginStoryboard>
                     </DataTrigger.EnterActions>
-                    <DataTrigger.ExitActions>
+                    <!--<DataTrigger.ExitActions>
                         <RemoveStoryboard BeginStoryboardName="toOrigin"/>
-                    </DataTrigger.ExitActions>
+                    </DataTrigger.ExitActions>-->
                 </DataTrigger>
             </Style.Triggers>
         </Style>
@@ -130,27 +206,27 @@
                         </LinearGradientBrush>
                     </Polygon.Fill>
                 </Polygon>
-                <Canvas Width="500" Height="500" Canvas.Left="510" Canvas.Top="50" Style="{StaticResource PlatformStyle}">
+                <Canvas Width="500" Height="500" Canvas.Left="510" Canvas.Top="50"  RenderTransformOrigin="1 1">
                     <Canvas.RenderTransform>
                         <TransformGroup>
-                            <TranslateTransform/>
+                            <TranslateTransform  x:Name="robotRotateAct"/>
                         </TransformGroup>
                     </Canvas.RenderTransform>
-                    <Ellipse  Width="500" Height="500"  x:Name="ep1" >
+                    <!--<Ellipse  Width="500" Height="500"  x:Name="ep1" >
                         <Ellipse.Fill>
                             <RadialGradientBrush >
                                 <GradientStop Color="#FFFFFFFF" Offset="0" />
                                 <GradientStop Color="Silver" Offset="1" />
                             </RadialGradientBrush>
                         </Ellipse.Fill>
-                    </Ellipse>
+                    </Ellipse>-->
 
-                    <customControls:GuangChuanRobotControl  OriginT="Aligner1"  Canvas.Left="-30" Canvas.Top="-140"   Width="540" Height="810"     RobotTAction="{Binding ElementName=efem,Path=RobotATAction}"  RobotXAction="{Binding ElementName=efem,Path=RobotAXAction}" RobotWafer="{Binding ElementName=efem,Path=RobotAWaferInfo}"/>
-                    <customControls:GuangChuanRobotControl  OriginT="PMD"  Canvas.Left="-30" Canvas.Top="-140"   Width="540" Height="810"     RobotTAction="{Binding ElementName=efem,Path=RobotBTAction}"  RobotXAction="{Binding ElementName=efem,Path=RobotBXAction}" RobotWafer="{Binding ElementName=efem,Path=RobotBWaferInfo}"/>
+                    <customControls:GuangChuanRobotControl  OriginT="Aligner1"  Canvas.Left="-30" Canvas.Top="-180"   Width="540" Height="810"     RobotTAction="{Binding ElementName=efem,Path=RobotATAction}"  RobotXAction="{Binding ElementName=efem,Path=RobotAXAction}" RobotWafer="{Binding ElementName=efem,Path=RobotAWaferInfo}"/>
+                    <customControls:GuangChuanRobotControl  OriginT="PMD"       Canvas.Left="-30" Canvas.Top="-180"   Width="540" Height="810"     RobotTAction="{Binding ElementName=efem,Path=RobotBTAction}"  RobotXAction="{Binding ElementName=efem,Path=RobotBXAction}" RobotWafer="{Binding ElementName=efem,Path=RobotBWaferInfo}"/>
                 </Canvas>
 
 
-                <Viewbox Stretch="Uniform" Width="370" Height="370" Canvas.Left="-10"  Canvas.Top="100">
+                <Viewbox Stretch="Uniform" Width="370" Height="370" Canvas.Left="-10"  Canvas.Top="60">
 
                     <Canvas UseLayoutRounding="False"  Width="93.693" Height="112.5" HorizontalAlignment="Left" VerticalAlignment="Top">
                         <Canvas  Width="72.522" Height="72.521" Canvas.Left="10.473" Canvas.Top="28.781">
@@ -184,37 +260,31 @@
 
 
 
-                <local:Loadport Canvas.Left="10"  Canvas.Top="610" Width="300" Height="300">
-                    <local:Loadport.RenderTransform>
-                        <TransformGroup>
-                            <TranslateTransform/>
-                        </TransformGroup>
-                    </local:Loadport.RenderTransform>
-                </local:Loadport>
-                <local:Loadport Canvas.Left="610" Canvas.Top="610" Width="300" Height="300"/>
-                <local:Loadport Canvas.Left="1200" Canvas.Top="610" Width="300" Height="300"/>
+                <local:Loadport Canvas.Left="360"   Canvas.Top="610" Width="300" Height="300"/>
+                <local:Loadport Canvas.Left="750"  Canvas.Top="610" Width="300" Height="300"/>
+                <local:Loadport Canvas.Left="1150" Canvas.Top="610" Width="300" Height="300"/>
 
 
-                <TextBlock Text="Aligner1" FontSize="60" Canvas.Left="70"    Canvas.Top="90"/>
+                <TextBlock Text="Aligner1" FontSize="60" Canvas.Left="70"    Canvas.Top="50"/>
                 <!--<TextBlock Text="Aligner2" FontSize="40" Canvas.Left="990"  Canvas.Top="5"/>
                 <TextBlock Text="Cooling1" FontSize="40" Canvas.Left="66"    Canvas.Top="310"/>
                 <TextBlock Text="Aligner1" FontSize="40" Canvas.Left="990"  Canvas.Top="310"/>-->
 
-                <local:Foup Width="230" Height="450" Canvas.Left="44"  Canvas.Top="655"   Visibility="{Binding ElementName=efem,Path=LP1Presented,Converter={StaticResource BoolToVisibility2}}" Style="{StaticResource LP1Style}">
+                <local:Foup Width="230" Height="450" Canvas.Left="395"  Canvas.Top="655"   Visibility="{Binding ElementName=efem,Path=LP1Presented,Converter={StaticResource BoolToVisibility2}}" Style="{StaticResource LP1Style}">
                     <local:Foup.RenderTransform>
                         <TransformGroup>
                             <TranslateTransform/>
                         </TransformGroup>
                     </local:Foup.RenderTransform>
                 </local:Foup>
-                <local:Foup Width="230" Height="450" Canvas.Left="646"  Canvas.Top="655"   Visibility="{Binding ElementName=efem,Path=LP2Presented,Converter={StaticResource BoolToVisibility2}}" Style="{StaticResource LP2Style}">
+                <local:Foup Width="230" Height="450" Canvas.Left="785"  Canvas.Top="655"   Visibility="{Binding ElementName=efem,Path=LP2Presented,Converter={StaticResource BoolToVisibility2}}" Style="{StaticResource LP2Style}">
                     <local:Foup.RenderTransform>
                         <TransformGroup>
                             <TranslateTransform/>
                         </TransformGroup>
                     </local:Foup.RenderTransform>
                 </local:Foup>
-                <local:Foup Width="230" Height="450" Canvas.Left="1236" Canvas.Top="655"  Visibility="{Binding ElementName=efem,Path=LP3Presented,Converter={StaticResource BoolToVisibility2}}" Style="{StaticResource LP3Style}">
+                <local:Foup Width="230" Height="450" Canvas.Left="1185" Canvas.Top="655"  Visibility="{Binding ElementName=efem,Path=LP3Presented,Converter={StaticResource BoolToVisibility2}}" Style="{StaticResource LP3Style}">
                     <local:Foup.RenderTransform>
                         <TransformGroup>
                             <TranslateTransform/>
@@ -222,9 +292,9 @@
                     </local:Foup.RenderTransform>
                 </local:Foup>
 
-                <TextBlock Text="LP1" Canvas.Left="120"  Canvas.Top="920" FontSize="55"/>
-                <TextBlock Text="LP2" Canvas.Left="700"  Canvas.Top="920" FontSize="55"/>
-                <TextBlock Text="LP3" Canvas.Left="1300"  Canvas.Top="920" FontSize="55"/>
+                <TextBlock Text="LP1" Canvas.Left="460"  Canvas.Top="920" FontSize="55"/>
+                <TextBlock Text="LP2" Canvas.Left="860"  Canvas.Top="920" FontSize="55"/>
+                <TextBlock Text="LP3" Canvas.Left="1260"  Canvas.Top="920" FontSize="55"/>
             </Canvas>
 
         </Border>

+ 20 - 2
Venus/Venus_Themes/UserControls/EFEM.xaml.cs

@@ -21,6 +21,7 @@ namespace Venus_Themes.UserControls
             Origin,
             Right,
             Left,
+            Middle
         }
         public EFEM()
         {
@@ -89,13 +90,25 @@ namespace Venus_Themes.UserControls
 
         public static readonly DependencyProperty CurrentRobotPositionProperty = DependencyProperty.Register(
       "CurrentRobotPosition", typeof(RobotPosition), typeof(EFEM),
-      new FrameworkPropertyMetadata(RobotPosition.None, FrameworkPropertyMetadataOptions.AffectsRender));
+      new PropertyMetadata(RobotPosition.Origin, PositionChangedCallback));
         public RobotPosition CurrentRobotPosition
         {
             get { return (RobotPosition)this.GetValue(CurrentRobotPositionProperty); }
-            set { this.SetValue(CurrentRobotPositionProperty, value); }
+            set 
+            {
+                this.SetValue(CurrentRobotPositionProperty, value);
+            }
         }
+        private static void PositionChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e)
+        {
+            
+            var newAct = (RobotPosition)e.NewValue;
+            var control = d as EFEM;
+            GoToPosition(control,newAct);
+
 
+        }
+        
         public static readonly DependencyProperty RobotATActionProperty = DependencyProperty.Register(
      "RobotATAction", typeof(WaferRobotTAction), typeof(EFEM),
      new FrameworkPropertyMetadata(WaferRobotTAction.T_Origin, FrameworkPropertyMetadataOptions.AffectsRender));
@@ -151,5 +164,10 @@ namespace Venus_Themes.UserControls
             get { return (WaferInfo)this.GetValue(RobotAWaferInfoProperty); }
             set { this.SetValue(RobotAWaferInfoProperty, value); }
         }
+
+        private static void GoToPosition(Control control,RobotPosition robotPosition)
+        {            
+            VisualStateManager.GoToElementState(control, robotPosition.ToString(), true);
+        }
     }
 }