Browse Source

update EFEM View

chenkui 2 weeks ago
parent
commit
3811a9b925

+ 8 - 0
PunkHPX8_MainPages/PunkHPX8_MainPages.csproj

@@ -170,6 +170,7 @@
     <Compile Include="ViewModels\JobOperationViewModel.cs" />
     <Compile Include="ViewModels\JobOperationViewModel.cs" />
     <Compile Include="ViewModels\LoginViewModel.cs" />
     <Compile Include="ViewModels\LoginViewModel.cs" />
     <Compile Include="ViewModels\MaterialMovementViewModel.cs" />
     <Compile Include="ViewModels\MaterialMovementViewModel.cs" />
+    <Compile Include="ViewModels\OperationOverViewModelNew.cs" />
     <Compile Include="ViewModels\OperationOverViewModel.cs" />
     <Compile Include="ViewModels\OperationOverViewModel.cs" />
     <Compile Include="ViewModels\PMCounterViewModel.cs" />
     <Compile Include="ViewModels\PMCounterViewModel.cs" />
     <Compile Include="ViewModels\CMMPowerSupplierViewModel.cs" />
     <Compile Include="ViewModels\CMMPowerSupplierViewModel.cs" />
@@ -244,6 +245,9 @@
     <Compile Include="Views\MaterialMovementView.xaml.cs">
     <Compile Include="Views\MaterialMovementView.xaml.cs">
       <DependentUpon>MaterialMovementView.xaml</DependentUpon>
       <DependentUpon>MaterialMovementView.xaml</DependentUpon>
     </Compile>
     </Compile>
+    <Compile Include="Views\OperationOverViewNew.xaml.cs">
+      <DependentUpon>OperationOverViewNew.xaml</DependentUpon>
+    </Compile>
     <Compile Include="Views\PMCounterView.xaml.cs">
     <Compile Include="Views\PMCounterView.xaml.cs">
       <DependentUpon>PMCounterView.xaml</DependentUpon>
       <DependentUpon>PMCounterView.xaml</DependentUpon>
     </Compile>
     </Compile>
@@ -468,6 +472,10 @@
       <SubType>Designer</SubType>
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>
       <Generator>MSBuild:Compile</Generator>
     </Page>
     </Page>
+    <Page Include="Views\OperationOverViewNew.xaml">
+      <Generator>MSBuild:Compile</Generator>
+      <SubType>Designer</SubType>
+    </Page>
     <Page Include="Views\PMCounterView.xaml">
     <Page Include="Views\PMCounterView.xaml">
       <SubType>Designer</SubType>
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>
       <Generator>MSBuild:Compile</Generator>

File diff suppressed because it is too large
+ 1363 - 0
PunkHPX8_MainPages/ViewModels/OperationOverViewModelNew.cs


+ 0 - 123
PunkHPX8_MainPages/Views/EfemView.xaml

@@ -44,11 +44,6 @@
                                     Canvas.Top="70" Canvas.Left="160"/>
                                     Canvas.Top="70" Canvas.Left="160"/>
         <TextBlock Text="LP2" Canvas.Top="470" Canvas.Left="210" FontSize="12"
         <TextBlock Text="LP2" Canvas.Top="470" Canvas.Left="210" FontSize="12"
                    Visibility="{Binding RtDataValues[LP2.CassettePlaced],Converter={StaticResource BoolToVisibility2}}"></TextBlock>
                    Visibility="{Binding RtDataValues[LP2.CassettePlaced],Converter={StaticResource BoolToVisibility2}}"></TextBlock>
-        <userControls:FOUPFrontView UnitData="{Binding LP3ModuleInfo}"
-                                    IsCassettePlaced="{Binding RtDataValues[LP3.CassettePlaced]}"
-                                    Canvas.Top="70" Canvas.Left="300"/>
-        <TextBlock Text="LP3" Canvas.Top="470" Canvas.Left="350" FontSize="12"
-                   Visibility="{Binding RtDataValues[LP3.CassettePlaced],Converter={StaticResource BoolToVisibility2}}"></TextBlock>
 
 
 
 
         <StackPanel Canvas.Top="15" Canvas.Left="1700">
         <StackPanel Canvas.Top="15" Canvas.Left="1700">
@@ -521,124 +516,6 @@
 
 
             </Grid>
             </Grid>
 
 
-            <Grid Margin="1,0,0,0" Width="470" Visibility="{Binding IsLP1Installed, Converter={StaticResource bool2VisibilityConverter}}" IsEnabled="{Binding IsLP3Unable,Converter={StaticResource BoolToBool}}">
-                <Grid.RowDefinitions>
-                    <RowDefinition Height="24"/>
-                    <RowDefinition Height="30"/>
-                    <RowDefinition Height="30"/>
-                    <RowDefinition Height="30"/>
-                    <RowDefinition Height="30"/>
-                    <RowDefinition Height="30"/>
-
-                </Grid.RowDefinitions>
-                <Grid.ColumnDefinitions>
-                    <ColumnDefinition Width="100"/>
-                    <ColumnDefinition  Width="60"/>
-                    <ColumnDefinition  Width="*"/>
-                </Grid.ColumnDefinitions>
-                <Label Content="LP3"  Background="{DynamicResource Table_BG_Title}" BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,1,1,1" Grid.Row="0" Grid.ColumnSpan="3" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
-
-                <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Title}" Grid.Row="1" Padding="5,1,0,1">
-                    <TextBlock Text="Status" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="12" FontFamily="Arial" VerticalAlignment="Center" />
-                </Border>
-                <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,0,1" Background="{Binding LP1StatusBackground}" Grid.Row="1" Grid.Column="1" Padding="5,1">
-                    <TextBlock Text="{Binding RtDataValues[LP3.Status]}" TextAlignment="Center" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="12" FontFamily="Arial" VerticalAlignment="Center"/>
-                </Border>
-
-                <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Content}" Grid.Row="1" Grid.Column ="2" Padding="5,1">
-
-                    <StackPanel   Orientation="Horizontal"  >
-                        <!--<Button Content="Home" Width="80" Height="25" Margin="10,0" Command="{Binding LPHomeCommand}" CommandParameter="LP3"/>-->
-
-                        <Button IsEnabled="{Binding IsLP1AbortEnable}" Content="Abort" Width="80" Height="25" Margin="10,0" Command="{Binding LPAbortCommand}" CommandParameter="LP3"/>
-
-                        <Button IsEnabled="{Binding IsLP1ResetEnable}" Content="Reset" Width="80" Height="25" Margin="10,0"  Command="{Binding LPResetCommand}" CommandParameter="LP3"/>
-                    </StackPanel>
-                </Border>
-
-
-
-                <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Title}" Grid.Row="2" Padding="5,1,0,1">
-                    <TextBlock Text="Is Present" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="12" FontFamily="Arial" VerticalAlignment="Center"/>
-                </Border>
-                <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,0,1" Background="{DynamicResource Table_BG_Content}" Grid.Row="2" Grid.Column="1" Padding="5,1">
-                    <!--<deviceControl:AITSensor Margin="5,0" GreenColor="True" LightOnValue="{Binding IsLP1Present}"></deviceControl:AITSensor>-->
-                    <Ellipse Width="16" Height="16"  Fill="{Binding RtDataValues[LP3.CassettePlaced],Converter={StaticResource boolToColor}}" Stroke="Silver" HorizontalAlignment="Center"/>
-                </Border>
-                <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Content}" Grid.Row="2" Grid.Column="2" Padding="5,1">
-                    <StackPanel  Orientation="Horizontal" HorizontalAlignment="Left" IsEnabled="{Binding IsLP3HasNoJob}">
-                        <!--<Button IsEnabled="{Binding IsLP1LoadEnable}" Content="Load" Width="80" Height="25" Margin="10,0"      Command="{Binding LPLoadCommand}"   CommandParameter="LP3"/>
-                        <Button IsEnabled="{Binding IsLP1UnloadEnable}" Content="Unload" Width="80" Height="25" Margin="10,0 " Command="{Binding LPUnLoadCommand}" CommandParameter="LP3"/>-->
-                        <Button IsEnabled="{Binding RtDataValues[LP3.IsLoaded]}" Content="Map" Width="80" Height="25" Margin="10,0 " Command="{Binding LPMapCommand}" CommandParameter="LP3"/>
-                    </StackPanel>
-                </Border>
-
-                <!--<Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Title}" Grid.Row="3" Padding="5,1,0,1">
-                    <TextBlock Text="Carrier ID" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="12" FontFamily="Arial" VerticalAlignment="Center"/>
-                </Border>
-                <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,0,1" Background="{DynamicResource Table_BG_Content}" Grid.Row="3" Grid.Column="1" Padding="5,1">
-                    <TextBlock Text="{Binding RtDataValues[LP3.CarrierId]}" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="12" FontFamily="Arial" HorizontalAlignment="Center" VerticalAlignment="Center"/>
-                </Border>
-                <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Content}" Grid.Row="3" Grid.Column="2" Padding="5,1">
-                    <StackPanel  Orientation="Horizontal" HorizontalAlignment="Left" >
-                        <Button IsEnabled="{Binding RtDataValues[LP3.CassettePlaced]}" Content="ReadID" Width="80" Height="25" Margin="10,0" Command="{Binding LPReadIDCommand}" CommandParameter="LP3"/>
-                        <Button IsEnabled="{Binding RtDataValues[LP3.CassettePlaced]}" Content="WriteID " Width="80" Height="25" Margin="10,0" Command="{Binding LP3WriteIDCommand}" CommandParameter="LP3"/>
-                        <TextBox IsEnabled="{Binding RtDataValues[LP3.CassettePlaced]}" Text="{Binding SetLP3IDValue, Mode=TwoWay}" Width="80" Height="25" VerticalContentAlignment="Center" HorizontalContentAlignment="Center"  FontSize="15"/>
-                    </StackPanel>
-                </Border>-->
-
-
-
-
-                <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Title}" Grid.Row="3" Padding="5,1,0,1">
-                    <TextBlock Text="Is Clamped" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="12" FontFamily="Arial" VerticalAlignment="Center" />
-                </Border>
-                <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,0,1" Background="{DynamicResource Table_BG_Content}" Grid.Row="3" Grid.Column="1" Padding="5,1,0,1">
-                    <!--<deviceControl:AITSensor Margin="5,0" GreenColor="True" LightOnValue="{Binding IsLP1Clamped}"></deviceControl:AITSensor>-->
-                    <TextBlock Text="{Binding RtDataValues[LP3.IsClamped]}" TextAlignment="Center"/>
-
-                </Border>
-                <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Content}" Grid.Row="3" Grid.Column="2" Padding="5,1">
-                    <StackPanel   Orientation="Horizontal"  >
-                        <!--<Button IsEnabled="{Binding IsLP1ClampEnable}" Margin="10,0"  Content="Clamp" Width="80" Height="25" Command="{Binding LPClampCommand}" CommandParameter="LP3"/>
-                        <Button IsEnabled="{Binding IsLP1UnclampEnable}" Margin="10,0" Content="Unclamp" Width="80" Height="25" Command="{Binding LPUnClampCommand}" CommandParameter="LP3"/>-->
-                    </StackPanel>
-                </Border>
-
-
-                <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Title}" Grid.Row="4" Padding="5,1,0,1">
-                    <TextBlock Text="Is Docked" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="12" FontFamily="Arial" VerticalAlignment="Center" />
-                </Border>
-                <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,0,1" Background="{DynamicResource Table_BG_Content}" Grid.Row="4" Grid.Column="1" Padding="5,1,0,1">
-                    <!--<deviceControl:AITSensor Margin="5,0" GreenColor="True" LightOnValue="{Binding IsLP1Docked}"></deviceControl:AITSensor>-->
-                    <TextBlock Text="{Binding RtDataValues[LP3.IsDocked]}" TextAlignment="Center"/>
-
-                </Border>
-                <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Content}" Grid.Row="4" Grid.Column="2" Padding="5,1">
-                    <StackPanel Orientation="Horizontal">
-                        <!--<Button IsEnabled="{Binding IsLP1DockEnable}" Margin="10,0"  Content="Dock" Width="80" Height="25" Command="{Binding LPDockCommand}" CommandParameter="LP3"/>
-                        <Button IsEnabled="{Binding IsLP1UndockEnable}" Margin="10,0" Content="Undock" Width="80" Height="25" Command="{Binding LPUnDockCommand}" CommandParameter="LP3"/>-->
-                    </StackPanel>
-                </Border>
-
-
-
-                <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Title}" Grid.Row="5" Padding="5,1,0,1">
-                    <TextBlock Text="Is Door Open" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="12" FontFamily="Arial" VerticalAlignment="Center" />
-                </Border>
-                <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,0,1" Background="{DynamicResource Table_BG_Content}" Grid.Row="5" Grid.Column="1" Padding="5,1,0,1">
-                    <TextBlock Text="{Binding RtDataValues[LP3.IsDoorOpened]}" TextAlignment="Center"/>
-                </Border>
-                <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Content}" Grid.Row="5" Grid.Column="2" Padding="5,1">
-                    <StackPanel Orientation="Horizontal">
-                        <!--<TextBox IsEnabled="{Binding RtDataValues[LP3.CassettePlaced]}" Margin="10,0" Text="{Binding SetLP3CycleValue, Mode=TwoWay}" Width="80" Height="25" VerticalContentAlignment="Center" HorizontalContentAlignment="Center"  FontSize="15"/>
-                        <Button IsEnabled="{Binding RtDataValues[LP3.CassettePlaced]}" Content="Cycle Load/Unload " Width="150" Height="25" Margin="10,0" Command="{Binding LP3CycleCommand}" CommandParameter="LP3"/>-->
-                    </StackPanel>
-                </Border>
-
-
-            </Grid>
-
         </StackPanel>
         </StackPanel>
 
 
 
 

+ 157 - 0
PunkHPX8_MainPages/Views/OperationOverViewNew.xaml

@@ -0,0 +1,157 @@
+<UserControl x:Class="PunkHPX8_MainPages.Views.OperationOverViewNew"
+             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
+             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
+             xmlns:local="clr-namespace:PunkHPX8_MainPages.Views"
+             mc:Ignorable="d" 
+             xmlns:ctrls="clr-namespace:PunkHPX8_Themes.UserControls;assembly=PunkHPX8_Themes"
+             xmlns:customControls="clr-namespace:PunkHPX8_Themes.CustomControls;assembly=PunkHPX8_Themes"
+             xmlns:Attach="clr-namespace:PunkHPX8_UI.Themes.Attach;assembly=PunkHPX8_Themes"
+             xmlns:converters="clr-namespace:PunkHPX8_Themes.Converters;assembly=PunkHPX8_Themes"
+             xmlns:converters2="clr-namespace:PunkHPX8_MainPages.Converters"
+             xmlns:userControls="clr-namespace:PunkHPX8_Themes.UserControls;assembly=PunkHPX8_Themes"
+             xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
+             xmlns:prism="http://prismlibrary.com/"
+             prism:ViewModelLocator.AutoWireViewModel="True"
+             xmlns:deviceControl="clr-namespace:Aitex.Core.UI.DeviceControl;assembly=MECF.Framework.UI.Core"
+            
+             xmlns:unity="clr-namespace:PunkHPX8_MainPages.Unity"
+             d:DesignHeight="800" d:DesignWidth="1800">
+    <!--<i:Interaction.Triggers>
+        <i:EventTrigger EventName="Loaded">
+            <i:InvokeCommandAction Command="{Binding LoadCommand}"/>
+        </i:EventTrigger>
+    </i:Interaction.Triggers>-->
+
+    <UserControl.Resources>
+        <converters:BoolToVisibility x:Key="boolToVisibility"/>
+        <converters:BoolToVisibility2 x:Key="boolToVisibility2"/>
+        <converters:BoolToVisibility3 x:Key="boolToVisibility3"/>
+        <converters:BoolToBool x:Key="BoolToBool"/>
+        <converters2:IsOnlineToOpacityConverter x:Key="IsOnlineToOpacityConverter"/>
+        <converters:BoolToColor  x:Key="boolToColor"/>
+        <converters:BoolToColor4 x:Key="boolToColor4"/>
+        <converters2:IntToPathDataConverter x:Key="IntToPathDataConverter"/>
+    </UserControl.Resources>
+
+    <Canvas>
+
+        <userControls:WaferStatus Canvas.Left="1721" Canvas.Top="15" HorizontalAlignment="Center" VerticalAlignment="Top"/>
+
+        <Border BorderThickness="0,0,0,1" BorderBrush="Black" Canvas.Top="20" Canvas.Left="40" Width="915">
+            <StackPanel Orientation="Horizontal" Margin="0,0,0,5">
+                <customControls:PathButton PathData="{StaticResource Icon_Init}"  DefaultFillBrush="White"  Command="{Binding HomeAllCommand}"  Width="120" Height="30" Content="Initialize"    Margin="10,0,0,0" IsEnabled="{Binding RtDataValues[System.IsAutoMode],Converter={StaticResource BoolToBool}}"/>
+
+                <RadioButton Content="Manual"   FontSize="15"   Width="120" Height="28" Margin="50 0 5 0" Style="{StaticResource Button_RadioButton}"  Command="{Binding EnableManualCommand}" IsChecked="{Binding RtDataValues[System.IsAutoMode],Converter={StaticResource BoolToBool}}"/>
+
+                <RadioButton Content="Auto"     FontSize="15"   Width="120" Height="28" Margin="0 0 0 0" Style="{StaticResource Button_RadioButton}"     Command="{Binding EnableAutoCommand}"  IsChecked="{Binding RtDataValues[System.IsAutoMode]}"/>
+                <customControls:PathButton PathData="{StaticResource Icon_Abort}"   DefaultFillBrush="White" Width="130" Height="30" Content="Abort"           Command="{Binding AbortAllCommand}"         Margin="50 0 0 0" />
+                <customControls:PathButton PathData="{Binding RtDataValues[EquipmentStatus],Converter={StaticResource IntToPathDataConverter}}"   DefaultFillBrush="White" Width="130" Height="30" Content="{Binding RouteState}"           Command="{Binding ResumeAllJobCommand}"            IsEnabled="{Binding RtDataValues[System.IsAutoMode]}" Margin="50 0 0 0" />
+
+
+            </StackPanel>
+        </Border>
+        <Canvas >
+            <userControls:CellChamber  Height="600" Width="1000" Canvas.Left="130" Canvas.Top="106"></userControls:CellChamber>
+        </Canvas>
+        <Canvas Canvas.Left="160" Canvas.Top="-165">
+            <TabPanel  Canvas.Left="1170"  Canvas.Top="140" Visibility="{Binding ElementName=CarrierRadioButton,Path=IsChecked,Converter={StaticResource boolToVisibility2}}">
+                <Border BorderBrush="Gray" BorderThickness="1" Width="310" Height="480">
+                    <StackPanel Orientation="Horizontal" >
+                        <StackPanel>
+                            <TextBox Background="{DynamicResource Table_BG_Title}"  Text="LP1" Width="150" Height="15" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" 
+                                     IsReadOnly="True" FontSize="10"/>
+                            <ctrls:FOUPFrontView UnitData="{Binding LP1ModuleInfo}"
+                                                     IsCassettePlaced="{Binding RtDataValues[LP1.CassettePlaced]}"
+                                                     ShowTitle="False" IsEnabled="{Binding RtDataValues[System.IsAutoMode],Converter={StaticResource BoolToBool}}" 
+                                                     Visibility="{Binding RtDataValues[LP1.CassettePlaced],Converter={StaticResource boolToVisibility2}}"/>
+
+                            <TextBlock  HorizontalAlignment="Center" Margin="0,5,0,0" FontSize="12" Visibility="{Binding RtDataValues[LP1.CassettePlaced],Converter={StaticResource boolToVisibility2}}">
+                                <TextBlock.Text>
+                                    <MultiBinding StringFormat="{}Wafer Count:{0}">
+                                        <Binding Path="LP1WaferCount"></Binding>
+                                    </MultiBinding>
+                                </TextBlock.Text>
+                            </TextBlock>
+
+                            <StackPanel Orientation="Horizontal" IsEnabled="{Binding IsLP1HasNoJob}" Visibility="{Binding RtDataValues[LP1.CassettePlaced],Converter={StaticResource boolToVisibility2}}">
+                                <customControls:PathButton Content="Map"   HorizontalAlignment="Center" Margin="25,5,0,5" Width="75" Height="30" Command="{Binding MapCommand}"   CommandParameter="LP1"   IsEnabled="{Binding IsLP1Unable,Converter={StaticResource BoolToBool}}"/>
+
+                            </StackPanel>
+
+
+                        </StackPanel>
+                        <StackPanel>
+                            <TextBox Background="{DynamicResource Table_BG_Title}" Text="LP2" Width="150" Height="15" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"
+                                     IsReadOnly="True" FontSize="10"/>
+                            <ctrls:FOUPFrontView UnitData="{Binding LP2ModuleInfo}" 
+                                                     IsCassettePlaced="{Binding RtDataValues[LP2.CassettePlaced]}"
+                                                     ShowTitle="False" IsEnabled="{Binding RtDataValues[System.IsAutoMode],Converter={StaticResource BoolToBool}}"
+                                                     Visibility="{Binding RtDataValues[LP2.CassettePlaced],Converter={StaticResource boolToVisibility2}}"/>
+                            <TextBlock  HorizontalAlignment="Center" Margin="0,5,0,0" FontSize="12" Visibility="{Binding RtDataValues[LP2.CassettePlaced],Converter={StaticResource boolToVisibility2}}">
+                                <TextBlock.Text>
+                                    <MultiBinding StringFormat="{}Wafer Count:{0}">
+                                        <Binding Path="LP2WaferCount"></Binding>
+                                    </MultiBinding>
+                                </TextBlock.Text>
+                            </TextBlock>
+                            <StackPanel Orientation="Horizontal" IsEnabled="{Binding IsLP2HasNoJob}" Visibility="{Binding RtDataValues[LP2.CassettePlaced],Converter={StaticResource boolToVisibility2}}">
+                                <customControls:PathButton Content="Map"   HorizontalAlignment="Center" Margin="25,5,0,5" Width="75" Height="30" Command="{Binding MapCommand}" CommandParameter="LP2"   
+                                                           IsEnabled="{Binding IsLP2Unable,Converter={StaticResource BoolToBool}}"/>
+
+                            </StackPanel>
+
+
+                        </StackPanel>
+                    </StackPanel>
+                </Border>
+            </TabPanel>
+        </Canvas>
+        <Canvas Canvas.Left="160" Canvas.Top="335">
+            <TabPanel  Canvas.Left="1170"  Canvas.Top="140" Visibility="{Binding ElementName=CarrierRadioButton,Path=IsChecked,Converter={StaticResource boolToVisibility2}}">
+                <Border BorderBrush="Gray" BorderThickness="1" Width="310" Height="280">
+                    <StackPanel Orientation="Horizontal" >
+                        <StackPanel >
+                            <TextBox Background="{DynamicResource Table_BG_Title}" Text="Dummy1" Width="130" Height="15" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"
+                         IsReadOnly="True" FontSize="10"/>
+                            <ctrls:FOUPFrontView UnitData="{Binding Dummy1ModuleInfo}" 
+                                         IsCassettePlaced="{Binding RtDataValues[Dummy1.CassettePlaced]}"
+                                         ShowTitle="False" IsEnabled="{Binding RtDataValues[System.IsAutoMode],Converter={StaticResource BoolToBool}}"
+                                         Visibility="{Binding RtDataValues[Dummy1.CassettePlaced],Converter={StaticResource boolToVisibility2}}"/>
+                            <TextBlock  HorizontalAlignment="Center" Margin="0,5,0,0" FontSize="12"
+                                Visibility="{Binding RtDataValues[Dummy1.CassettePlaced],Converter={StaticResource boolToVisibility2}}">
+                                <TextBlock.Text>
+                                    <MultiBinding StringFormat="{}Wafer Count:{0}">
+                                        <Binding Path="Dummy1WaferCount"></Binding>
+                                    </MultiBinding>
+                                </TextBlock.Text>
+                            </TextBlock>
+                            <TextBlock Text="{Binding RtDataValues[Dummy1.WaferSize], StringFormat=({0})}" HorizontalAlignment="Center" Margin="0,10,0,0" FontSize="12"
+                               Visibility="{Binding RtDataValues[Dummy1.CassettePlaced],Converter={StaticResource boolToVisibility2}}"/>
+                        </StackPanel>
+                        <StackPanel >
+                            <TextBox Background="{DynamicResource Table_BG_Title}" Text="Dummy2" Width="130" Height="15" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"
+                         IsReadOnly="True" FontSize="10"/>
+                            <ctrls:FOUPFrontView UnitData="{Binding Dummy2ModuleInfo}"
+                                         IsCassettePlaced="{Binding RtDataValues[Dummy2.CassettePlaced]}"
+                                         ShowTitle="False" IsEnabled="{Binding RtDataValues[System.IsAutoMode],Converter={StaticResource BoolToBool}}"
+                                         Visibility="{Binding RtDataValues[Dummy2.CassettePlaced],Converter={StaticResource boolToVisibility2}}"/>
+                            <TextBlock  HorizontalAlignment="Center" Margin="0,5,0,0" FontSize="12" Visibility="{Binding RtDataValues[Dummy2.CassettePlaced],Converter={StaticResource boolToVisibility2}}">
+                                <TextBlock.Text>
+                                    <MultiBinding StringFormat="{}Wafer Count:{0}">
+                                        <Binding Path="Dummy2WaferCount"></Binding>
+                                    </MultiBinding>
+                                </TextBlock.Text>
+                            </TextBlock>
+                            <TextBlock Text="{Binding RtDataValues[Dummy2.WaferSize], StringFormat=({0})}" HorizontalAlignment="Center" Margin="0,10,0,0" FontSize="12" Visibility="{Binding RtDataValues[Dummy2.CassettePlaced],Converter={StaticResource boolToVisibility2}}"/>
+                        </StackPanel>
+                    </StackPanel>
+                </Border>
+            </TabPanel>
+        </Canvas>
+        <!--<userControls:SRD CassetteName="SRD2" Canvas.Left="345" Canvas.Top="107" Width="100" Height="100" HorizontalAlignment="Center" VerticalAlignment="Top" RobotWafer="{Binding SRD2Wafer}" SRDVisibility="Visible"/>-->
+        <userControls:SRDFrontView UnitData1="{Binding SRD2ModuleInfo}" UnitData2="{Binding SRD1ModuleInfo}" Title="SRD"  Canvas.Top="71" Canvas.Left="1125"/>
+        <userControls:RobotFrontView Canvas.Left="1125" Canvas.Top="183" UnitData="{Binding EFEMModuleInfo}"/>
+    </Canvas>
+</UserControl>

+ 29 - 28
PunkHPX8_Themes/UserControls/test1.xaml.cs

@@ -1,28 +1,29 @@
-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.Data;
-using System.Windows.Documents;
-using System.Windows.Input;
-using System.Windows.Media;
-using System.Windows.Media.Imaging;
-using System.Windows.Navigation;
-using System.Windows.Shapes;
-
-namespace P300_Themes.UserControls
-{
-    /// <summary>
-    /// test1.xaml 的交互逻辑
-    /// </summary>
-    public partial class test1 : UserControl
-    {
-        public test1()
-        {
-            InitializeComponent();
-        }
-    }
-}
+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.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+using PunkHPX8_MainPages.Unity;
+
+namespace PunkHPX8_MainPages.Views
+{
+    /// <summary>
+    /// OperationOverViewNew.xaml 的交互逻辑
+    /// </summary>
+    public partial class OperationOverViewNew : UserControl
+    {
+        public OperationOverViewNew()
+        {
+            InitializeComponent();
+        }
+    }
+}

+ 1 - 1
PunkHPX8_RT/Config/Devices/Beckhoffcfg - plctask.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <?xml version="1.0" encoding="utf-8"?>
 <BeckhoffCfg>
 <BeckhoffCfg>
-	<Controller Name="MASTER" IPAddress="10.4.6.75.1.1" PortAddress="851">
+	<Controller Name="MASTER" IPAddress="192.168.0.200.1.1" PortAddress="851">
 
 
 		<!-- Need to have at least one input and one output before Axis stuff -->
 		<!-- Need to have at least one input and one output before Axis stuff -->
 
 

+ 0 - 12
PunkHPX8_RT/Config/Devices/ModuleIOCfg.xml

@@ -20,16 +20,6 @@
 		<IO Name="LP3.Cassete150Present" IOName="r_Cassette_3_150"/>
 		<IO Name="LP3.Cassete150Present" IOName="r_Cassette_3_150"/>
 		<IO Name="LP3.Cassete100Present" IOName="r_Cassette_3_100"/>
 		<IO Name="LP3.Cassete100Present" IOName="r_Cassette_3_100"/>
 	</Module>
 	</Module>
-	<Module Name="Dummy1">
-		<IO Name="Dummy1.Cassete200Present" IOName="r_Dummy_1_200"/>
-		<IO Name="Dummy1.Cassete150Present" IOName="r_Dummy_1_150"/>
-		<IO Name="Dummy1.Cassete100Present" IOName="r_Dummy_1_100"/>
-	</Module>
-	<Module Name="Dummy2">
-		<IO Name="Dummy2.Cassete200Present" IOName="r_Dummy_2_200"/>
-		<IO Name="Dummy2.Cassete150Present" IOName="r_Dummy_2_150"/>
-		<IO Name="Dummy2.Cassete100Present" IOName="r_Dummy_2_100"/>
-	</Module>
 	<Module Name="LightTower">
 	<Module Name="LightTower">
 		<IO Name="LightTower.Buzzer" IOName="c_System_Alarm"/>
 		<IO Name="LightTower.Buzzer" IOName="c_System_Alarm"/>
 		<IO Name="LightTower.RedLight" IOName="c_Pole_Red"/>
 		<IO Name="LightTower.RedLight" IOName="c_Pole_Red"/>
@@ -38,8 +28,6 @@
 		<IO Name="LightTower.BlueLight" IOName="c_Pole_Blue"/>
 		<IO Name="LightTower.BlueLight" IOName="c_Pole_Blue"/>
 	</Module>	
 	</Module>	
 	<Module Name="Facilities">
 	<Module Name="Facilities">
-
-	
 		<IO Name="Facilities.SampleFlow1Enable" IOName="c_SAMPLE_STATION_FLOW_1_ENABLE"/>
 		<IO Name="Facilities.SampleFlow1Enable" IOName="c_SAMPLE_STATION_FLOW_1_ENABLE"/>
 		<IO Name="Facilities.SampleFlow2Enable" IOName="c_SAMPLE_STATION_FLOW_2_ENABLE"/>
 		<IO Name="Facilities.SampleFlow2Enable" IOName="c_SAMPLE_STATION_FLOW_2_ENABLE"/>
 		<IO Name="Facilities.SampleFlow3Enable" IOName="c_SAMPLE_STATION_FLOW_3_ENABLE"/>
 		<IO Name="Facilities.SampleFlow3Enable" IOName="c_SAMPLE_STATION_FLOW_3_ENABLE"/>

+ 15 - 7
PunkHPX8_Themes/PunkHPX8_Themes.csproj

@@ -181,9 +181,6 @@
     <Compile Include="UserControls\CellStatusControl.xaml.cs">
     <Compile Include="UserControls\CellStatusControl.xaml.cs">
       <DependentUpon>CellStatusControl.xaml</DependentUpon>
       <DependentUpon>CellStatusControl.xaml</DependentUpon>
     </Compile>
     </Compile>
-    <Compile Include="UserControls\Chamber.xaml.cs">
-      <DependentUpon>Chamber.xaml</DependentUpon>
-    </Compile>
     <Compile Include="UserControls\Clamp.xaml.cs">
     <Compile Include="UserControls\Clamp.xaml.cs">
       <DependentUpon>Clamp.xaml</DependentUpon>
       <DependentUpon>Clamp.xaml</DependentUpon>
     </Compile>
     </Compile>
@@ -208,6 +205,9 @@
     <Compile Include="UserControls\DryerUIControl.xaml.cs">
     <Compile Include="UserControls\DryerUIControl.xaml.cs">
       <DependentUpon>DryerUIControl.xaml</DependentUpon>
       <DependentUpon>DryerUIControl.xaml</DependentUpon>
     </Compile>
     </Compile>
+    <Compile Include="UserControls\CellChamber.xaml.cs">
+      <DependentUpon>CellChamber.xaml</DependentUpon>
+    </Compile>
     <Compile Include="UserControls\EFEM.xaml.cs">
     <Compile Include="UserControls\EFEM.xaml.cs">
       <DependentUpon>EFEM.xaml</DependentUpon>
       <DependentUpon>EFEM.xaml</DependentUpon>
     </Compile>
     </Compile>
@@ -469,6 +469,9 @@
     <Compile Include="UserControls\PUFChamber.xaml.cs">
     <Compile Include="UserControls\PUFChamber.xaml.cs">
       <DependentUpon>PUFChamber.xaml</DependentUpon>
       <DependentUpon>PUFChamber.xaml</DependentUpon>
     </Compile>
     </Compile>
+    <Compile Include="UserControls\DualChamber.xaml.cs">
+      <DependentUpon>DualChamber.xaml</DependentUpon>
+    </Compile>
     <Compile Include="UserControls\Turbo.xaml.cs">
     <Compile Include="UserControls\Turbo.xaml.cs">
       <DependentUpon>Turbo.xaml</DependentUpon>
       <DependentUpon>Turbo.xaml</DependentUpon>
     </Compile>
     </Compile>
@@ -661,10 +664,6 @@
       <SubType>Designer</SubType>
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>
       <Generator>MSBuild:Compile</Generator>
     </Page>
     </Page>
-    <Page Include="UserControls\Chamber.xaml">
-      <SubType>Designer</SubType>
-      <Generator>MSBuild:Compile</Generator>
-    </Page>
     <Page Include="UserControls\Clamp.xaml">
     <Page Include="UserControls\Clamp.xaml">
       <SubType>Designer</SubType>
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>
       <Generator>MSBuild:Compile</Generator>
@@ -697,6 +696,10 @@
       <SubType>Designer</SubType>
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>
       <Generator>MSBuild:Compile</Generator>
     </Page>
     </Page>
+    <Page Include="UserControls\CellChamber.xaml">
+      <Generator>MSBuild:Compile</Generator>
+      <SubType>Designer</SubType>
+    </Page>
     <Page Include="UserControls\EFEM.xaml">
     <Page Include="UserControls\EFEM.xaml">
       <Generator>MSBuild:Compile</Generator>
       <Generator>MSBuild:Compile</Generator>
       <SubType>Designer</SubType>
       <SubType>Designer</SubType>
@@ -1037,6 +1040,10 @@
       <Generator>MSBuild:Compile</Generator>
       <Generator>MSBuild:Compile</Generator>
       <SubType>Designer</SubType>
       <SubType>Designer</SubType>
     </Page>
     </Page>
+    <Page Include="UserControls\DualChamber.xaml">
+      <Generator>MSBuild:Compile</Generator>
+      <SubType>Designer</SubType>
+    </Page>
     <Page Include="UserControls\Turbo.xaml">
     <Page Include="UserControls\Turbo.xaml">
       <SubType>Designer</SubType>
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>
       <Generator>MSBuild:Compile</Generator>
@@ -1189,6 +1196,7 @@
     <Content Include="Themes\Images\parts\doorclose.png" />
     <Content Include="Themes\Images\parts\doorclose.png" />
     <Content Include="Themes\Images\parts\dooropen.png" />
     <Content Include="Themes\Images\parts\dooropen.png" />
     <Content Include="Themes\Images\parts\doorunknown.png" />
     <Content Include="Themes\Images\parts\doorunknown.png" />
+    <Resource Include="Themes\Images\parts\DoubleChamber.png" />
     <Content Include="Themes\Images\parts\efem.png" />
     <Content Include="Themes\Images\parts\efem.png" />
     <Content Include="Themes\Images\parts\efemtrack.png" />
     <Content Include="Themes\Images\parts\efemtrack.png" />
     <Resource Include="Themes\Images\parts\Flipper.png" />
     <Resource Include="Themes\Images\parts\Flipper.png" />

BIN
PunkHPX8_Themes/Themes/Images/parts/DoubleChamber.png


+ 463 - 0
PunkHPX8_Themes/UserControls/CellChamber.xaml

@@ -0,0 +1,463 @@
+<UserControl x:Class="PunkHPX8_Themes.UserControls.CellChamber"
+             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
+             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
+             xmlns:local="clr-namespace:PunkHPX8_Themes.UserControls"
+             xmlns:converters="clr-namespace:PunkHPX8_Themes.Converters"
+             xmlns:ctrl="http://OpenSEMI.Ctrlib.com/presentation"
+             xmlns:customControls="clr-namespace:PunkHPX8_Themes.CustomControls"
+             mc:Ignorable="d" 
+             d:DesignHeight="1200" d:DesignWidth="2000" Name="efem">
+    <VisualStateManager.VisualStateGroups>
+        <VisualStateGroup Name="RobotTActions">
+            <VisualStateGroup.Transitions>
+                <VisualTransition To="Left">
+                    <Storyboard FillBehavior="HoldEnd">
+                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Y">
+                            <LinearDoubleKeyFrame Value="-100" KeyTime="0:0:0.5"/>
+                        </DoubleAnimationUsingKeyFrames>
+                    </Storyboard>
+                </VisualTransition>
+                <VisualTransition To="Right">
+                    <Storyboard FillBehavior="HoldEnd">
+                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Y">
+                            <LinearDoubleKeyFrame Value="510" KeyTime="0:0:0.5"/>
+                        </DoubleAnimationUsingKeyFrames>
+                    </Storyboard>
+                </VisualTransition>
+                <VisualTransition To="Middle">
+                    <Storyboard FillBehavior="HoldEnd">
+                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Y">
+                            <LinearDoubleKeyFrame Value="130" KeyTime="0:0:0.5"/>
+                        </DoubleAnimationUsingKeyFrames>
+                    </Storyboard>
+                </VisualTransition>
+                <VisualTransition To="Origin">
+                    <Storyboard FillBehavior="HoldEnd">
+                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Y">
+                            <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0.5"/>
+                        </DoubleAnimationUsingKeyFrames>
+                    </Storyboard>
+                </VisualTransition>
+                <VisualTransition To="VPW1">
+                    <Storyboard FillBehavior="HoldEnd">
+                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Y">
+                            <LinearDoubleKeyFrame Value="-100" KeyTime="0:0:0.5"/>
+                        </DoubleAnimationUsingKeyFrames>
+                    </Storyboard>
+                </VisualTransition>
+                <VisualTransition To="VPW2">
+                    <Storyboard FillBehavior="HoldEnd">
+                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Y">
+                            <LinearDoubleKeyFrame Value="130" KeyTime="0:0:0.5"/>
+                        </DoubleAnimationUsingKeyFrames>
+                    </Storyboard>
+                </VisualTransition>
+                <VisualTransition To="PlatingCell1">
+                    <Storyboard FillBehavior="HoldEnd">
+                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Y">
+                            <LinearDoubleKeyFrame Value="130" KeyTime="0:0:0.5"/>
+                        </DoubleAnimationUsingKeyFrames>
+                    </Storyboard>
+                </VisualTransition>
+                <VisualTransition To="Aligner">
+                    <Storyboard FillBehavior="HoldEnd">
+                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Y">
+                            <LinearDoubleKeyFrame Value="510" KeyTime="0:0:1"/>
+                        </DoubleAnimationUsingKeyFrames>
+                    </Storyboard>
+                </VisualTransition>
+                <VisualTransition To="SRD">
+                    <Storyboard FillBehavior="HoldEnd">
+                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Y">
+                            <LinearDoubleKeyFrame Value="60" KeyTime="0:0:0.5"/>
+                        </DoubleAnimationUsingKeyFrames>
+                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="X">
+                            <LinearDoubleKeyFrame Value="464" KeyTime="0:0:1"/>
+                        </DoubleAnimationUsingKeyFrames>
+                    </Storyboard>
+                </VisualTransition>
+                <VisualTransition To="Dummy">
+                    <Storyboard FillBehavior="HoldEnd">
+                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Y">
+                            <LinearDoubleKeyFrame Value="60" KeyTime="0:0:0.5"/>
+                        </DoubleAnimationUsingKeyFrames>
+                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="X">
+                            <LinearDoubleKeyFrame Value="-5" KeyTime="0:0:1"/>
+                        </DoubleAnimationUsingKeyFrames>
+                    </Storyboard>
+                </VisualTransition>
+
+                <VisualTransition To="Left_Place">
+                    <Storyboard FillBehavior="HoldEnd">
+                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Y">
+                            <LinearDoubleKeyFrame Value="-100" KeyTime="0:0:0.25"/>
+                        </DoubleAnimationUsingKeyFrames>
+                    </Storyboard>
+                </VisualTransition>
+                <VisualTransition To="Right_Place">
+                    <Storyboard FillBehavior="HoldEnd">
+                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Y">
+                            <LinearDoubleKeyFrame Value="510" KeyTime="0:0:0.25"/>
+                        </DoubleAnimationUsingKeyFrames>
+                    </Storyboard>
+                </VisualTransition>
+                <VisualTransition To="Middle_Place">
+                    <Storyboard FillBehavior="HoldEnd">
+                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Y">
+                            <LinearDoubleKeyFrame Value="130" KeyTime="0:0:0.25"/>
+                        </DoubleAnimationUsingKeyFrames>
+                    </Storyboard>
+                </VisualTransition>
+                <VisualTransition To="VPW1_Place">
+                    <Storyboard FillBehavior="HoldEnd">
+                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Y">
+                            <LinearDoubleKeyFrame Value="-100" KeyTime="0:0:0.25"/>
+                        </DoubleAnimationUsingKeyFrames>
+                    </Storyboard>
+                </VisualTransition>
+                <VisualTransition To="VPW2_Place">
+                    <Storyboard FillBehavior="HoldEnd">
+                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Y">
+                            <LinearDoubleKeyFrame Value="130" KeyTime="0:0:0.25"/>
+                        </DoubleAnimationUsingKeyFrames>
+                    </Storyboard>
+                </VisualTransition>
+                <VisualTransition To="PlatingCell1_Place">
+                    <Storyboard FillBehavior="HoldEnd">
+                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Y">
+                            <LinearDoubleKeyFrame Value="130" KeyTime="0:0:0.25"/>
+                        </DoubleAnimationUsingKeyFrames>
+                    </Storyboard>
+                </VisualTransition>
+                <VisualTransition To="Aligner_Place">
+                    <Storyboard FillBehavior="HoldEnd">
+                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Y">
+                            <LinearDoubleKeyFrame Value="510" KeyTime="0:0:0.5"/>
+                        </DoubleAnimationUsingKeyFrames>
+                    </Storyboard>
+                </VisualTransition>
+                <VisualTransition To="SRD_Place">
+                    <Storyboard FillBehavior="HoldEnd">
+                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Y">
+                            <LinearDoubleKeyFrame Value="60" KeyTime="0:0:0.25"/>
+                        </DoubleAnimationUsingKeyFrames>
+                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="X">
+                            <LinearDoubleKeyFrame Value="464" KeyTime="0:0:0.5"/>
+                        </DoubleAnimationUsingKeyFrames>
+                    </Storyboard>
+                </VisualTransition>
+                <VisualTransition To="Dummy_Place">
+                    <Storyboard FillBehavior="HoldEnd">
+                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Y">
+                            <LinearDoubleKeyFrame Value="60" KeyTime="0:0:0.25"/>
+                        </DoubleAnimationUsingKeyFrames>
+                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="X">
+                            <LinearDoubleKeyFrame Value="-5" KeyTime="0:0:5"/>
+                        </DoubleAnimationUsingKeyFrames>
+                    </Storyboard>
+                </VisualTransition>
+
+                <VisualTransition From="SRD_Place" To="Origin">
+                    <Storyboard FillBehavior="HoldEnd">
+                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Y">
+                            <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0.25"/>
+                        </DoubleAnimationUsingKeyFrames>
+                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="X">
+                            <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0.5"/>
+                        </DoubleAnimationUsingKeyFrames>
+                    </Storyboard>
+                </VisualTransition>
+                <VisualTransition From="Dummy_Place" To="Origin">
+                    <Storyboard FillBehavior="HoldEnd">
+                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Y">
+                            <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0.25"/>
+                        </DoubleAnimationUsingKeyFrames>
+                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="X">
+                            <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0.5"/>
+                        </DoubleAnimationUsingKeyFrames>
+                    </Storyboard>
+                </VisualTransition>
+                <VisualTransition From="Aligner_Place" To="Origin">
+                    <Storyboard FillBehavior="HoldEnd">
+                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Y">
+                            <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0.5"/>
+                        </DoubleAnimationUsingKeyFrames>
+                    </Storyboard>
+                </VisualTransition>
+                <VisualTransition From="Left_Place" To="Origin">
+                    <Storyboard FillBehavior="HoldEnd">
+                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Y">
+                            <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0.25"/>
+                        </DoubleAnimationUsingKeyFrames>
+                    </Storyboard>
+                </VisualTransition>
+                <VisualTransition From="Right_Place" To="Origin">
+                    <Storyboard FillBehavior="HoldEnd">
+                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Y">
+                            <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0.25" />
+                        </DoubleAnimationUsingKeyFrames>
+                    </Storyboard>
+                </VisualTransition>
+                <VisualTransition From="Middle_Place" To="Origin">
+                    <Storyboard FillBehavior="HoldEnd">
+                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Y">
+                            <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0.25"/>
+                        </DoubleAnimationUsingKeyFrames>
+                    </Storyboard>
+                </VisualTransition>
+            </VisualStateGroup.Transitions>
+
+            <VisualState Name="Left">
+                <Storyboard FillBehavior="HoldEnd">
+                    <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Y">
+                        <LinearDoubleKeyFrame Value="-100" KeyTime="0:0:0"/>
+                    </DoubleAnimationUsingKeyFrames>
+                </Storyboard>
+            </VisualState>
+            <VisualState Name="Right">
+                <Storyboard FillBehavior="HoldEnd">
+                    <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Y">
+                        <LinearDoubleKeyFrame Value="510" KeyTime="0:0:0"/>
+                    </DoubleAnimationUsingKeyFrames>
+                </Storyboard>
+            </VisualState>
+            <VisualState Name="Middle">
+                <Storyboard FillBehavior="HoldEnd">
+                    <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Y">
+                        <LinearDoubleKeyFrame Value="220" KeyTime="0:0:0"/>
+                    </DoubleAnimationUsingKeyFrames>
+                </Storyboard>
+            </VisualState>
+            <VisualState Name="Origin">
+                <Storyboard FillBehavior="HoldEnd">
+                    <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Y">
+                        <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
+                    </DoubleAnimationUsingKeyFrames>
+                </Storyboard>
+            </VisualState>
+            <VisualState Name="Aligner">
+                <Storyboard FillBehavior="HoldEnd">
+                    <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Y">
+                        <LinearDoubleKeyFrame Value="510" KeyTime="0:0:0"/>
+                    </DoubleAnimationUsingKeyFrames>
+                </Storyboard>
+            </VisualState>
+            <VisualState Name="SRD">
+                <Storyboard FillBehavior="HoldEnd">
+                    <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Y">
+                        <LinearDoubleKeyFrame Value="60" KeyTime="0:0:1"/>
+                    </DoubleAnimationUsingKeyFrames>
+                    <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="X">
+                        <LinearDoubleKeyFrame Value="464" KeyTime="0:0:2"/>
+                    </DoubleAnimationUsingKeyFrames>
+                </Storyboard>
+            </VisualState>
+            <VisualState Name="Dummy">
+                <Storyboard FillBehavior="HoldEnd">
+                    <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Y">
+                        <LinearDoubleKeyFrame Value="60" KeyTime="0:0:1"/>
+                    </DoubleAnimationUsingKeyFrames>
+                    <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="X">
+                        <LinearDoubleKeyFrame Value="-5" KeyTime="0:0:2"/>
+                    </DoubleAnimationUsingKeyFrames>
+                </Storyboard>
+            </VisualState>
+            <VisualState Name="Left_Place">
+                <Storyboard FillBehavior="HoldEnd">
+                    <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Y">
+                        <LinearDoubleKeyFrame Value="-100" KeyTime="0:0:0"/>
+                    </DoubleAnimationUsingKeyFrames>
+                </Storyboard>
+            </VisualState>
+            <VisualState Name="Right_Place">
+                <Storyboard FillBehavior="HoldEnd">
+                    <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Y">
+                        <LinearDoubleKeyFrame Value="510" KeyTime="0:0:0"/>
+                    </DoubleAnimationUsingKeyFrames>
+                </Storyboard>
+            </VisualState>
+            <VisualState Name="Middle_Place">
+                <Storyboard FillBehavior="HoldEnd">
+                    <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Y">
+                        <LinearDoubleKeyFrame Value="220" KeyTime="0:0:0"/>
+                    </DoubleAnimationUsingKeyFrames>
+                </Storyboard>
+            </VisualState>
+            <VisualState Name="Origin_Place">
+                <Storyboard FillBehavior="HoldEnd">
+                    <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Y">
+                        <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
+                    </DoubleAnimationUsingKeyFrames>
+                </Storyboard>
+            </VisualState>
+            <VisualState Name="Aligner_Place">
+                <Storyboard FillBehavior="HoldEnd">
+                    <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Y">
+                        <LinearDoubleKeyFrame Value="510" KeyTime="0:0:0"/>
+                    </DoubleAnimationUsingKeyFrames>
+                </Storyboard>
+            </VisualState>
+            <VisualState Name="SRD_Place">
+                <Storyboard FillBehavior="HoldEnd">
+                    <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Y">
+                        <LinearDoubleKeyFrame Value="60" KeyTime="0:0:1"/>
+                    </DoubleAnimationUsingKeyFrames>
+                    <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="X">
+                        <LinearDoubleKeyFrame Value="464" KeyTime="0:0:2"/>
+                    </DoubleAnimationUsingKeyFrames>
+                </Storyboard>
+            </VisualState>
+            <VisualState Name="Dummy_Place">
+                <Storyboard FillBehavior="HoldEnd">
+                    <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Y">
+                        <LinearDoubleKeyFrame Value="60" KeyTime="0:0:1"/>
+                    </DoubleAnimationUsingKeyFrames>
+                    <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="X">
+                        <LinearDoubleKeyFrame Value="-5" KeyTime="0:0:2"/>
+                    </DoubleAnimationUsingKeyFrames>
+                </Storyboard>
+            </VisualState>
+        </VisualStateGroup>
+
+    </VisualStateManager.VisualStateGroups>
+    <UserControl.Resources>
+        <converters:BoolToVisibility2 x:Key="BoolToVisibility2"/>
+        <Style x:Key="LP1Style">
+            <Style.Triggers>
+                <DataTrigger Binding="{Binding ElementName=efem,Path=LP1Loaded}" Value="True">
+                    <DataTrigger.EnterActions>
+                        <BeginStoryboard>
+                            <Storyboard>
+                                <DoubleAnimation  Storyboard.TargetProperty="RenderTransform.Children[0].X" To="30" Duration="0:0:1"/>
+                            </Storyboard>
+                        </BeginStoryboard>
+                    </DataTrigger.EnterActions>
+                    <DataTrigger.ExitActions>
+                        <BeginStoryboard>
+                            <Storyboard>
+                                <DoubleAnimation  Storyboard.TargetProperty="RenderTransform.Children[0].X" To="0" Duration="0:0:1"/>
+                            </Storyboard>
+                        </BeginStoryboard>
+                    </DataTrigger.ExitActions>
+                </DataTrigger>
+            </Style.Triggers>
+        </Style>
+        <Style x:Key="LP2Style">
+            <Style.Triggers>
+                <DataTrigger Binding="{Binding ElementName=efem,Path=LP2Loaded}" Value="True">
+                    <DataTrigger.EnterActions>
+                        <BeginStoryboard>
+                            <Storyboard>
+                                <DoubleAnimation  Storyboard.TargetProperty="RenderTransform.Children[0].X" To="30" Duration="0:0:1"/>
+                            </Storyboard>
+                        </BeginStoryboard>
+                    </DataTrigger.EnterActions>
+                    <DataTrigger.ExitActions>
+                        <BeginStoryboard>
+                            <Storyboard>
+                                <DoubleAnimation  Storyboard.TargetProperty="RenderTransform.Children[0].X" To="0" Duration="0:0:1"/>
+                            </Storyboard>
+                        </BeginStoryboard>
+                    </DataTrigger.ExitActions>
+                </DataTrigger>
+            </Style.Triggers>
+        </Style>
+        <Style x:Key="LP3Style">
+            <Style.Triggers>
+                <DataTrigger Binding="{Binding ElementName=efem,Path=LP3Loaded}" Value="True">
+                    <DataTrigger.EnterActions>
+                        <BeginStoryboard>
+                            <Storyboard>
+                                <DoubleAnimation  Storyboard.TargetProperty="RenderTransform.Children[0].X" To="30" Duration="0:0:1"/>
+                            </Storyboard>
+                        </BeginStoryboard>
+                    </DataTrigger.EnterActions>
+                    <DataTrigger.ExitActions>
+                        <BeginStoryboard>
+                            <Storyboard>
+                                <DoubleAnimation  Storyboard.TargetProperty="RenderTransform.Children[0].X" To="0" Duration="0:0:1"/>
+                            </Storyboard>
+                        </BeginStoryboard>
+                    </DataTrigger.ExitActions>
+                </DataTrigger>
+            </Style.Triggers>
+        </Style>
+    </UserControl.Resources>
+    <Viewbox>
+        <Canvas  Width="2000" Height="1200" >
+            <Polygon Points="300,950 300,250 1750,250 1750,950 300,950"  Stroke="Gray" StrokeThickness="20" >
+                <Polygon.Fill>
+                    <LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
+                        <GradientStop Color="Silver" Offset="0.0" />
+                        <GradientStop Color="White" Offset="0.5" />
+                        <GradientStop Color="Silver" Offset="1" />
+                    </LinearGradientBrush>
+                </Polygon.Fill>
+            </Polygon>
+            <Polygon Points="700,900 700,800 1500,800 1500,900 700,900"  Stroke="Gray" StrokeThickness="2" >
+                <Polygon.Fill>
+                    <LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
+                        <GradientStop Color="Silver" Offset="0.0" />
+                        <GradientStop Color="White" Offset="0.5" />
+                        <GradientStop Color="Silver" Offset="1" />
+                    </LinearGradientBrush>
+                </Polygon.Fill>
+            </Polygon>
+            <Polygon Points="900,945 900,900 950,900 950,945 900,945"  Fill="DarkGray" StrokeThickness="2" >
+            </Polygon>
+
+            <Polygon Points="1300,945 1300,900 1350,900 1350,945 1300,945" Fill="DarkGray" StrokeThickness="2" >
+            </Polygon>
+            <Canvas Width="300" Height="300" Canvas.Left="700" Canvas.Top="500">
+                <Rectangle Width="300" Height="300">
+                    <Rectangle.Fill>
+                        <LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
+                            <GradientStop Color="Silver" Offset="0.0" />
+                            <GradientStop Color="White" Offset="0.5" />
+                            <GradientStop Color="Silver" Offset="1" />
+                        </LinearGradientBrush>
+                    </Rectangle.Fill>
+                </Rectangle>
+            </Canvas>
+            <Canvas Width="500" Height="500" Canvas.Left="480" Canvas.Top="300"  RenderTransformOrigin="1 1">
+                <Canvas.RenderTransform>
+                    <TransformGroup>
+                        <TranslateTransform  x:Name="robotRotateAct"/>
+                    </TransformGroup>
+                </Canvas.RenderTransform>
+
+                <customControls:GuangChuanRobotControl  OriginT="T_Origin"  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}"/>
+            </Canvas>
+
+            <local:Loadport Canvas.Left="300" Canvas.Top="270" Width="300" Height="300" RotateTransformValue="90" HorizontalAlignment="Left" VerticalAlignment="Top"/>
+            <local:Loadport Canvas.Left="300" Canvas.Top="645" Width="300" Height="300" RotateTransformValue="90"/>
+
+            <local:Foup Width="230" Height="450" Canvas.Left="265"  Canvas.Top="303"   Visibility="{Binding ElementName=efem,Path=LP1Presented,Converter={StaticResource BoolToVisibility2}}" Style="{StaticResource LP1Style}" RotateTransformValue="90">
+                <local:Foup.RenderTransform>
+                    <TransformGroup>
+                        <TranslateTransform/>
+                    </TransformGroup>
+                </local:Foup.RenderTransform>
+            </local:Foup>
+            <local:Foup Width="230" Height="450" IsEnabled="False" Canvas.Left="265"  Canvas.Top="678"   Visibility="{Binding ElementName=efem,Path=LP2Presented,Converter={StaticResource BoolToVisibility2}}" Style="{StaticResource LP2Style}" RotateTransformValue="90">
+                <local:Foup.RenderTransform>
+                    <TransformGroup>
+                        <TranslateTransform/>
+                    </TransformGroup>
+                </local:Foup.RenderTransform>
+            </local:Foup>
+
+
+            <TextBox IsReadOnly="True" BorderThickness="0"  Text="LP1" Canvas.Left="-243"  Canvas.Top="378" FontSize="55" Width="280"  Height="84" Background="Transparent" HorizontalContentAlignment="Center" HorizontalAlignment="Left" VerticalAlignment="Top"/>
+            <TextBox IsReadOnly="True" BorderThickness="0"  Text="LP2" Canvas.Left="-243"  Canvas.Top="754" FontSize="55" Width="280"  Height="82" Background="Transparent"  HorizontalContentAlignment="Center" HorizontalAlignment="Left" VerticalAlignment="Top" RenderTransformOrigin="0.709,0.612"/>
+            <local:DualChamber Canvas.Left="1280" Canvas.Top="996" Width="400" RotateTransformValue="0" RobotWafer1="{Binding PlatingCell1Wafer}" RobotWafer2="{Binding PlatingCell2Wafer}" HorizontalAlignment="Center" VerticalAlignment="Top"></local:DualChamber>
+            <local:DualChamber Canvas.Left="1280" Canvas.Top="-45" Width="400" RotateTransformValue="180" RobotWafer1="{Binding PlatingCell3Wafer}" RobotWafer2="{Binding PlatingCell4Wafer}" HorizontalAlignment="Center" VerticalAlignment="Top"></local:DualChamber>
+            <local:DualChamber Canvas.Left="1712" Canvas.Top="445" Width="400" RotateTransformValue="270" RobotWafer1="{Binding VPW1Wafer}" RobotWafer2="{Binding VPW2Wafer}" HorizontalAlignment="Left" VerticalAlignment="Center"></local:DualChamber>
+            <local:DummyCassette Canvas.Left="380" Canvas.Top="965" RotateTransformValue="0" Width="225" Height="225" HorizontalAlignment="Left" VerticalAlignment="Top"/>
+            <local:SRD CassetteName="SRD" Canvas.Top="13" Width="225" Height="225" HorizontalAlignment="Center" VerticalAlignment="Top" SRD1Wafer="{Binding Srd1Wafer}" SRD2Wafer="{Binding Srd2Wafer}" SRDVisibility="Visible" Canvas.Left="450"/>
+
+        </Canvas>
+    </Viewbox>
+</UserControl>

+ 243 - 0
PunkHPX8_Themes/UserControls/CellChamber.xaml.cs

@@ -0,0 +1,243 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using OpenSEMI.ClientBase;
+using PunkHPX8_Themes.CustomControls;
+
+namespace PunkHPX8_Themes.UserControls
+{
+    /// <summary>
+    /// CellChamber.xaml 的交互逻辑
+    /// </summary>
+    public partial class CellChamber : UserControl
+    {
+        public enum RobotPosition
+        {
+            None,
+            Origin,
+            Right,
+            Left,
+            Middle,
+            Aligner,
+            SRD,
+            Dummy,
+            Right_Place,
+            Left_Place,
+            Middle_Place,
+            Aligner_Place,
+            SRD_Place,
+            Dummy_Place,
+            VPW1,
+            VPW2,
+            PlatingCell1,
+            PlatingCell2,
+            PlatingCell3,
+            PlatingCell4,
+            VPW1_Place,
+            VPW2_Place,
+            PlatingCell1_Place,
+            PlatingCell2_Place,
+            PlatingCell3_Place,
+            PlatingCell4_Place,
+        }
+        public CellChamber()
+        {
+            InitializeComponent();
+        }
+        public static readonly DependencyProperty RotateTransformValueProperty = DependencyProperty.Register(
+       "RotateTransformValue", typeof(int), typeof(CellChamber));
+
+        public int RotateTransformValue
+        {
+            get { return (int)this.GetValue(RotateTransformValueProperty); }
+            set { this.SetValue(RotateTransformValueProperty, value); }
+        }
+
+        public static readonly DependencyProperty AlignActionValueProperty = DependencyProperty.Register(
+       "AlignActionValue", typeof(int), typeof(CellChamber));
+
+        public int AlignActionValue
+        {
+            get { return (int)this.GetValue(AlignActionValueProperty); }
+            set { this.SetValue(AlignActionValueProperty, value); }
+        }
+
+        public static readonly DependencyProperty Aligner1WaferProperty = DependencyProperty.Register(
+            "Aligner1Wafer", typeof(WaferInfo), typeof(CellChamber));
+        public WaferInfo Aligner1Wafer
+        {
+            get => (WaferInfo)GetValue(Aligner1WaferProperty);
+            set => SetValue(Aligner1WaferProperty, value);
+        }
+        public static readonly DependencyProperty Srd1WaferProperty = DependencyProperty.Register(
+    "Srd1Wafer", typeof(WaferInfo), typeof(CellChamber));
+        public WaferInfo Srd1Wafer
+        {
+            get => (WaferInfo)GetValue(Srd1WaferProperty);
+            set => SetValue(Srd1WaferProperty, value);
+        }
+        public static readonly DependencyProperty Srd2WaferProperty = DependencyProperty.Register(
+    "Srd2Wafer", typeof(WaferInfo), typeof(CellChamber));
+        public WaferInfo Srd2Wafer
+        {
+            get => (WaferInfo)GetValue(Srd2WaferProperty);
+            set => SetValue(Srd2WaferProperty, value);
+        }
+        public static readonly DependencyProperty VPW1WaferProperty = DependencyProperty.Register(
+    "VPW1Wafer", typeof(WaferInfo), typeof(CellChamber));
+        public WaferInfo VPW1Wafer
+        {
+            get => (WaferInfo)GetValue(VPW1WaferProperty);
+            set => SetValue(VPW1WaferProperty, value);
+        }
+
+        public static readonly DependencyProperty VPW2WaferProperty = DependencyProperty.Register(
+    "VPW2Wafer", typeof(WaferInfo), typeof(CellChamber));
+        public WaferInfo VPW2Wafer
+        {
+            get => (WaferInfo)GetValue(VPW2WaferProperty);
+            set => SetValue(VPW2WaferProperty, value);
+        }
+
+        public static readonly DependencyProperty PlatingCell1WaferProperty = DependencyProperty.Register(
+   "PlatingCell1Wafer", typeof(WaferInfo), typeof(CellChamber));
+        public WaferInfo PlatingCell1Wafer
+        {
+            get => (WaferInfo)GetValue(PlatingCell1WaferProperty);
+            set => SetValue(PlatingCell1WaferProperty, value);
+        }
+
+        public static readonly DependencyProperty PlatingCell2WaferProperty = DependencyProperty.Register(
+  "PlatingCell2Wafer", typeof(WaferInfo), typeof(CellChamber));
+        public WaferInfo PlatingCell2Wafer
+        {
+            get => (WaferInfo)GetValue(PlatingCell2WaferProperty);
+            set => SetValue(PlatingCell2WaferProperty, value);
+        }
+
+        public static readonly DependencyProperty PlatingCell3WaferProperty = DependencyProperty.Register(
+  "PlatingCell3Wafer", typeof(WaferInfo), typeof(CellChamber));
+        public WaferInfo PlatingCell3Wafer
+        {
+            get => (WaferInfo)GetValue(PlatingCell3WaferProperty);
+            set => SetValue(PlatingCell3WaferProperty, value);
+        }
+
+        public static readonly DependencyProperty PlatingCell4WaferProperty = DependencyProperty.Register(
+  "PlatingCell4Wafer", typeof(WaferInfo), typeof(CellChamber));
+        public WaferInfo PlatingCell4Wafer
+        {
+            get => (WaferInfo)GetValue(PlatingCell4WaferProperty);
+            set => SetValue(PlatingCell4WaferProperty, value);
+        }
+
+
+
+        public static readonly DependencyProperty LP1PresentedProperty = DependencyProperty.Register(
+       "LP1Presented", typeof(bool), typeof(CellChamber),
+       new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender));
+        public bool LP1Presented
+        {
+            get { return (bool)this.GetValue(LP1PresentedProperty); }
+            set { this.SetValue(LP1PresentedProperty, value); }
+        }
+        public static readonly DependencyProperty LP2PresentedProperty = DependencyProperty.Register(
+      "LP2Presented", typeof(bool), typeof(CellChamber),
+      new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender));
+        public bool LP2Presented
+        {
+            get { return (bool)this.GetValue(LP2PresentedProperty); }
+            set { this.SetValue(LP2PresentedProperty, value); }
+        }
+
+        public static readonly DependencyProperty LP3PresentedProperty = DependencyProperty.Register(
+      "LP3Presented", typeof(bool), typeof(CellChamber),
+      new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender));
+        public bool LP3Presented
+        {
+            get { return (bool)this.GetValue(LP3PresentedProperty); }
+            set { this.SetValue(LP3PresentedProperty, value); }
+        }
+
+        public static readonly DependencyProperty LP1LoadedProperty = DependencyProperty.Register(
+        "LP1Loaded", typeof(bool), typeof(CellChamber),
+        new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender));
+        public bool LP1Loaded
+        {
+            get { return (bool)this.GetValue(LP1LoadedProperty); }
+            set { this.SetValue(LP1LoadedProperty, value); }
+        }
+        public static readonly DependencyProperty LP2LoadedProperty = DependencyProperty.Register(
+       "LP2Loaded", typeof(bool), typeof(CellChamber),
+       new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender));
+        public bool LP2Loaded
+        {
+            get { return (bool)this.GetValue(LP2LoadedProperty); }
+            set { this.SetValue(LP2LoadedProperty, value); }
+
+        }
+
+        public static readonly DependencyProperty LP3LoadedProperty = DependencyProperty.Register(
+       "LP3Loaded", typeof(bool), typeof(CellChamber),
+       new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender));
+        public bool LP3Loaded
+        {
+            get { return (bool)this.GetValue(LP3LoadedProperty); }
+            set { this.SetValue(LP3LoadedProperty, value); }
+        }
+
+        public static readonly DependencyProperty CurrentRobotPositionProperty = DependencyProperty.Register(
+      "CurrentRobotPosition", typeof(RobotPosition), typeof(CellChamber),
+      new PropertyMetadata(RobotPosition.Origin, PositionChangedCallback));
+        public RobotPosition CurrentRobotPosition
+        {
+            get { return (RobotPosition)this.GetValue(CurrentRobotPositionProperty); }
+            set 
+            {
+                this.SetValue(CurrentRobotPositionProperty, value);
+            }
+        }
+        private static void PositionChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e)
+        {
+            
+            var newAct = (RobotPosition)e.NewValue;
+            var control = d as CellChamber;
+            GoToPosition(control,newAct);
+        }
+        
+        public static readonly DependencyProperty RobotATActionProperty = DependencyProperty.Register(
+     "RobotATAction", typeof(WaferRobotTAction), typeof(CellChamber),
+     new FrameworkPropertyMetadata(WaferRobotTAction.T_Origin, FrameworkPropertyMetadataOptions.AffectsRender));
+        public WaferRobotTAction RobotATAction
+        {
+            get { return (WaferRobotTAction)this.GetValue(RobotATActionProperty); }
+            set { this.SetValue(RobotATActionProperty, value); }
+        }
+
+        public static readonly DependencyProperty RobotAXActionProperty = DependencyProperty.Register(
+     "RobotAXAction", typeof(WaferRobotXAction), typeof(CellChamber),
+     new FrameworkPropertyMetadata(WaferRobotXAction.X_Origin, FrameworkPropertyMetadataOptions.AffectsRender));
+        public WaferRobotXAction RobotAXAction
+        {
+            get { return (WaferRobotXAction)this.GetValue(RobotAXActionProperty); }
+            set { this.SetValue(RobotAXActionProperty, value); }
+        }
+
+
+        public static readonly DependencyProperty RobotAWaferInfoProperty = DependencyProperty.Register(
+    "RobotAWaferInfo", typeof(WaferInfo), typeof(CellChamber));
+        public WaferInfo RobotAWaferInfo
+        {
+            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);
+        }
+    }
+}

+ 0 - 337
PunkHPX8_Themes/UserControls/Chamber.xaml

@@ -1,337 +0,0 @@
-<UserControl x:Class="PunkHPX8_Themes.UserControls.Chamber"
-             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
-             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
-             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
-             xmlns:local="clr-namespace:PunkHPX8_Themes.UserControls"
-             mc:Ignorable="d" 
-             d:DesignHeight="300" d:DesignWidth="300" x:Name="chamber">
-    <UserControl.Resources>
-        <Storyboard x:Key="SlitValve_Open">
-            <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(FrameworkElement.Height)" >
-                <EasingDoubleKeyFrame KeyTime="0" Value="75"/>
-                <EasingDoubleKeyFrame KeyTime="0:0:1" Value="42"/>
-            </DoubleAnimationUsingKeyFrames>
-        </Storyboard>
-        <Storyboard x:Key="SlitValve_Close">
-            <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(FrameworkElement.Height)" >
-                <EasingDoubleKeyFrame KeyTime="0" Value="42"/>
-                <EasingDoubleKeyFrame KeyTime="0:0:1" Value="75"/>
-            </DoubleAnimationUsingKeyFrames>
-        </Storyboard>
-        <Style TargetType="{x:Type Rectangle}" x:Key="SlitValve_Animation" >
-            <Style.Triggers>
-                <DataTrigger Binding="{Binding ElementName=chamber,Path=IsOpenSlitDoor}" Value="true">
-                    <DataTrigger.EnterActions>
-                        <BeginStoryboard Storyboard="{StaticResource SlitValve_Open}"/>
-                    </DataTrigger.EnterActions>
-                    <DataTrigger.ExitActions>
-                        <BeginStoryboard Storyboard="{StaticResource SlitValve_Close}"/>
-                    </DataTrigger.ExitActions>
-                </DataTrigger>
-            </Style.Triggers>
-        </Style>
-        <LinearGradientBrush StartPoint="0,0.501" EndPoint="1,0.501" x:Key="rfcolor">
-            <LinearGradientBrush.GradientStops>
-                <GradientStop Color="#FFFFDD76" Offset="0" />
-                <GradientStop Color="sc#1, 0.8019137, 0.520800948, 0.106530145" Offset="0.25" />
-                <GradientStop Color="#FFCC9932" Offset="1" />
-            </LinearGradientBrush.GradientStops>
-        </LinearGradientBrush>
-    </UserControl.Resources>
-    <Canvas >
-
-        <Grid Width="240" Height="190" Canvas.Top="80">
-            <Grid.RowDefinitions>
-                <RowDefinition Height="160"/>
-                <RowDefinition />
-            </Grid.RowDefinitions>
-            <Path Data="M0.5,0.5 L33.5,0.5 33.5,17.5 206.5,17.5 206.5,0.5 239.5,0.5 239.5,149.5 0.5,149.5 z" Stroke="#FF747474" Margin="0,10,0,0">
-                <Path.Fill>
-                    <LinearGradientBrush EndPoint="1,1" StartPoint="0,0">
-                        <GradientStop Color="#FF8F8F8F" Offset="0"/>
-                        <GradientStop Color="#FF9B9B9B" Offset="1"/>
-                        <GradientStop Color="#FEF1ECEC" Offset="0.15"/>
-                        <GradientStop Color="#FEC0C0C0" Offset="0.38"/>
-                        <GradientStop Color="#FEB4B4B4" Offset="0.5"/>
-                        <GradientStop Color="#FEE5E5E5" Offset="0.7"/>
-                        <GradientStop Color="#FFBABABA" Offset="0.85"/>
-                        <GradientStop Color="#FFE5E5E5" Offset="0.9"/>
-                    </LinearGradientBrush>
-                </Path.Fill>
-            </Path>
-            <Rectangle Stroke="#FF747474" Margin="8,18">
-                <Rectangle.Fill>
-                    <LinearGradientBrush EndPoint="0.243,1" StartPoint="0.757,0">
-                        <GradientStop Color="#FFE0DEDE" Offset="0"/>
-                        <GradientStop Color="#FFE2E2E2" Offset="1"/>
-                        <GradientStop Color="#FEFFFFFF" Offset="0.55"/>
-                        <GradientStop Color="#FFEFEFEF" Offset="0.75"/>
-                    </LinearGradientBrush>
-                </Rectangle.Fill>
-            </Rectangle>
-            <Rectangle x:Name="BG_Status" Margin="9,19" Visibility="{Binding BiasRfPowerOnChamberVisibility}" Cursor="Hand">
-                <Rectangle.ContextMenu >
-                    <ContextMenu>
-                        <MenuItem Header="Create Wafer"  Click="CreateWafer_Click"     IsChecked="{Binding IsHasWafer}" IsEnabled="{Binding IsHasWafer,Converter={StaticResource BoolToBool}}"/>
-                        <MenuItem Header="Delete Wafer"  Click="DeleteWafer_Click"     IsChecked="{Binding IsHasWafer,Converter={StaticResource BoolToBool}}" IsEnabled="{Binding IsHasWafer}"/>
-                    </ContextMenu>
-                </Rectangle.ContextMenu>
-                <Rectangle.Style>
-                    <Style>
-                        <Setter Property="Rectangle.Fill" Value="WhiteSmoke"/>
-                        <Style.Triggers>
-                            <DataTrigger Binding="{Binding ElementName=chamber,Path=IsBRFOn}"  Value="True">
-                                <Setter Property="Rectangle.Fill" Value="#FFFF9292"/>
-                            </DataTrigger>
-                        </Style.Triggers>
-                    </Style>
-                </Rectangle.Style>
-            </Rectangle>
-            <Rectangle Stroke="#FF747474" Height="11" VerticalAlignment="Bottom" Margin="12,0,12,8">
-                <Rectangle.Fill>
-                    <LinearGradientBrush EndPoint="0.243,1" StartPoint="0.757,0">
-                        <GradientStop Color="#FFE0DEDE" Offset="0"/>
-                        <GradientStop Color="#FFE2E2E2" Offset="1"/>
-                        <GradientStop Color="#FEFFFFFF" Offset="0.55"/>
-                        <GradientStop Color="#FFEFEFEF" Offset="0.75"/>
-                    </LinearGradientBrush>
-                </Rectangle.Fill>
-            </Rectangle>
-            <Grid x:Name="Cover" Width="180" Height="18" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="30,2,0,0" RenderTransformOrigin="1,0.4444">
-                <Grid.RenderTransform>
-                    <TransformGroup>
-                        <ScaleTransform/>
-                        <SkewTransform/>
-                        <RotateTransform/>
-                        <TranslateTransform/>
-                    </TransformGroup>
-                </Grid.RenderTransform>
-                <Grid.Resources>
-                    <Storyboard x:Key="CoverOpen">
-                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)">
-                            <EasingDoubleKeyFrame KeyTime="0" Value="0"/>
-                            <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="20"/>
-                        </DoubleAnimationUsingKeyFrames>
-                    </Storyboard>
-                    <Storyboard x:Key="CoverClose">
-                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)">
-                            <EasingDoubleKeyFrame KeyTime="0" Value="20"/>
-                            <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="0"/>
-                        </DoubleAnimationUsingKeyFrames>
-                    </Storyboard>
-                </Grid.Resources>
-                <Grid.Style>
-                    <Style>
-                        <Style.Triggers>
-                            <DataTrigger Binding="{Binding ElementName=chamber,Path=IsLidOpen}" Value="true">
-                                <DataTrigger.EnterActions>
-                                    <BeginStoryboard Storyboard="{StaticResource CoverOpen}"/>
-                                </DataTrigger.EnterActions>
-                                <DataTrigger.ExitActions>
-                                    <BeginStoryboard Storyboard="{StaticResource CoverClose}"/>
-                                </DataTrigger.ExitActions>
-                            </DataTrigger>
-                        </Style.Triggers>
-                    </Style>
-                </Grid.Style>
-                <Rectangle Grid.Row="0" HorizontalAlignment="Center" VerticalAlignment="Bottom" Fill="{DynamicResource Lid_BG}" Stroke="{DynamicResource Lid_BD}" Width="172" Height="12"/>
-                <Rectangle Grid.Row="0" HorizontalAlignment="Center" VerticalAlignment="Top" Fill="{DynamicResource Lid_BG}" Stroke="{DynamicResource Lid_BD}" Width="180" Height="8"/>
-                <Line X1="35" Y1="-80" X2="120" Y2="-90" Stroke="#B87333" StrokeThickness="5"/>
-                <Line X1="35" Y1="-60" X2="145" Y2="-70" Stroke="#B87333" StrokeThickness="5"/>
-                <Line X1="35" Y1="-40" X2="145" Y2="-50" Stroke="#B87333" StrokeThickness="5"/>
-                <Line X1="35" Y1="-20" X2="145" Y2="-30" Stroke="#B87333" StrokeThickness="5"/>
-                <Rectangle  Stroke="DimGray" Fill="WhiteSmoke"  Margin="130,-101,42,0" Width="8" VerticalAlignment="Top" Height="102" />
-                <Rectangle  Stroke="DimGray" Fill="WhiteSmoke" Margin="42,-101,130,0" Width="8" VerticalAlignment="Top" Height="102" />
-                <Rectangle  Fill="DimGray" Margin="42,-108,42,0" VerticalAlignment="Top" Height="8" />
-                <Rectangle  Fill="White" Margin="50,-101,50,0" Width="80" Height="118" />
-                <Rectangle  x:Name="BG_Status1"  Margin="50,-101,50,0" Width="80" Height="118" Visibility="{Binding RfPowerOnChamberVisibility}" >
-                    <Rectangle.Style>
-                        <Style>
-                            <Setter Property="Rectangle.Fill" Value="WhiteSmoke"/>
-                            <Style.Triggers>
-                                <DataTrigger Binding="{Binding ElementName=chamber,Path=IsSRFOn}"  Value="True">
-                                    <Setter Property="Rectangle.Fill" Value="#FFFF9292"/>
-                                </DataTrigger>
-                            </Style.Triggers>
-                        </Style>
-                    </Rectangle.Style>
-                </Rectangle>
-                <Rectangle  Stroke="#FF000000" Width="80" Height="10" Margin="0,8,0,0" StrokeThickness="1" StrokeDashArray="4 2" SnapsToDevicePixels="True"/>
-                <Rectangle  Stroke="#FF000000" Width="80" Height="9" Margin="0,-10,0,0" StrokeThickness="1" StrokeDashArray="4 2" SnapsToDevicePixels="True"/>
-                <Line X1="35" Y1="-40" X2="145" Y2="-30" Stroke="#B87333" StrokeThickness="5"/>
-                <Line X1="35" Y1="-60" X2="145" Y2="-50" Stroke="#B87333" StrokeThickness="5"/>
-                <Line X1="35" Y1="-80" X2="145" Y2="-70" Stroke="#B87333" StrokeThickness="5"/>
-            </Grid>
-            <Grid Grid.RowSpan="2" Width="160" Height="167" VerticalAlignment="Bottom" Margin="0,0,0,2">
-                <Rectangle Height="12" Stroke="Gray" VerticalAlignment="Top" Width="150" Margin="0,98,0,0">
-                    <Rectangle.Fill>
-                        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
-                            <GradientStop Color="#FFABABAB" Offset="0"/>
-                            <GradientStop Color="#FFDADADA" Offset="1"/>
-                        </LinearGradientBrush>
-                    </Rectangle.Fill>
-                </Rectangle>
-                <Rectangle Height="12" Margin="0,109,0,0" Stroke="Gray" VerticalAlignment="Top" Width="160">
-                    <Rectangle.Fill>
-                        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
-                            <GradientStop Color="#FFABABAB" Offset="0"/>
-                            <GradientStop Color="#FFDADADA" Offset="1"/>
-                        </LinearGradientBrush>
-                    </Rectangle.Fill>
-                </Rectangle>
-
-                <!--4寸 guide pin-->
-                <Grid x:Name="Bottom_LiftPin" Height="75" VerticalAlignment="Bottom" Margin="0,0,0,0" >
-                    <Grid.Resources>
-                        <Storyboard x:Key="BottomPinUp">
-                            <ThicknessAnimationUsingKeyFrames Storyboard.TargetProperty="(FrameworkElement.Margin)" >
-                                <EasingThicknessKeyFrame KeyTime="0" Value="0,0,0,0"/>
-                                <EasingThicknessKeyFrame KeyTime="0:0:0.5" Value="0,0,0,15"/>
-                            </ThicknessAnimationUsingKeyFrames>
-                        </Storyboard>
-                        <Storyboard x:Key="BottomPinDown">
-                            <ThicknessAnimationUsingKeyFrames Storyboard.TargetProperty="(FrameworkElement.Margin)" >
-                                <EasingThicknessKeyFrame KeyTime="0" Value="0,0,0,15"/>
-                                <EasingThicknessKeyFrame KeyTime="0:0:0.5" Value="0,0,0,0"/>
-                            </ThicknessAnimationUsingKeyFrames>
-                        </Storyboard>
-                    </Grid.Resources>
-                    <Grid.Style>
-                        <Style>
-                            <Style.Triggers>
-                                <DataTrigger  Binding="{Binding IsLowerPinUp}" Value="true">
-                                    <DataTrigger.EnterActions>
-                                        <BeginStoryboard Storyboard="{StaticResource BottomPinUp}"/>
-                                    </DataTrigger.EnterActions>
-                                    <DataTrigger.ExitActions>
-                                        <BeginStoryboard Storyboard="{StaticResource BottomPinDown}"/>
-                                    </DataTrigger.ExitActions>
-                                </DataTrigger>
-                            </Style.Triggers>
-                        </Style>
-                    </Grid.Style>
-                    <!--<Rectangle HorizontalAlignment="Left" Fill="{DynamicResource Lid_BG1}" Stroke="{DynamicResource Lid_BD}" Width="8" Margin="10,6,0,4"/>-->
-                    <!--<Rectangle HorizontalAlignment="Right" Fill="{DynamicResource Lid_BG1}" Stroke="{DynamicResource Lid_BD}" Width="8" Margin="0,6,10,4"/>-->
-                    <!--<Rectangle Stroke="{DynamicResource Lid_BD}" Fill="{DynamicResource Lid_BG1}" StrokeThickness="1" VerticalAlignment="Bottom" Height="8" Margin="5,0"/>-->
-                </Grid>
-
-                <!--3寸 guide pin-->
-                <Grid x:Name="Middle_LiftPin" Width="120" Height="63" VerticalAlignment="Bottom" Margin="0,0,0,12" >
-                    <Grid.Resources>
-                        <Storyboard x:Key="MidPinUp">
-                            <ThicknessAnimationUsingKeyFrames Storyboard.TargetProperty="(FrameworkElement.Margin)" >
-                                <EasingThicknessKeyFrame KeyTime="0" Value="0,0,0,12"/>
-                                <EasingThicknessKeyFrame KeyTime="0:0:0.5" Value="0,0,0,27"/>
-                            </ThicknessAnimationUsingKeyFrames>
-                        </Storyboard>
-                        <Storyboard x:Key="MidPinDown">
-                            <ThicknessAnimationUsingKeyFrames Storyboard.TargetProperty="(FrameworkElement.Margin)" >
-                                <EasingThicknessKeyFrame KeyTime="0" Value="0,0,0,27"/>
-                                <EasingThicknessKeyFrame KeyTime="0:0:0.5" Value="0,0,0,12"/>
-                            </ThicknessAnimationUsingKeyFrames>
-                        </Storyboard>
-                    </Grid.Resources>
-                    <Grid.Style>
-                        <Style>
-                            <Style.Triggers>
-                                <DataTrigger Binding="{Binding IsUpperPinUp}" Value="true">
-                                    <DataTrigger.EnterActions>
-                                        <BeginStoryboard Storyboard="{StaticResource MidPinUp}"/>
-                                    </DataTrigger.EnterActions>
-                                    <DataTrigger.ExitActions>
-                                        <BeginStoryboard Storyboard="{StaticResource MidPinDown}"/>
-                                    </DataTrigger.ExitActions>
-                                </DataTrigger>
-                            </Style.Triggers>
-                        </Style>
-                    </Grid.Style>
-                    <!--<Rectangle HorizontalAlignment="Left" Fill="{DynamicResource Lid_BG2}" Stroke="{DynamicResource Lid_BD}" Width="8" Margin="10,6,0,4"/>
-                    <Rectangle HorizontalAlignment="Right" Fill="{DynamicResource Lid_BG2}" Stroke="{DynamicResource Lid_BD}" Width="8" Margin="0,6,10,4"/>-->
-                    <!--<Rectangle Stroke="{DynamicResource Lid_BD}" Fill="{DynamicResource Lid_BG2}" StrokeThickness="1" VerticalAlignment="Bottom" Height="8" Margin="5,0"/>-->
-
-
-                </Grid>
-
-                <!--lift pin-->
-                <Grid x:Name="Top_LiftPin" Height="51" VerticalAlignment="Bottom" Margin="0,0,0,28" >
-                    <Grid.Resources>
-                        <Storyboard x:Key="TopPinUp">
-                            <ThicknessAnimationUsingKeyFrames Storyboard.TargetProperty="(FrameworkElement.Margin)" >
-                                <EasingThicknessKeyFrame KeyTime="0" Value="0,0,0,28"/>
-                                <EasingThicknessKeyFrame KeyTime="0:0:0.5" Value="0,0,0,54"/>
-                            </ThicknessAnimationUsingKeyFrames>
-                        </Storyboard>
-                        <Storyboard x:Key="TopPinDown">
-                            <ThicknessAnimationUsingKeyFrames Storyboard.TargetProperty="(FrameworkElement.Margin)" >
-                                <EasingThicknessKeyFrame KeyTime="0" Value="0,0,0,54"/>
-                                <EasingThicknessKeyFrame KeyTime="0:0:0.5" Value="0,0,0,28"/>
-                            </ThicknessAnimationUsingKeyFrames>
-                        </Storyboard>
-                    </Grid.Resources>
-                    <Grid.Style>
-                        <Style>
-                            <Style.Triggers>
-                                <DataTrigger Binding="{Binding ElementName=chamber,Path=IsLiftPinUp}"  Value="true">
-                                    <DataTrigger.EnterActions>
-                                        <BeginStoryboard Storyboard="{StaticResource TopPinUp}"/>
-                                    </DataTrigger.EnterActions>
-                                    <DataTrigger.ExitActions>
-                                        <BeginStoryboard Storyboard="{StaticResource TopPinDown}"/>
-                                    </DataTrigger.ExitActions>
-                                </DataTrigger>
-                            </Style.Triggers>
-                        </Style>
-                    </Grid.Style>
-
-
-
-                    <Rectangle HorizontalAlignment="Left" Fill="{DynamicResource Lid_BG3}" Stroke="{DynamicResource Lid_BD}" Width="8" Margin="48,10,0,4"/>
-                    <Rectangle HorizontalAlignment="Right" Fill="{DynamicResource Lid_BG3}" Stroke="{DynamicResource Lid_BD}" Width="8" Margin="0,10,48,4"/>
-                    <Rectangle Stroke="{DynamicResource Lid_BD}" Fill="{DynamicResource Lid_BG3}" StrokeThickness="1" VerticalAlignment="Bottom" Height="8" Margin="5,0" Width="64" />
-                    <Rectangle  HorizontalAlignment="Center" Margin="-100,0"  Width="{Binding WaferLength}" Height="10" VerticalAlignment="Top"/>
-                    <TextBlock Text="{Binding  ElementName=chamber,Path=WaferID}" Margin="0,-20,0,0" TextAlignment="Center"></TextBlock>
-
-                    <Border BorderThickness="1" BorderBrush="DarkGray" CornerRadius="4" VerticalAlignment="Top"  Height="10" Margin="0,0,0,0" Width="140" Visibility="{Binding ElementName=chamber,Path=IsHasWafer,Converter={StaticResource bool2VisibilityConverter}}">
-                        <Border.Background>
-                            <RadialGradientBrush >
-                                <GradientStop Color="AliceBlue" Offset="0" />
-                                <!--<GradientStop Color="Silver" Offset="0.5" />-->
-                                <GradientStop Color="LightGreen" Offset="1" />
-
-                            </RadialGradientBrush>
-                        </Border.Background>
-                    </Border>
-
-                </Grid>
-
-                <Canvas Visibility="{Binding ElementName=chamber,Path=IsHasHeater,Converter={StaticResource bool2VisibilityConverter}}" Margin="29.5,100,0,0">
-                    <Rectangle HorizontalAlignment="Left" Fill="{DynamicResource Lid_BG3}" Stroke="Black" Width="100" Height="10"/>
-                    <Rectangle HorizontalAlignment="Left" Fill="{DynamicResource Lid_BG3}" Stroke="Black" Width="100" Height="10"  Canvas.Top="10"/>
-                    <Rectangle HorizontalAlignment="Left" Fill="{DynamicResource Lid_BG3}" Stroke="Black" Width="30"  Height="30"  Canvas.Top="20" Canvas.Left="36"/>
-                </Canvas>
-
-                <!--左边slit door-->
-                <Grid x:Name="Slit_valve" Margin="-41,-10,191,29" >
-                    <Rectangle x:Name="SlitValve_Top"  Fill="DimGray" Width="8" VerticalAlignment="Top" Height="75"   />
-                    <Rectangle x:Name="SlitValve_Bottom"  Fill="DimGray" Width="8" VerticalAlignment="Bottom" Height="75" />
-                </Grid>
-
-                <!--slit door右边-->
-                <Grid Margin="190,-10,-40,29" Cursor="Hand">
-                    <Grid.ContextMenu>
-                        <ContextMenu >
-                            <MenuItem Header="Open Door"   Click="OpenDoor_Click"  IsChecked="{Binding IsSlitDoorClosed,Converter={StaticResource BoolToBool}}"                                        IsEnabled="{Binding IsSlitDoorClosed}"/>
-                            <MenuItem Header="Close Door"  Click="CloseDoor_Click"  IsChecked="{Binding IsSlitDoorClosed}"  IsEnabled="{Binding IsSlitDoorClosed,Converter={StaticResource BoolToBool}}"/>
-                        </ContextMenu>
-                    </Grid.ContextMenu>
-                    <Rectangle  Fill="DimGray" Style="{StaticResource SlitValve_Animation}" Width="8" VerticalAlignment="Top" Height="75" />
-                    <Rectangle  Fill="DimGray" Style="{StaticResource SlitValve_Animation}" Width="8" VerticalAlignment="Bottom" Height="75" />
-                </Grid>
-            </Grid>
-        </Grid>
-
-    </Canvas>
-
-
-</UserControl>

+ 0 - 134
PunkHPX8_Themes/UserControls/Chamber.xaml.cs

@@ -1,134 +0,0 @@
-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.Data;
-using System.Windows.Documents;
-using System.Windows.Input;
-using System.Windows.Media;
-using System.Windows.Media.Imaging;
-using System.Windows.Navigation;
-using System.Windows.Shapes;
-using PunkHPX8_Themes.Unity;
-
-namespace PunkHPX8_Themes.UserControls
-{
-    /// <summary>
-    /// Chamber.xaml 的交互逻辑
-    /// </summary>
-    public partial class Chamber : UserControl
-    {
-        public Chamber()
-        {
-            InitializeComponent();
-        }
-        public static readonly DependencyProperty IsOpenSlitDoorProperty = DependencyProperty.Register(
-           "IsOpenSlitDoor", typeof(bool), typeof(Chamber),
-           new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender));
-
-
-        public bool IsOpenSlitDoor
-        {
-            get { return (bool)this.GetValue(IsOpenSlitDoorProperty); }
-            set { this.SetValue(IsOpenSlitDoorProperty, value); }
-        }
-
-        public static readonly DependencyProperty IsLiftPinUpProperty = DependencyProperty.Register(
-           "IsLiftPinUp", typeof(bool), typeof(Chamber),
-           new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender));
-        public bool IsLiftPinUp
-        {
-            get { return (bool)this.GetValue(IsLiftPinUpProperty); }
-            set { this.SetValue(IsLiftPinUpProperty, value); }
-        }
-
-
-        public static readonly DependencyProperty IsHasWaferProperty = DependencyProperty.Register(
-          "IsHasWafer", typeof(bool), typeof(Chamber),
-          new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender));
-        public bool IsHasWafer
-        {
-            get { return (bool)this.GetValue(IsHasWaferProperty); }
-            set { this.SetValue(IsHasWaferProperty, value); }
-        }
-
-
-        public static readonly DependencyProperty IsLidOpenProperty = DependencyProperty.Register(
-         "IsLidOpen", typeof(bool), typeof(Chamber),
-         new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender));
-        public bool IsLidOpen
-        {
-            get { return (bool)this.GetValue(IsLidOpenProperty); }
-            set { this.SetValue(IsLidOpenProperty, value); }
-        }
-
-        public static readonly DependencyProperty IsSRFOnProperty = DependencyProperty.Register(
-        "IsSRFOn", typeof(bool), typeof(Chamber),
-        new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender));
-        public bool IsSRFOn
-        {
-            get { return (bool)this.GetValue(IsSRFOnProperty); }
-            set { this.SetValue(IsSRFOnProperty, value); }
-        }
-
-        public static readonly DependencyProperty IsBRFOnProperty = DependencyProperty.Register(
-       "IsBRFOn", typeof(bool), typeof(Chamber),
-       new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender));
-        public bool IsBRFOn
-        {
-            get { return (bool)this.GetValue(IsBRFOnProperty); }
-            set { this.SetValue(IsBRFOnProperty, value); }
-        }
-
-        public static readonly DependencyProperty WaferIDProperty = DependencyProperty.Register(
-          "WaferID", typeof(string), typeof(Chamber));
-
-        public string WaferID
-        {
-            get { return (string)this.GetValue(WaferIDProperty); }
-            set { this.SetValue(WaferIDProperty, value); }
-        }
-        public static readonly DependencyProperty ModuleNameProperty = DependencyProperty.Register(
-      "ModuleName", typeof(string), typeof(Chamber));
-
-        public string ModuleName
-        {
-            get { return (string)this.GetValue(ModuleNameProperty); }
-            set
-            {
-                this.SetValue(ModuleNameProperty, value);
-            }
-        }
-        public static readonly DependencyProperty IsHasHeaterProperty = DependencyProperty.Register(
-         "IsHasHeater", typeof(bool), typeof(Chamber),
-         new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender));
-        public bool IsHasHeater
-        {
-            get { return (bool)this.GetValue(IsHasHeaterProperty); }
-            set { this.SetValue(IsHasHeaterProperty, value); }
-        }
-        private void CreateWafer_Click(object sender, RoutedEventArgs e)
-        {
-            UIEvents.OnChamberCreateDeleteWafer(new WaferOperation() { ModuleName = ModuleName, IsCreate = true });
-        }
-
-        private void DeleteWafer_Click(object sender, RoutedEventArgs e)
-        {
-            UIEvents.OnChamberCreateDeleteWafer(new WaferOperation() { ModuleName = ModuleName, IsCreate = false });
-
-        }
-        private void OpenDoor_Click(object sender, RoutedEventArgs e)
-        {
-            //var t = ((((this.Parent as Canvas).Parent as Canvas).Parent as UserControl).DataContext).;
-            UIEvents.OnPMDoorRaiseChanged(new DoorPara() { ModuleName = ModuleName, IsOpen = "Open" });
-        }
-
-        private void CloseDoor_Click(object sender, RoutedEventArgs e)
-        {
-            UIEvents.OnPMDoorRaiseChanged(new DoorPara() { ModuleName = ModuleName, IsOpen = "Close" });
-        }
-    }
-}

+ 99 - 0
PunkHPX8_Themes/UserControls/DualChamber.xaml

@@ -0,0 +1,99 @@
+<UserControl x:Class="PunkHPX8_Themes.UserControls.DualChamber"
+             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
+             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
+             xmlns:local="clr-namespace:PunkHPX8_Themes.UserControls"
+             xmlns:ctrl="http://OpenSEMI.Ctrlib.com/presentation"
+             mc:Ignorable="d" 
+             d:DesignHeight="450" d:DesignWidth="800" Name="dualChamber">
+    <Viewbox Stretch="Fill" RenderTransformOrigin="0.5 0.5">
+        <Viewbox.RenderTransform>
+            <TransformGroup>
+                <RotateTransform Angle="{Binding ElementName=dualChamber,Path=RotateTransformValue}"/>
+            </TransformGroup>
+        </Viewbox.RenderTransform>
+        <Border>
+
+            <Canvas Width="320" Height="200">
+                <Border  Canvas.Top="-70" Canvas.Left="12" HorizontalAlignment="Left" Width="320" VerticalAlignment="Center">
+                    <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
+                        <TextBlock  FontSize="30" Text="{Binding ElementName=dualChamber,Path=ModuleName}"/>
+
+                    </StackPanel>
+                </Border>
+                <Image Width="325" Canvas.Left="9" Canvas.Top="-35" Source="pack://application:,,,/PunkHPX8_Themes;component/Themes/Images/parts/DoubleChamber.png" RenderTransformOrigin="0.5,0.5" HorizontalAlignment="Left" VerticalAlignment="Center">
+                    <Image.RenderTransform>
+                        <TransformGroup>
+                            <ScaleTransform/>
+                            <SkewTransform/>
+                            <RotateTransform Angle="180"/>
+                            <TranslateTransform/>
+                        </TransformGroup>
+                    </Image.RenderTransform>
+                </Image>
+                <Viewbox Stretch="Uniform" Width="200" Height="200" Canvas.Top="-15"  HorizontalAlignment="Left" VerticalAlignment="Center" Canvas.Left="18">
+                    <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">
+                            <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">
+                                        <RadialGradientBrush.GradientStops>
+                                            <GradientStop Color="#FFE5E2DF" Offset="0" />
+                                            <GradientStop Color="#FFFFFFFF" Offset="0" />
+                                            <GradientStop Color="#FFADAEB0" Offset="0.52" />
+                                            <GradientStop Color="sc#1, 0.238698155, 0.250727534, 0.259264916" Offset="0.82" />
+                                            <GradientStop Color="#FF454F52" Offset="1" />
+                                        </RadialGradientBrush.GradientStops>
+                                    </RadialGradientBrush>
+                                </Path.Fill>
+                            </Path>
+                            <Path Data="M46.8477,55.6938C52.0087,55.6938 56.1937,59.8788 56.1937,65.0398 56.1937,70.2008 52.0087,74.3858 46.8477,74.3858 41.6857,74.3858 37.5007,70.2008 37.5007,65.0398 37.5007,59.8788 41.6857,55.6938 46.8477,55.6938z" Stretch="Fill" Stroke="White" StrokeThickness="0.25" Width="18.943" Height="18.942" Canvas.Left="26.903" Canvas.Top="26.788" />
+                        </Canvas>
+                        <Canvas Name="Group_Center" Tag="#00000000,#FF008000,Original,0,None" Width="5.857" Height="5.855" Canvas.Left="43.919" Canvas.Top="62.113">
+                            <Path Data="M46.8477,62.1133C48.4637,62.1133 49.7757,63.4243 49.7757,65.0413 49.7757,66.6583 48.4637,67.9683 46.8477,67.9683 45.2307,67.9683 43.9187,66.6583 43.9187,65.0413 43.9187,63.4243 45.2307,62.1133 46.8477,62.1133z" Stretch="Fill" Fill="LightBlue" Stroke="#FF4C4C4C" StrokeThickness="0.25" Width="6.107" Height="6.105" Canvas.Left="-0.125" Canvas.Top="-0.125" />
+                        </Canvas>
+                        <Canvas Name="Group_Ring" Tag="#00000000,#FF008000,Original,0,None" Width="56.555" Height="56.556" Canvas.Left="18.57" Canvas.Top="36.762">
+                            <Path Data="M46.8477,46.3472C57.1717,46.3472 65.5407,54.7172 65.5407,65.0412 65.5407,75.3652 57.1717,83.7342 46.8477,83.7342 36.5227,83.7342 28.1537,75.3652 28.1537,65.0412 28.1537,54.7172 36.5227,46.3472 46.8477,46.3472z" Stretch="Fill" Stroke="White" StrokeThickness="0.25" Width="37.637" Height="37.637" Canvas.Left="9.459" Canvas.Top="9.46" />
+                            <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>
+                    </Canvas>
+                </Viewbox>
+                <Viewbox Stretch="Uniform" Width="200" Height="200" Canvas.Top="-15" Canvas.Left="156" HorizontalAlignment="Left" VerticalAlignment="Center">
+                    <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">
+                            <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">
+                                        <RadialGradientBrush.GradientStops>
+                                            <GradientStop Color="#FFE5E2DF" Offset="0" />
+                                            <GradientStop Color="#FFFFFFFF" Offset="0" />
+                                            <GradientStop Color="#FFADAEB0" Offset="0.52" />
+                                            <GradientStop Color="sc#1, 0.238698155, 0.250727534, 0.259264916" Offset="0.82" />
+                                            <GradientStop Color="#FF454F52" Offset="1" />
+                                        </RadialGradientBrush.GradientStops>
+                                    </RadialGradientBrush>
+                                </Path.Fill>
+                            </Path>
+                            <Path Data="M46.8477,55.6938C52.0087,55.6938 56.1937,59.8788 56.1937,65.0398 56.1937,70.2008 52.0087,74.3858 46.8477,74.3858 41.6857,74.3858 37.5007,70.2008 37.5007,65.0398 37.5007,59.8788 41.6857,55.6938 46.8477,55.6938z" Stretch="Fill" Stroke="White" StrokeThickness="0.25" Width="18.943" Height="18.942" Canvas.Left="26.903" Canvas.Top="26.788" />
+                        </Canvas>
+                        <Canvas Name="Group_CenterRight" Tag="#00000000,#FF008000,Original,0,None" Width="5.857" Height="5.855" Canvas.Left="43.919" Canvas.Top="62.113">
+                            <Path Data="M46.8477,62.1133C48.4637,62.1133 49.7757,63.4243 49.7757,65.0413 49.7757,66.6583 48.4637,67.9683 46.8477,67.9683 45.2307,67.9683 43.9187,66.6583 43.9187,65.0413 43.9187,63.4243 45.2307,62.1133 46.8477,62.1133z" Stretch="Fill" Fill="LightBlue" Stroke="#FF4C4C4C" StrokeThickness="0.25" Width="6.107" Height="6.105" Canvas.Left="-0.125" Canvas.Top="-0.125" />
+                        </Canvas>
+                        <Canvas Name="Group_RingRight" Tag="#00000000,#FF008000,Original,0,None" Width="56.555" Height="56.556" Canvas.Left="18.57" Canvas.Top="36.762">
+                            <Path Data="M46.8477,46.3472C57.1717,46.3472 65.5407,54.7172 65.5407,65.0412 65.5407,75.3652 57.1717,83.7342 46.8477,83.7342 36.5227,83.7342 28.1537,75.3652 28.1537,65.0412 28.1537,54.7172 36.5227,46.3472 46.8477,46.3472z" Stretch="Fill" Stroke="White" StrokeThickness="0.25" Width="37.637" Height="37.637" Canvas.Left="9.459" Canvas.Top="9.46" />
+                            <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>
+                    </Canvas>
+                </Viewbox>
+                <Viewbox Width="126" Height="126"  Canvas.Left="39" Canvas.Top="38">
+                    <local:WaferCtrl WaferData="{Binding ElementName=dualChamber, Path=RobotWafer1}"/>
+                </Viewbox>
+                <Viewbox Width="126" Height="126"  Canvas.Left="174" Canvas.Top="38">
+                    <local:WaferCtrl WaferData="{Binding ElementName=dualChamber, Path=RobotWafer2}"/>
+                </Viewbox>
+            </Canvas>
+
+        </Border>
+    </Viewbox>
+</UserControl>

+ 54 - 0
PunkHPX8_Themes/UserControls/DualChamber.xaml.cs

@@ -0,0 +1,54 @@
+using OpenSEMI.ClientBase;
+using System;
+using System.Collections.Generic;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Media.Animation;
+using System.Windows.Shapes;
+
+namespace PunkHPX8_Themes.UserControls
+{
+    /// <summary>
+    /// DualChamber.xaml 的交互逻辑
+    /// </summary>
+    public partial class DualChamber : UserControl
+    {
+        public DualChamber()
+        {
+            InitializeComponent();
+        }
+        public static readonly DependencyProperty RotateTransformValueProperty = DependencyProperty.Register(
+        "RotateTransformValue", typeof(int), typeof(DualChamber));
+
+        public int RotateTransformValue
+        {
+            get { return (int)GetValue(RotateTransformValueProperty); }
+            set { SetValue(RotateTransformValueProperty, value); }
+        }
+        public static readonly DependencyProperty RobotWafer1Property = DependencyProperty.Register(
+        "RobotWafer1", typeof(WaferInfo), typeof(DualChamber));
+        public WaferInfo RobotWafer1
+        {
+            get => (WaferInfo)GetValue(RobotWafer1Property);
+            set => SetValue(RobotWafer1Property, value);
+        }
+        public static readonly DependencyProperty RobotWafer2Property = DependencyProperty.Register(
+        "RobotWafer2", typeof(WaferInfo), typeof(DualChamber));
+        public WaferInfo RobotWafer2
+        {
+            get => (WaferInfo)GetValue(RobotWafer2Property);
+            set => SetValue(RobotWafer2Property, value);
+        }
+
+        public static readonly DependencyProperty ModuleNameProperty = DependencyProperty.Register(
+       "ModuleName", typeof(string), typeof(DualChamber));
+        public string ModuleName
+        {
+            get { return (string)GetValue(ModuleNameProperty); }
+            set
+            {
+                SetValue(ModuleNameProperty, value);
+            }
+        }
+    }
+}

+ 4 - 5
PunkHPX8_Themes/UserControls/EFEM.xaml

@@ -158,7 +158,7 @@
                         </DoubleAnimationUsingKeyFrames>
                         </DoubleAnimationUsingKeyFrames>
                     </Storyboard>
                     </Storyboard>
                 </VisualTransition>
                 </VisualTransition>
-                
+
                 <VisualTransition From="SRD_Place" To="Origin">
                 <VisualTransition From="SRD_Place" To="Origin">
                     <Storyboard FillBehavior="HoldEnd">
                     <Storyboard FillBehavior="HoldEnd">
                         <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Y">
                         <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Y">
@@ -385,7 +385,7 @@
             </Style.Triggers>
             </Style.Triggers>
         </Style>
         </Style>
 
 
-       
+
 
 
     </UserControl.Resources>
     </UserControl.Resources>
 
 
@@ -546,7 +546,7 @@
                 <TextBox IsReadOnly="True" BorderThickness="0"  Text="PlatingCell1" Canvas.Left="320"  Canvas.Top="1280" FontSize="55" Width="320"  Height="84" Background="Transparent" HorizontalContentAlignment="Center" HorizontalAlignment="Left" VerticalAlignment="Top"/>
                 <TextBox IsReadOnly="True" BorderThickness="0"  Text="PlatingCell1" Canvas.Left="320"  Canvas.Top="1280" FontSize="55" Width="320"  Height="84" Background="Transparent" HorizontalContentAlignment="Center" HorizontalAlignment="Left" VerticalAlignment="Top"/>
                 <local:Loadport Canvas.Top="20" Width="300" Height="300" RotateTransformValue="90" HorizontalAlignment="Left" VerticalAlignment="Top"/>
                 <local:Loadport Canvas.Top="20" Width="300" Height="300" RotateTransformValue="90" HorizontalAlignment="Left" VerticalAlignment="Top"/>
                 <local:Loadport  Canvas.Top="345" Width="300" Height="300" RotateTransformValue="90"/>
                 <local:Loadport  Canvas.Top="345" Width="300" Height="300" RotateTransformValue="90"/>
-                
+
                 <local:Foup Width="230" Height="450" Canvas.Left="-35"  Canvas.Top="53"   Visibility="{Binding ElementName=efem,Path=LP1Presented,Converter={StaticResource BoolToVisibility2}}" Style="{StaticResource LP1Style}" RotateTransformValue="90">
                 <local:Foup Width="230" Height="450" Canvas.Left="-35"  Canvas.Top="53"   Visibility="{Binding ElementName=efem,Path=LP1Presented,Converter={StaticResource BoolToVisibility2}}" Style="{StaticResource LP1Style}" RotateTransformValue="90">
                     <local:Foup.RenderTransform>
                     <local:Foup.RenderTransform>
                         <TransformGroup>
                         <TransformGroup>
@@ -561,11 +561,10 @@
                         </TransformGroup>
                         </TransformGroup>
                     </local:Foup.RenderTransform>
                     </local:Foup.RenderTransform>
                 </local:Foup>
                 </local:Foup>
-                
+
 
 
                 <TextBox IsReadOnly="True" BorderThickness="0"  Text="LP1" Canvas.Left="-543"  Canvas.Top="128" FontSize="55" Width="280"  Height="84" Background="Transparent" HorizontalContentAlignment="Center" HorizontalAlignment="Left" VerticalAlignment="Top"/>
                 <TextBox IsReadOnly="True" BorderThickness="0"  Text="LP1" Canvas.Left="-543"  Canvas.Top="128" FontSize="55" Width="280"  Height="84" Background="Transparent" HorizontalContentAlignment="Center" HorizontalAlignment="Left" VerticalAlignment="Top"/>
                 <TextBox IsReadOnly="True" BorderThickness="0"  Text="LP2" Canvas.Left="-543"  Canvas.Top="454" FontSize="55" Width="280"  Height="82" Background="Transparent"  HorizontalContentAlignment="Center" HorizontalAlignment="Left" VerticalAlignment="Top" RenderTransformOrigin="0.709,0.612"/>
                 <TextBox IsReadOnly="True" BorderThickness="0"  Text="LP2" Canvas.Left="-543"  Canvas.Top="454" FontSize="55" Width="280"  Height="82" Background="Transparent"  HorizontalContentAlignment="Center" HorizontalAlignment="Left" VerticalAlignment="Top" RenderTransformOrigin="0.709,0.612"/>
-               
             </Canvas>
             </Canvas>
 
 
         </Border>
         </Border>

+ 1 - 1
PunkHPX8_Themes/UserControls/SRDUIControl.xaml

@@ -44,7 +44,7 @@
                     </TransformGroup>
                     </TransformGroup>
                 </local:Blower.RenderTransform>
                 </local:Blower.RenderTransform>
             </local:Blower>
             </local:Blower>
-            <Image Source="pack://application:,,,/PunkHPX8_Themes;component/Themes/Images/parts/SRDDevice.png" Canvas.Left="19" Canvas.Top="31" />
+            <Image Source="pack://application:,,,/PunkHPX8_Themes;component/Themes/Images/parts/DoubleChamber.png" Canvas.Left="19" Canvas.Top="31" />
 
 
             <Ellipse Width="45" Height="45" Fill="#F8F8F8" Stroke="Transparent" StrokeThickness="2" Canvas.Left="105" Canvas.Top="50" HorizontalAlignment="Center" VerticalAlignment="Top"/>
             <Ellipse Width="45" Height="45" Fill="#F8F8F8" Stroke="Transparent" StrokeThickness="2" Canvas.Left="105" Canvas.Top="50" HorizontalAlignment="Center" VerticalAlignment="Top"/>
             <!--WaterBelow-->
             <!--WaterBelow-->

+ 0 - 483
PunkHPX8_Themes/UserControls/test.xaml

@@ -1,483 +0,0 @@
-<UserControl x:Class="P300_Themes.UserControls.test"
-             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
-             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
-             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
-             xmlns:local="clr-namespace:P300_Themes.UserControls"
-             xmlns:converters="clr-namespace:P300_Themes.Converters"
-             xmlns:customControls="clr-namespace:P300_Themes.CustomControls"
-             xmlns:userControls="clr-namespace:P300_Themes.UserControls"
-             mc:Ignorable="d" 
-             d:DesignHeight="450" d:DesignWidth="800">
-    <Grid>
-        <Viewbox x:Name="viewbox" Stretch="Fill">
-            <VisualStateManager.VisualStateGroups>
-                <VisualStateGroup Name="RobotXActions">
-                    <VisualStateGroup.Transitions>
-                        <VisualTransition To="Extend">
-                            <Storyboard FillBehavior="HoldEnd" SpeedRatio="18">
-                                <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT1RotateAct" Storyboard.TargetProperty="Angle">
-                                    <LinearDoubleKeyFrame Value="90" KeyTime="0:0:0"/>
-                                    <LinearDoubleKeyFrame Value="0"  KeyTime="0:0:9"/>
-                                </DoubleAnimationUsingKeyFrames>
-                                <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2ArmRotateAct" Storyboard.TargetProperty="Angle">
-                                    <LinearDoubleKeyFrame Value="-90" KeyTime="0:0:0"/>
-                                    <LinearDoubleKeyFrame Value="0"   KeyTime="0:0:9"/>
-                                </DoubleAnimationUsingKeyFrames>
-                                <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2Act" Storyboard.TargetProperty="X">
-                                    <LinearDoubleKeyFrame Value="0" KeyTime="0:0:9"/>
-                                    <LinearDoubleKeyFrame Value="2.126" KeyTime="0:0:8"/>
-                                    <LinearDoubleKeyFrame Value="8.443" KeyTime="0:0:7"/>
-                                    <LinearDoubleKeyFrame Value="18.756" KeyTime="0:0:6"/>
-                                    <LinearDoubleKeyFrame Value="32.753" KeyTime="0:0:5"/>
-                                    <LinearDoubleKeyFrame Value="50.009" KeyTime="0:0:4"/>
-                                    <LinearDoubleKeyFrame Value="70" KeyTime="0:0:3"/>
-                                    <LinearDoubleKeyFrame Value="92.117" KeyTime="0:0:2"/>
-                                    <LinearDoubleKeyFrame Value="115.689" KeyTime="0:0:1"/>
-                                    <LinearDoubleKeyFrame Value="140" KeyTime="0:0:0"/>
-                                </DoubleAnimationUsingKeyFrames>
-                            </Storyboard>
-                        </VisualTransition>
-                        <VisualTransition To="Retract">
-                            <Storyboard FillBehavior="HoldEnd" SpeedRatio="18">
-                                <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT1RotateAct" Storyboard.TargetProperty="Angle">
-                                    <LinearDoubleKeyFrame Value="0"  KeyTime="0:0:0"/>
-                                    <LinearDoubleKeyFrame Value="90" KeyTime="0:0:9"/>
-                                </DoubleAnimationUsingKeyFrames>
-                                <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2ArmRotateAct" Storyboard.TargetProperty="Angle">
-                                    <LinearDoubleKeyFrame Value="0"   KeyTime="0:0:0"/>
-                                    <LinearDoubleKeyFrame Value="-90" KeyTime="0:0:9"/>
-                                </DoubleAnimationUsingKeyFrames>
-                                <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2Act" Storyboard.TargetProperty="X">
-                                    <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
-                                    <LinearDoubleKeyFrame Value="2.126" KeyTime="0:0:1"/>
-                                    <LinearDoubleKeyFrame Value="8.443" KeyTime="0:0:2"/>
-                                    <LinearDoubleKeyFrame Value="18.756" KeyTime="0:0:3"/>
-                                    <LinearDoubleKeyFrame Value="32.753" KeyTime="0:0:4"/>
-                                    <LinearDoubleKeyFrame Value="50.009" KeyTime="0:0:5"/>
-                                    <LinearDoubleKeyFrame Value="70" KeyTime="0:0:6"/>
-                                    <LinearDoubleKeyFrame Value="92.117" KeyTime="0:0:7"/>
-                                    <LinearDoubleKeyFrame Value="115.689" KeyTime="0:0:8"/>
-                                    <LinearDoubleKeyFrame Value="140" KeyTime="0:0:9"/>
-                                </DoubleAnimationUsingKeyFrames>
-                            </Storyboard>
-                        </VisualTransition>
-                    </VisualStateGroup.Transitions>
-
-                    <VisualState Name="X_Origin">
-                        <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="-90" KeyTime="0:0:0"/>
-                            </DoubleAnimationUsingKeyFrames>
-                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2Act" Storyboard.TargetProperty="X">
-                                <LinearDoubleKeyFrame Value="140" KeyTime="0:0:0"/>
-                            </DoubleAnimationUsingKeyFrames>
-                        </Storyboard>
-                    </VisualState>
-
-                    <VisualState Name="Extend">
-                        <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="0" KeyTime="0:0:0"/>
-                            </DoubleAnimationUsingKeyFrames>
-                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2Act" Storyboard.TargetProperty="X">
-                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
-                            </DoubleAnimationUsingKeyFrames>
-                        </Storyboard>
-                    </VisualState>
-                    <VisualState Name="Retract">
-                        <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="-90" KeyTime="0:0:0"/>
-                            </DoubleAnimationUsingKeyFrames>
-                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2Act" Storyboard.TargetProperty="X">
-                                <LinearDoubleKeyFrame Value="140" 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:0.5"/>
-                                </DoubleAnimationUsingKeyFrames>
-                            </Storyboard>
-                        </VisualTransition>
-
-                        <VisualTransition To="Aligner1">
-                            <Storyboard FillBehavior="HoldEnd">
-                                <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                    <LinearDoubleKeyFrame Value="180" KeyTime="0:0:0.5"/>
-                                </DoubleAnimationUsingKeyFrames>
-                            </Storyboard>
-                        </VisualTransition>
-                        <VisualTransition To="LP1">
-                            <Storyboard FillBehavior="HoldEnd">
-                                <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                    <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0.5"/>
-                                </DoubleAnimationUsingKeyFrames>
-                            </Storyboard>
-                        </VisualTransition>
-                        <VisualTransition To="LP2">
-                            <Storyboard FillBehavior="HoldEnd">
-                                <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                    <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0.5"/>
-                                </DoubleAnimationUsingKeyFrames>
-                            </Storyboard>
-                        </VisualTransition>
-                        <VisualTransition To="LP3">
-                            <Storyboard FillBehavior="HoldEnd">
-                                <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                    <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0.5"/>
-                                </DoubleAnimationUsingKeyFrames>
-                            </Storyboard>
-                        </VisualTransition>
-                        <VisualTransition To="Dummy1">
-                            <Storyboard FillBehavior="HoldEnd">
-                                <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                    <LinearDoubleKeyFrame Value="60" KeyTime="0:0:0.5"/>
-                                </DoubleAnimationUsingKeyFrames>
-                            </Storyboard>
-                        </VisualTransition>
-                        <VisualTransition To="Dummy2">
-                            <Storyboard FillBehavior="HoldEnd">
-                                <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                    <LinearDoubleKeyFrame Value="60" KeyTime="0:0:0.5"/>
-                                </DoubleAnimationUsingKeyFrames>
-                            </Storyboard>
-                        </VisualTransition>
-                        <VisualTransition To="SRD1">
-                            <Storyboard FillBehavior="HoldEnd">
-                                <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                    <LinearDoubleKeyFrame Value="125" KeyTime="0:0:0.5"/>
-                                </DoubleAnimationUsingKeyFrames>
-                            </Storyboard>
-                        </VisualTransition>
-                        <VisualTransition To="SRD2">
-                            <Storyboard FillBehavior="HoldEnd">
-                                <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                    <LinearDoubleKeyFrame Value="125" KeyTime="0:0:0.5"/>
-                                </DoubleAnimationUsingKeyFrames>
-                            </Storyboard>
-                        </VisualTransition>
-                        <VisualTransition To="RightLocation">
-                            <Storyboard FillBehavior="HoldEnd">
-                                <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRightLeftAct" Storyboard.TargetProperty="X">
-                                    <LinearDoubleKeyFrame Value="80" KeyTime="0:0:0.5"/>
-                                </DoubleAnimationUsingKeyFrames>
-                            </Storyboard>
-                        </VisualTransition>
-                        <VisualTransition To="LeftLocation">
-                            <Storyboard FillBehavior="HoldEnd">
-                                <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRightLeftAct" Storyboard.TargetProperty="X">
-                                    <LinearDoubleKeyFrame Value="-80" 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="PUF1">
-                            <Storyboard FillBehavior="HoldEnd">
-                                <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                    <LinearDoubleKeyFrame Value="180" KeyTime="0:0:0.5"/>
-                                </DoubleAnimationUsingKeyFrames>
-                            </Storyboard>
-                        </VisualTransition>
-                        <VisualTransition To="PUF2">
-                            <Storyboard FillBehavior="HoldEnd">
-                                <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                    <LinearDoubleKeyFrame Value="180" 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="Aligner1">
-                        <Storyboard FillBehavior="HoldEnd">
-                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                <LinearDoubleKeyFrame Value="180" KeyTime="0:0:0"/>
-                            </DoubleAnimationUsingKeyFrames>
-                        </Storyboard>
-                    </VisualState>
-                    <VisualState Name="LP1">
-                        <Storyboard FillBehavior="HoldEnd">
-                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
-                            </DoubleAnimationUsingKeyFrames>
-                        </Storyboard>
-                    </VisualState>
-                    <VisualState Name="LP2">
-                        <Storyboard FillBehavior="HoldEnd">
-                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
-                            </DoubleAnimationUsingKeyFrames>
-                        </Storyboard>
-                    </VisualState>
-                    <VisualState Name="LP3">
-                        <Storyboard FillBehavior="HoldEnd">
-                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
-                            </DoubleAnimationUsingKeyFrames>
-                        </Storyboard>
-                    </VisualState>
-                    <VisualState Name="Dummy1">
-                        <Storyboard FillBehavior="HoldEnd">
-                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                <LinearDoubleKeyFrame Value="60" KeyTime="0:0:0"/>
-                            </DoubleAnimationUsingKeyFrames>
-                        </Storyboard>
-                    </VisualState>
-                    <VisualState Name="Dummy2">
-                        <Storyboard FillBehavior="HoldEnd">
-                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                <LinearDoubleKeyFrame Value="60" KeyTime="0:0:0"/>
-                            </DoubleAnimationUsingKeyFrames>
-                        </Storyboard>
-                    </VisualState>
-                    <VisualState Name="SRD1">
-                        <Storyboard FillBehavior="HoldEnd">
-                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                <LinearDoubleKeyFrame Value="125" KeyTime="0:0:0"/>
-                            </DoubleAnimationUsingKeyFrames>
-                        </Storyboard>
-                    </VisualState>
-                    <VisualState Name="SRD2">
-                        <Storyboard FillBehavior="HoldEnd">
-                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                <LinearDoubleKeyFrame Value="125" KeyTime="0:0:0"/>
-                            </DoubleAnimationUsingKeyFrames>
-                        </Storyboard>
-                    </VisualState>
-                    <VisualState Name="RightLocation">
-                        <Storyboard FillBehavior="HoldEnd">
-                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRightLeftAct" Storyboard.TargetProperty="X">
-                                <LinearDoubleKeyFrame Value="80" KeyTime="0:0:0"/>
-                            </DoubleAnimationUsingKeyFrames>
-                        </Storyboard>
-                    </VisualState>
-                    <VisualState Name="LeftLocation">
-                        <Storyboard FillBehavior="HoldEnd">
-                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRightLeftAct" Storyboard.TargetProperty="X">
-                                <LinearDoubleKeyFrame Value="-80" 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"/>
-                            </DoubleAnimationUsingKeyFrames>
-                        </Storyboard>
-                    </VisualState>
-                    <VisualState Name="PUF1">
-                        <Storyboard FillBehavior="HoldEnd">
-                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                <LinearDoubleKeyFrame Value="180" KeyTime="0:0:0"/>
-                            </DoubleAnimationUsingKeyFrames>
-                        </Storyboard>
-                    </VisualState>
-                    <VisualState Name="PUF2">
-                        <Storyboard FillBehavior="HoldEnd">
-                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                <LinearDoubleKeyFrame Value="180" KeyTime="0:0:0"/>
-                            </DoubleAnimationUsingKeyFrames>
-                        </Storyboard>
-                    </VisualState>
-                </VisualStateGroup>
-
-            </VisualStateManager.VisualStateGroups>
-
-            <Canvas Width="200" Height="300" >
-                <Canvas.RenderTransform>
-                    <TransformGroup>
-                        <TranslateTransform  x:Name="robotRightLeftAct"></TranslateTransform>
-                    </TransformGroup>
-                </Canvas.RenderTransform>
-                <Canvas x:Name="robot" Width="100" Height="150" RenderTransformOrigin="1 1" >
-                    <Canvas.RenderTransform>
-                        <TransformGroup>
-                            <!--<RotateTransform  x:Name="robotRotateAct"/>-->
-                            <RotateTransform Angle="0"></RotateTransform>
-                        </TransformGroup>
-                    </Canvas.RenderTransform>
-                    <Canvas x:Name="armXT1" Width="200" Height="100"  Canvas.Top="100" RenderTransformOrigin="0.5 0.5">
-                        <Canvas.RenderTransform>
-                            <!--<RotateTransform  x:Name="armXT1RotateAct"/>120,360-->
-                            <RotateTransform Angle="360"></RotateTransform>
-                        </Canvas.RenderTransform>
-
-                        <Canvas x:Name="armXT1Arm" Width="70" Height="30"  Canvas.Left="30" Canvas.Top="35" RenderTransformOrigin="1 0.5" ToolTip="后臂">
-                            <Path  Stroke="{StaticResource robotBorderBrush}" Fill="{StaticResource RobotBrush}" StrokeThickness="1" StrokeEndLineCap="Round" >
-                                <Path.Data>
-                                    <PathGeometry>
-                                        <PathFigure StartPoint="0 5" IsClosed="True">
-                                            <LineSegment Point="51 0"/>
-                                            <LineSegment Point="51 30" IsStroked="False"/>
-                                            <LineSegment Point="0 25"/>
-                                            <LineSegment Point="0 5" IsStroked="False"/>
-                                        </PathFigure>
-                                    </PathGeometry>
-                                </Path.Data>
-                            </Path>
-                            <Path Stroke="{StaticResource robotBorderBrush}" StrokeThickness="1" Canvas.Left="0" 
-                                                StrokeEndLineCap="Round" StrokeStartLineCap="Round" Fill="{StaticResource RobotBrush}"
-                                                Data="M 0,5 A 10,10 0 0 0 0,25">
-                            </Path>
-                        </Canvas>
-
-                        <Canvas x:Name="armXT1Center"  Width="40" Height="40" Canvas.Left="80" Canvas.Top="30" ToolTip="底座">
-                            <Path  Stroke="{StaticResource robotBorderBrush}"  Fill="{StaticResource RobotBrush}" StrokeThickness="1" StrokeEndLineCap="Round"  >
-                                <Path.Data>
-                                    <PathGeometry>
-                                        <PathFigure StartPoint="0 6" IsClosed="True">
-                                            <LineSegment Point="6 0"/>
-                                            <LineSegment Point="34 0"/>
-                                            <LineSegment Point="40 6"/>
-                                            <LineSegment Point="40 34"/>
-                                            <LineSegment Point="34 40"/>
-                                            <LineSegment Point="6 40"/>
-                                            <LineSegment Point="0 34"/>
-                                        </PathFigure>
-                                    </PathGeometry>
-                                </Path.Data>
-                            </Path>
-                            <!--<Ellipse Width="40" Height="40"  Stroke="{StaticResource robotBorderBrush}"  Fill="{StaticResource RobotBrush}" StrokeThickness="1" StrokeEndLineCap="Round"></Ellipse>-->
-                        </Canvas>
-                    </Canvas>
-
-                    <Canvas x:Name="armXT2" Width="120" Height="40" Canvas.Left="-90" Canvas.Top="130">
-                        <Canvas.RenderTransform>
-                            <TransformGroup>
-                                <!--<TranslateTransform x:Name="armXT2Act"></TranslateTransform>-->
-                                <TranslateTransform X="0" Y="0"></TranslateTransform>
-                            </TransformGroup>
-                        </Canvas.RenderTransform>
-                        <Canvas x:Name="armXT2Arm" Width="70" Height="20"  Canvas.Left="50" Canvas.Top="10" RenderTransformOrigin="0 0.5" Background="#6495ED" ToolTip="前臂">
-                            <Canvas.RenderTransform>
-                                <!--<RotateTransform x:Name="armXT2ArmRotateAct"/>-90-->
-                                <RotateTransform Angle="0"></RotateTransform>
-                            </Canvas.RenderTransform>
-                            <Image></Image>
-                            <Path Stroke="{StaticResource robotBorderBrush}" StrokeThickness="1" Canvas.Left="70" 
-                                        StrokeEndLineCap="Round" StrokeStartLineCap="Round" Fill="WhiteSmoke"
-                                        Data="M 0,0 A 10,10 0 0 1 0,20">
-                            </Path>
-                            <Path Stroke="{StaticResource robotBorderBrush}" StrokeThickness="1" Canvas.Left="0" 
-                                        StrokeEndLineCap="Round" StrokeStartLineCap="Round" Fill="{StaticResource RobotBrush}"
-                                        Data="M 0,0 A 10,10 0 0 0 0,20">
-                            </Path>
-
-                            <Path  Stroke="{StaticResource robotBorderBrush}" Fill="{StaticResource RobotBrush}" StrokeThickness="1" StrokeEndLineCap="Round" >
-                                <Path.Data>
-                                    <PathGeometry>
-                                        <PathFigure StartPoint="70 0" >
-                                            <LineSegment Point="0 0" />
-                                            <LineSegment Point="0 20" IsStroked="False"/>
-                                            <LineSegment Point="70 20"/>
-                                            <LineSegment Point="70 0" IsStroked="False"/>
-                                        </PathFigure>
-                                    </PathGeometry>
-                                </Path.Data>
-                            </Path>
-                            <Ellipse Width="12" Height="12" Stroke="#030303" StrokeThickness="2"  Fill="Transparent" 
-                                             Canvas.Top="4" Canvas.Left="62"/>
-                        </Canvas>
-
-                        <Canvas x:Name="armGripper" Height="40" Width="50"  Canvas.Left="0" Canvas.Top="0">
-                            <StackPanel RenderTransformOrigin="0.5,0.5" Canvas.Top="-18">
-                                <StackPanel.RenderTransform>
-                                    <TransformGroup>
-                                        <ScaleTransform/>
-                                        <SkewTransform/>
-                                        <RotateTransform Angle="-90"/>
-                                        <TranslateTransform/>
-                                    </TransformGroup>
-                                </StackPanel.RenderTransform>
-                                <Image Width="40" Source="pack://application:,,,/P300_Themes;component/Themes/Images/parts/atmrobot/hand2.png"></Image>
-                            </StackPanel>
-                            <!--<Path   Stroke="Black"    StrokeThickness="5"  StrokeEndLineCap="Round">
-                                <Path.Data>
-                                    <PathGeometry>
-
-                                        <PathFigure StartPoint="30 14" >
-                                            <LineSegment Point="10 14" />
-                                            <LineSegment Point="4 8" />
-                                            <LineSegment Point="-6 8" />
-                                        </PathFigure>
-
-                                        <PathFigure StartPoint="30 26" >
-                                            <LineSegment Point="10 26" />
-                                            <LineSegment Point="4 32" />
-                                            <LineSegment Point="-6 32" />
-                                        </PathFigure>
-                                    </PathGeometry>
-                                </Path.Data>
-                            </Path>
-                            <Path  Stroke="{StaticResource robotBorderBrush}" Fill="{StaticResource RobotBrush}"  StrokeThickness="1" StrokeEndLineCap="Round" >
-                                <Path.Data>
-                                    <PathGeometry>
-                                        <PathFigure StartPoint="40 0" >
-                                            <LineSegment Point="60 0" />
-                                            <LineSegment Point="60 40" />
-                                            <LineSegment Point="40 40" />
-                                            <LineSegment Point="30 30" />
-                                            <LineSegment Point="30 10" />
-                                            <LineSegment Point="40 0" />
-                                        </PathFigure>
-                                    </PathGeometry>
-                                </Path.Data>
-                            </Path>
-                            <Path  Stroke="{StaticResource robotBorderBrush}" Fill="{StaticResource RobotBrush}"  StrokeThickness="1" StrokeEndLineCap="Round" >
-                                <Path.Data>
-                                    <PathGeometry>
-                                        <PathFigure StartPoint="30 10" >
-                                            <LineSegment Point="20 10" />
-                                            <LineSegment Point="20 30" />
-                                            <LineSegment Point="30 30" />
-                                            <LineSegment Point="30 10" IsStroked="False"/>
-                                        </PathFigure>
-                                    </PathGeometry>
-                                </Path.Data>
-                            </Path>-->
-
-
-                            <Ellipse Width="12" Height="12" Stroke="AliceBlue" StrokeThickness="2"  Fill="Transparent" 
-                                             Canvas.Top="14" Canvas.Left="44"/>
-
-
-                            <Viewbox Canvas.Left="-64" Canvas.Top="-21" Width="85" Height="85">
-                                <userControls:WaferCtrl WaferData="{Binding RobotWafer,RelativeSource={RelativeSource TemplatedParent}}"/>
-                            </Viewbox>
-
-                        </Canvas>
-                    </Canvas>
-                </Canvas>
-            </Canvas>
-        </Viewbox>
-
-    </Grid>
-</UserControl>

+ 0 - 28
PunkHPX8_Themes/UserControls/test.xaml.cs

@@ -1,28 +0,0 @@
-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.Data;
-using System.Windows.Documents;
-using System.Windows.Input;
-using System.Windows.Media;
-using System.Windows.Media.Imaging;
-using System.Windows.Navigation;
-using System.Windows.Shapes;
-
-namespace P300_Themes.UserControls
-{
-    /// <summary>
-    /// test.xaml 的交互逻辑
-    /// </summary>
-    public partial class test : UserControl
-    {
-        public test()
-        {
-            InitializeComponent();
-        }
-    }
-}

+ 0 - 480
PunkHPX8_Themes/UserControls/test1.xaml

@@ -1,480 +0,0 @@
-<UserControl x:Class="P300_Themes.UserControls.test1"
-             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
-             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
-             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
-             xmlns:local="clr-namespace:P300_Themes.UserControls"
-             xmlns:converters="clr-namespace:P300_Themes.Converters"
-             xmlns:customControls="clr-namespace:P300_Themes.CustomControls"
-             xmlns:userControls="clr-namespace:P300_Themes.UserControls"
-             mc:Ignorable="d" 
-             d:DesignHeight="450" d:DesignWidth="800">
-    <Grid>
-        <Viewbox x:Name="viewbox" Stretch="Fill">
-            <VisualStateManager.VisualStateGroups>
-                <VisualStateGroup Name="RobotXActions">
-                    <VisualStateGroup.Transitions>
-                        <VisualTransition To="Extend">
-                            <Storyboard FillBehavior="HoldEnd" SpeedRatio="18">
-                                <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT1RotateAct" Storyboard.TargetProperty="Angle">
-                                    <LinearDoubleKeyFrame Value="90" KeyTime="0:0:0"/>
-                                    <LinearDoubleKeyFrame Value="0"  KeyTime="0:0:9"/>
-                                </DoubleAnimationUsingKeyFrames>
-                                <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2ArmRotateAct" Storyboard.TargetProperty="Angle">
-                                    <LinearDoubleKeyFrame Value="-90" KeyTime="0:0:0"/>
-                                    <LinearDoubleKeyFrame Value="0"   KeyTime="0:0:9"/>
-                                </DoubleAnimationUsingKeyFrames>
-                                <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2Act" Storyboard.TargetProperty="X">
-                                    <LinearDoubleKeyFrame Value="0" KeyTime="0:0:9"/>
-                                    <LinearDoubleKeyFrame Value="2.126" KeyTime="0:0:8"/>
-                                    <LinearDoubleKeyFrame Value="8.443" KeyTime="0:0:7"/>
-                                    <LinearDoubleKeyFrame Value="18.756" KeyTime="0:0:6"/>
-                                    <LinearDoubleKeyFrame Value="32.753" KeyTime="0:0:5"/>
-                                    <LinearDoubleKeyFrame Value="50.009" KeyTime="0:0:4"/>
-                                    <LinearDoubleKeyFrame Value="70" KeyTime="0:0:3"/>
-                                    <LinearDoubleKeyFrame Value="92.117" KeyTime="0:0:2"/>
-                                    <LinearDoubleKeyFrame Value="115.689" KeyTime="0:0:1"/>
-                                    <LinearDoubleKeyFrame Value="140" KeyTime="0:0:0"/>
-                                </DoubleAnimationUsingKeyFrames>
-                            </Storyboard>
-                        </VisualTransition>
-                        <VisualTransition To="Retract">
-                            <Storyboard FillBehavior="HoldEnd" SpeedRatio="18">
-                                <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT1RotateAct" Storyboard.TargetProperty="Angle">
-                                    <LinearDoubleKeyFrame Value="0"  KeyTime="0:0:0"/>
-                                    <LinearDoubleKeyFrame Value="90" KeyTime="0:0:9"/>
-                                </DoubleAnimationUsingKeyFrames>
-                                <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2ArmRotateAct" Storyboard.TargetProperty="Angle">
-                                    <LinearDoubleKeyFrame Value="0"   KeyTime="0:0:0"/>
-                                    <LinearDoubleKeyFrame Value="-90" KeyTime="0:0:9"/>
-                                </DoubleAnimationUsingKeyFrames>
-                                <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2Act" Storyboard.TargetProperty="X">
-                                    <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
-                                    <LinearDoubleKeyFrame Value="2.126" KeyTime="0:0:1"/>
-                                    <LinearDoubleKeyFrame Value="8.443" KeyTime="0:0:2"/>
-                                    <LinearDoubleKeyFrame Value="18.756" KeyTime="0:0:3"/>
-                                    <LinearDoubleKeyFrame Value="32.753" KeyTime="0:0:4"/>
-                                    <LinearDoubleKeyFrame Value="50.009" KeyTime="0:0:5"/>
-                                    <LinearDoubleKeyFrame Value="70" KeyTime="0:0:6"/>
-                                    <LinearDoubleKeyFrame Value="92.117" KeyTime="0:0:7"/>
-                                    <LinearDoubleKeyFrame Value="115.689" KeyTime="0:0:8"/>
-                                    <LinearDoubleKeyFrame Value="140" KeyTime="0:0:9"/>
-                                </DoubleAnimationUsingKeyFrames>
-                            </Storyboard>
-                        </VisualTransition>
-                    </VisualStateGroup.Transitions>
-
-                    <VisualState Name="X_Origin">
-                        <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="-90" KeyTime="0:0:0"/>
-                            </DoubleAnimationUsingKeyFrames>
-                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2Act" Storyboard.TargetProperty="X">
-                                <LinearDoubleKeyFrame Value="140" KeyTime="0:0:0"/>
-                            </DoubleAnimationUsingKeyFrames>
-                        </Storyboard>
-                    </VisualState>
-
-                    <VisualState Name="Extend">
-                        <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="0" KeyTime="0:0:0"/>
-                            </DoubleAnimationUsingKeyFrames>
-                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2Act" Storyboard.TargetProperty="X">
-                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
-                            </DoubleAnimationUsingKeyFrames>
-                        </Storyboard>
-                    </VisualState>
-                    <VisualState Name="Retract">
-                        <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="-90" KeyTime="0:0:0"/>
-                            </DoubleAnimationUsingKeyFrames>
-                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="armXT2Act" Storyboard.TargetProperty="X">
-                                <LinearDoubleKeyFrame Value="140" 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:0.5"/>
-                                </DoubleAnimationUsingKeyFrames>
-                            </Storyboard>
-                        </VisualTransition>
-
-                        <VisualTransition To="Aligner1">
-                            <Storyboard FillBehavior="HoldEnd">
-                                <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                    <LinearDoubleKeyFrame Value="180" KeyTime="0:0:0.5"/>
-                                </DoubleAnimationUsingKeyFrames>
-                            </Storyboard>
-                        </VisualTransition>
-                        <VisualTransition To="LP1">
-                            <Storyboard FillBehavior="HoldEnd">
-                                <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                    <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0.5"/>
-                                </DoubleAnimationUsingKeyFrames>
-                            </Storyboard>
-                        </VisualTransition>
-                        <VisualTransition To="LP2">
-                            <Storyboard FillBehavior="HoldEnd">
-                                <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                    <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0.5"/>
-                                </DoubleAnimationUsingKeyFrames>
-                            </Storyboard>
-                        </VisualTransition>
-                        <VisualTransition To="LP3">
-                            <Storyboard FillBehavior="HoldEnd">
-                                <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                    <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0.5"/>
-                                </DoubleAnimationUsingKeyFrames>
-                            </Storyboard>
-                        </VisualTransition>
-                        <VisualTransition To="Dummy1">
-                            <Storyboard FillBehavior="HoldEnd">
-                                <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                    <LinearDoubleKeyFrame Value="60" KeyTime="0:0:0.5"/>
-                                </DoubleAnimationUsingKeyFrames>
-                            </Storyboard>
-                        </VisualTransition>
-                        <VisualTransition To="Dummy2">
-                            <Storyboard FillBehavior="HoldEnd">
-                                <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                    <LinearDoubleKeyFrame Value="60" KeyTime="0:0:0.5"/>
-                                </DoubleAnimationUsingKeyFrames>
-                            </Storyboard>
-                        </VisualTransition>
-                        <VisualTransition To="SRD1">
-                            <Storyboard FillBehavior="HoldEnd">
-                                <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                    <LinearDoubleKeyFrame Value="125" KeyTime="0:0:0.5"/>
-                                </DoubleAnimationUsingKeyFrames>
-                            </Storyboard>
-                        </VisualTransition>
-                        <VisualTransition To="SRD2">
-                            <Storyboard FillBehavior="HoldEnd">
-                                <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                    <LinearDoubleKeyFrame Value="125" KeyTime="0:0:0.5"/>
-                                </DoubleAnimationUsingKeyFrames>
-                            </Storyboard>
-                        </VisualTransition>
-                        <VisualTransition To="RightLocation">
-                            <Storyboard FillBehavior="HoldEnd">
-                                <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRightLeftAct" Storyboard.TargetProperty="X">
-                                    <LinearDoubleKeyFrame Value="80" KeyTime="0:0:0.5"/>
-                                </DoubleAnimationUsingKeyFrames>
-                            </Storyboard>
-                        </VisualTransition>
-                        <VisualTransition To="LeftLocation">
-                            <Storyboard FillBehavior="HoldEnd">
-                                <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRightLeftAct" Storyboard.TargetProperty="X">
-                                    <LinearDoubleKeyFrame Value="-80" 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="PUF1">
-                            <Storyboard FillBehavior="HoldEnd">
-                                <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                    <LinearDoubleKeyFrame Value="180" KeyTime="0:0:0.5"/>
-                                </DoubleAnimationUsingKeyFrames>
-                            </Storyboard>
-                        </VisualTransition>
-                        <VisualTransition To="PUF2">
-                            <Storyboard FillBehavior="HoldEnd">
-                                <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                    <LinearDoubleKeyFrame Value="180" 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="Aligner1">
-                        <Storyboard FillBehavior="HoldEnd">
-                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                <LinearDoubleKeyFrame Value="180" KeyTime="0:0:0"/>
-                            </DoubleAnimationUsingKeyFrames>
-                        </Storyboard>
-                    </VisualState>
-                    <VisualState Name="LP1">
-                        <Storyboard FillBehavior="HoldEnd">
-                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
-                            </DoubleAnimationUsingKeyFrames>
-                        </Storyboard>
-                    </VisualState>
-                    <VisualState Name="LP2">
-                        <Storyboard FillBehavior="HoldEnd">
-                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
-                            </DoubleAnimationUsingKeyFrames>
-                        </Storyboard>
-                    </VisualState>
-                    <VisualState Name="LP3">
-                        <Storyboard FillBehavior="HoldEnd">
-                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
-                            </DoubleAnimationUsingKeyFrames>
-                        </Storyboard>
-                    </VisualState>
-                    <VisualState Name="Dummy1">
-                        <Storyboard FillBehavior="HoldEnd">
-                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                <LinearDoubleKeyFrame Value="60" KeyTime="0:0:0"/>
-                            </DoubleAnimationUsingKeyFrames>
-                        </Storyboard>
-                    </VisualState>
-                    <VisualState Name="Dummy2">
-                        <Storyboard FillBehavior="HoldEnd">
-                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                <LinearDoubleKeyFrame Value="60" KeyTime="0:0:0"/>
-                            </DoubleAnimationUsingKeyFrames>
-                        </Storyboard>
-                    </VisualState>
-                    <VisualState Name="SRD1">
-                        <Storyboard FillBehavior="HoldEnd">
-                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                <LinearDoubleKeyFrame Value="125" KeyTime="0:0:0"/>
-                            </DoubleAnimationUsingKeyFrames>
-                        </Storyboard>
-                    </VisualState>
-                    <VisualState Name="SRD2">
-                        <Storyboard FillBehavior="HoldEnd">
-                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                <LinearDoubleKeyFrame Value="125" KeyTime="0:0:0"/>
-                            </DoubleAnimationUsingKeyFrames>
-                        </Storyboard>
-                    </VisualState>
-                    <VisualState Name="RightLocation">
-                        <Storyboard FillBehavior="HoldEnd">
-                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRightLeftAct" Storyboard.TargetProperty="X">
-                                <LinearDoubleKeyFrame Value="80" KeyTime="0:0:0"/>
-                            </DoubleAnimationUsingKeyFrames>
-                        </Storyboard>
-                    </VisualState>
-                    <VisualState Name="LeftLocation">
-                        <Storyboard FillBehavior="HoldEnd">
-                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRightLeftAct" Storyboard.TargetProperty="X">
-                                <LinearDoubleKeyFrame Value="-80" 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"/>
-                            </DoubleAnimationUsingKeyFrames>
-                        </Storyboard>
-                    </VisualState>
-                    <VisualState Name="PUF1">
-                        <Storyboard FillBehavior="HoldEnd">
-                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                <LinearDoubleKeyFrame Value="180" KeyTime="0:0:0"/>
-                            </DoubleAnimationUsingKeyFrames>
-                        </Storyboard>
-                    </VisualState>
-                    <VisualState Name="PUF2">
-                        <Storyboard FillBehavior="HoldEnd">
-                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Angle">
-                                <LinearDoubleKeyFrame Value="180" KeyTime="0:0:0"/>
-                            </DoubleAnimationUsingKeyFrames>
-                        </Storyboard>
-                    </VisualState>
-                </VisualStateGroup>
-
-            </VisualStateManager.VisualStateGroups>
-
-            <Canvas Width="200" Height="300" >
-                <Canvas.RenderTransform>
-                    <TransformGroup>
-                        <TranslateTransform  x:Name="robotRightLeftAct"></TranslateTransform>
-                    </TransformGroup>
-                </Canvas.RenderTransform>
-                <Canvas x:Name="robot" Width="100" Height="150" RenderTransformOrigin="1 1" >
-                    <Canvas.RenderTransform>
-                        <TransformGroup>
-                            <RotateTransform  x:Name="robotRotateAct"/>
-                        </TransformGroup>
-                    </Canvas.RenderTransform>
-                    <Canvas x:Name="armXT1" Width="200" Height="100"  Canvas.Top="100" RenderTransformOrigin="0.5 0.5">
-                        <Canvas.RenderTransform>
-                            <RotateTransform  x:Name="armXT1RotateAct"/>
-                        </Canvas.RenderTransform>
-
-                        <Canvas x:Name="armXT1Arm" Width="70" Height="30"  Canvas.Left="30" Canvas.Top="35" RenderTransformOrigin="1 0.5" ToolTip="后臂">
-                            <Path  Stroke="{StaticResource robotBorderBrush}" Fill="{StaticResource RobotBrush}" StrokeThickness="1" StrokeEndLineCap="Round" >
-                                <Path.Data>
-                                    <PathGeometry>
-                                        <PathFigure StartPoint="0 5" IsClosed="True">
-                                            <LineSegment Point="51 0"/>
-                                            <LineSegment Point="51 30" IsStroked="False"/>
-                                            <LineSegment Point="0 25"/>
-                                            <LineSegment Point="0 5" IsStroked="False"/>
-                                        </PathFigure>
-                                    </PathGeometry>
-                                </Path.Data>
-                            </Path>
-                            <Path Stroke="{StaticResource robotBorderBrush}" StrokeThickness="1" Canvas.Left="0" 
-                                                StrokeEndLineCap="Round" StrokeStartLineCap="Round" Fill="{StaticResource RobotBrush}"
-                                                Data="M 0,5 A 10,10 0 0 0 0,25">
-                            </Path>
-                        </Canvas>
-
-                        <Canvas x:Name="armXT1Center"  Width="40" Height="40" Canvas.Left="80" Canvas.Top="30" ToolTip="底座">
-                            <Path  Stroke="{StaticResource robotBorderBrush}"  Fill="{StaticResource RobotBrush}" StrokeThickness="1" StrokeEndLineCap="Round"  >
-                                <Path.Data>
-                                    <PathGeometry>
-                                        <PathFigure StartPoint="0 6" IsClosed="True">
-                                            <LineSegment Point="6 0"/>
-                                            <LineSegment Point="34 0"/>
-                                            <LineSegment Point="40 6"/>
-                                            <LineSegment Point="40 34"/>
-                                            <LineSegment Point="34 40"/>
-                                            <LineSegment Point="6 40"/>
-                                            <LineSegment Point="0 34"/>
-                                        </PathFigure>
-                                    </PathGeometry>
-                                </Path.Data>
-                            </Path>
-                            <!--<Ellipse Width="40" Height="40"  Stroke="{StaticResource robotBorderBrush}"  Fill="{StaticResource RobotBrush}" StrokeThickness="1" StrokeEndLineCap="Round"></Ellipse>-->
-                        </Canvas>
-                    
-                    </Canvas>
-
-                    <Canvas x:Name="armXT2" Width="120" Height="40" Canvas.Left="-90" Canvas.Top="130">
-                        <Canvas.RenderTransform>
-                            <TransformGroup>
-                                <TranslateTransform x:Name="armXT2Act"></TranslateTransform>
-                            </TransformGroup>
-                        </Canvas.RenderTransform>
-                        <Canvas x:Name="armXT2Arm" Width="70" Height="20"  Canvas.Left="50" Canvas.Top="10" RenderTransformOrigin="0 0.5" Background="#6495ED" ToolTip="前臂">
-                            <Canvas.RenderTransform>
-                                <RotateTransform x:Name="armXT2ArmRotateAct"/>
-                            </Canvas.RenderTransform>
-                            <Image></Image>
-                            <Path Stroke="{StaticResource robotBorderBrush}" StrokeThickness="1" Canvas.Left="70" 
-                                        StrokeEndLineCap="Round" StrokeStartLineCap="Round" Fill="WhiteSmoke"
-                                        Data="M 0,0 A 10,10 0 0 1 0,20">
-                            </Path>
-                            <Path Stroke="{StaticResource robotBorderBrush}" StrokeThickness="1" Canvas.Left="0" 
-                                        StrokeEndLineCap="Round" StrokeStartLineCap="Round" Fill="{StaticResource RobotBrush}"
-                                        Data="M 0,0 A 10,10 0 0 0 0,20">
-                            </Path>
-
-                            <Path  Stroke="{StaticResource robotBorderBrush}" Fill="{StaticResource RobotBrush}" StrokeThickness="1" StrokeEndLineCap="Round" >
-                                <Path.Data>
-                                    <PathGeometry>
-                                        <PathFigure StartPoint="70 0" >
-                                            <LineSegment Point="0 0" />
-                                            <LineSegment Point="0 20" IsStroked="False"/>
-                                            <LineSegment Point="70 20"/>
-                                            <LineSegment Point="70 0" IsStroked="False"/>
-                                        </PathFigure>
-                                    </PathGeometry>
-                                </Path.Data>
-                            </Path>
-                            <Ellipse Width="12" Height="12" Stroke="#030303" StrokeThickness="2"  Fill="Transparent" 
-                                             Canvas.Top="4" Canvas.Left="62"/>
-                        </Canvas>
-
-                        <Canvas x:Name="armGripper" Height="40" Width="50"  Canvas.Left="0" Canvas.Top="0">
-                            <StackPanel RenderTransformOrigin="0.5,0.5" Canvas.Top="-25">
-                                <StackPanel.RenderTransform>
-                                    <TransformGroup>
-                                        <ScaleTransform/>
-                                        <SkewTransform/>
-                                        <RotateTransform Angle="-90"/>
-                                        <TranslateTransform/>
-                                    </TransformGroup>
-                                </StackPanel.RenderTransform>
-                                <Image Width="33" Source="pack://application:,,,/P300_Themes;component/Themes/Images/parts/atmrobot/hand1.png"></Image>
-                            </StackPanel>
-                            <!--<Path   Stroke="Black"    StrokeThickness="5"  StrokeEndLineCap="Round">
-                                <Path.Data>
-                                    <PathGeometry>
-
-                                        <PathFigure StartPoint="30 14" >
-                                            <LineSegment Point="10 14" />
-                                            <LineSegment Point="4 8" />
-                                            <LineSegment Point="-6 8" />
-                                        </PathFigure>
-
-                                        <PathFigure StartPoint="30 26" >
-                                            <LineSegment Point="10 26" />
-                                            <LineSegment Point="4 32" />
-                                            <LineSegment Point="-6 32" />
-                                        </PathFigure>
-                                    </PathGeometry>
-                                </Path.Data>
-                            </Path>
-                            <Path  Stroke="{StaticResource robotBorderBrush}" Fill="{StaticResource RobotBrush}"  StrokeThickness="1" StrokeEndLineCap="Round" >
-                                <Path.Data>
-                                    <PathGeometry>
-                                        <PathFigure StartPoint="40 0" >
-                                            <LineSegment Point="60 0" />
-                                            <LineSegment Point="60 40" />
-                                            <LineSegment Point="40 40" />
-                                            <LineSegment Point="30 30" />
-                                            <LineSegment Point="30 10" />
-                                            <LineSegment Point="40 0" />
-                                        </PathFigure>
-                                    </PathGeometry>
-                                </Path.Data>
-                            </Path>
-                            <Path  Stroke="{StaticResource robotBorderBrush}" Fill="{StaticResource RobotBrush}"  StrokeThickness="1" StrokeEndLineCap="Round" >
-                                <Path.Data>
-                                    <PathGeometry>
-                                        <PathFigure StartPoint="30 10" >
-                                            <LineSegment Point="20 10" />
-                                            <LineSegment Point="20 30" />
-                                            <LineSegment Point="30 30" />
-                                            <LineSegment Point="30 10" IsStroked="False"/>
-                                        </PathFigure>
-                                    </PathGeometry>
-                                </Path.Data>
-                            </Path>-->
-
-
-                            <Ellipse Width="12" Height="12" Stroke="AliceBlue" StrokeThickness="2"  Fill="Transparent" 
-                                             Canvas.Top="14" Canvas.Left="44"/>
-
-
-                            <Viewbox Canvas.Left="-64" Canvas.Top="-21" Width="85" Height="85">
-                                <userControls:WaferCtrl WaferData="{Binding RobotWafer,RelativeSource={RelativeSource TemplatedParent}}"/>
-                            </Viewbox>
-
-                        </Canvas>
-                    </Canvas>
-                </Canvas>
-            </Canvas>
-        </Viewbox>
-
-    </Grid>
-</UserControl>

+ 0 - 268
PunkHPX8_Themes/UserControls/test2.xaml

@@ -1,268 +0,0 @@
-<UserControl x:Class="P300_Themes.UserControls.test2"
-             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
-             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
-             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
-             xmlns:local="clr-namespace:P300_Themes.UserControls"
-             xmlns:converters="clr-namespace:P300_Themes.Converters"
-             xmlns:ctrl="http://OpenSEMI.Ctrlib.com/presentation"
-             xmlns:customControls="clr-namespace:P300_Themes.CustomControls"
-             mc:Ignorable="d" 
-             d:DesignHeight="1000" d:DesignWidth="1200" Name="efem">
-    <VisualStateManager.VisualStateGroups>
-        <VisualStateGroup Name="RobotTActions">
-            <VisualStateGroup.Transitions>
-                <VisualTransition To="Left">
-                    <Storyboard FillBehavior="HoldEnd">
-                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Y">
-                            <LinearDoubleKeyFrame Value="-210" KeyTime="0:0:1"/>
-                        </DoubleAnimationUsingKeyFrames>
-                    </Storyboard>
-                </VisualTransition>
-                <VisualTransition To="Right">
-                    <Storyboard FillBehavior="HoldEnd">
-                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Y">
-                            <LinearDoubleKeyFrame Value="510" KeyTime="0:0:1"/>
-                        </DoubleAnimationUsingKeyFrames>
-                    </Storyboard>
-                </VisualTransition>
-                <VisualTransition To="Middle">
-                    <Storyboard FillBehavior="HoldEnd">
-                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Y">
-                            <LinearDoubleKeyFrame Value="130" KeyTime="0:0:1"/>
-                        </DoubleAnimationUsingKeyFrames>
-                    </Storyboard>
-                </VisualTransition>
-                <VisualTransition To="Origin">
-                    <Storyboard FillBehavior="HoldEnd">
-                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Y">
-                            <LinearDoubleKeyFrame Value="0" KeyTime="0:0:1"/>
-                        </DoubleAnimationUsingKeyFrames>
-                    </Storyboard>
-                </VisualTransition>
-
-                <VisualTransition To="Aligner">
-                    <Storyboard FillBehavior="HoldEnd">
-                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Y">
-                            <LinearDoubleKeyFrame Value="-210" KeyTime="0:0:1"/>
-                        </DoubleAnimationUsingKeyFrames>
-                    </Storyboard>
-                </VisualTransition>
-                <VisualTransition To="SRD">
-                    <Storyboard FillBehavior="HoldEnd">
-                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="X">
-                            <LinearDoubleKeyFrame Value="-100" KeyTime="0:0:1"/>
-                        </DoubleAnimationUsingKeyFrames>
-                    </Storyboard>
-                </VisualTransition>
-            </VisualStateGroup.Transitions>
-
-            <VisualState Name="Left">
-                <Storyboard FillBehavior="HoldEnd">
-                    <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Y">
-                        <LinearDoubleKeyFrame Value="-100" KeyTime="0:0:0"/>
-                    </DoubleAnimationUsingKeyFrames>
-                </Storyboard>
-            </VisualState>
-            <VisualState Name="Right">
-                <Storyboard FillBehavior="HoldEnd">
-                    <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Y">
-                        <LinearDoubleKeyFrame Value="530" KeyTime="0:0:0"/>
-                    </DoubleAnimationUsingKeyFrames>
-                </Storyboard>
-            </VisualState>
-            <VisualState Name="Middle">
-                <Storyboard FillBehavior="HoldEnd">
-                    <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Y">
-                        <LinearDoubleKeyFrame Value="200" KeyTime="0:0:0"/>
-                    </DoubleAnimationUsingKeyFrames>
-                </Storyboard>
-            </VisualState>
-            <VisualState Name="Origin">
-                <Storyboard FillBehavior="HoldEnd">
-                    <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Y">
-                        <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0"/>
-                    </DoubleAnimationUsingKeyFrames>
-                </Storyboard>
-            </VisualState>
-            <VisualState Name="Aligner">
-                <Storyboard FillBehavior="HoldEnd">
-                    <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="Y">
-                        <LinearDoubleKeyFrame Value="-100" KeyTime="0:0:0"/>
-                    </DoubleAnimationUsingKeyFrames>
-                </Storyboard>
-            </VisualState>
-            <VisualState Name="SRD">
-                <Storyboard FillBehavior="HoldEnd">
-                    <DoubleAnimationUsingKeyFrames Storyboard.TargetName="robotRotateAct" Storyboard.TargetProperty="X">
-                        <LinearDoubleKeyFrame Value="-100" KeyTime="0:0:0"/>
-                    </DoubleAnimationUsingKeyFrames>
-                </Storyboard>
-            </VisualState>
-        </VisualStateGroup>
-
-    </VisualStateManager.VisualStateGroups>
-    <UserControl.Resources>
-        <converters:BoolToVisibility2 x:Key="BoolToVisibility2"/>
-        <Style x:Key="LP1Style">
-            <Style.Triggers>
-                <DataTrigger Binding="{Binding ElementName=efem,Path=LP1Loaded}" Value="True">
-                    <DataTrigger.EnterActions>
-                        <BeginStoryboard>
-                            <Storyboard>
-                                <DoubleAnimation  Storyboard.TargetProperty="RenderTransform.Children[0].X" To="30" Duration="0:0:1"/>
-                            </Storyboard>
-                        </BeginStoryboard>
-                    </DataTrigger.EnterActions>
-                    <DataTrigger.ExitActions>
-                        <BeginStoryboard>
-                            <Storyboard>
-                                <DoubleAnimation  Storyboard.TargetProperty="RenderTransform.Children[0].X" To="0" Duration="0:0:1"/>
-                            </Storyboard>
-                        </BeginStoryboard>
-                    </DataTrigger.ExitActions>
-                </DataTrigger>
-            </Style.Triggers>
-        </Style>
-        <Style x:Key="LP2Style">
-            <Style.Triggers>
-                <DataTrigger Binding="{Binding ElementName=efem,Path=LP2Loaded}" Value="True">
-                    <DataTrigger.EnterActions>
-                        <BeginStoryboard>
-                            <Storyboard>
-                                <DoubleAnimation  Storyboard.TargetProperty="RenderTransform.Children[0].X" To="30" Duration="0:0:1"/>
-                            </Storyboard>
-                        </BeginStoryboard>
-                    </DataTrigger.EnterActions>
-                    <DataTrigger.ExitActions>
-                        <BeginStoryboard>
-                            <Storyboard>
-                                <DoubleAnimation  Storyboard.TargetProperty="RenderTransform.Children[0].X" To="0" Duration="0:0:1"/>
-                            </Storyboard>
-                        </BeginStoryboard>
-                    </DataTrigger.ExitActions>
-                </DataTrigger>
-            </Style.Triggers>
-        </Style>
-        <Style x:Key="LP3Style">
-            <Style.Triggers>
-                <DataTrigger Binding="{Binding ElementName=efem,Path=LP3Loaded}" Value="True">
-                    <DataTrigger.EnterActions>
-                        <BeginStoryboard>
-                            <Storyboard>
-                                <DoubleAnimation  Storyboard.TargetProperty="RenderTransform.Children[0].X" To="30" Duration="0:0:1"/>
-                            </Storyboard>
-                        </BeginStoryboard>
-                    </DataTrigger.EnterActions>
-                    <DataTrigger.ExitActions>
-                        <BeginStoryboard>
-                            <Storyboard>
-                                <DoubleAnimation  Storyboard.TargetProperty="RenderTransform.Children[0].X" To="0" Duration="0:0:1"/>
-                            </Storyboard>
-                        </BeginStoryboard>
-                    </DataTrigger.ExitActions>
-                </DataTrigger>
-            </Style.Triggers>
-        </Style>
-
-    </UserControl.Resources>
-
-
-
-    <Viewbox Stretch="Fill">
-        <Border BorderThickness="0" BorderBrush="Gray">
-            <Canvas  Width="1200" Height="1000">
-                <Polygon Points="0,1000 0,0 1200,0 1200,1000 0,1000"  Stroke="Gray" StrokeThickness="20" >
-                    <Polygon.Fill>
-                        <LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
-                            <GradientStop Color="Silver" Offset="0.0" />
-                            <GradientStop Color="White" Offset="0.5" />
-                            <GradientStop Color="Silver" Offset="1" />
-                        </LinearGradientBrush>
-                    </Polygon.Fill>
-                </Polygon>
-                <Canvas Width="500" Height="500" Canvas.Left="180" Canvas.Top="50"  RenderTransformOrigin="1 1">
-                    <Canvas.RenderTransform>
-                        <TransformGroup>
-                            <TranslateTransform  x:Name="robotRotateAct"/>
-                        </TransformGroup>
-                    </Canvas.RenderTransform>
-
-                    <customControls:GuangChuanRobotControl  OriginT="T_Origin"  Canvas.Left="-30" Canvas.Top="-282"   Width="540" Height="810"     RobotTAction="{Binding ElementName=efem,Path=RobotATAction}"  RobotXAction="{Binding ElementName=efem,Path=RobotAXAction}" RobotWafer="{Binding ElementName=efem,Path=RobotAWaferInfo}" HorizontalAlignment="Center" VerticalAlignment="Top"/>
-                    <local:test Width="550" RenderTransformOrigin="0.5,0.5" HorizontalAlignment="Left" Canvas.Top="-290" VerticalAlignment="Center" Canvas.Left="-34">
-                        <local:test.RenderTransform>
-                            <TransformGroup>
-                                <ScaleTransform/>
-                                <SkewTransform/>
-                                <RotateTransform Angle="-30"/>
-                                <TranslateTransform/>
-                            </TransformGroup>
-                        </local:test.RenderTransform>
-                    </local:test>
-                </Canvas>
-
-
-                <Viewbox Stretch="Uniform" Width="370" Height="370" Canvas.Left="810"  Canvas.Top="50">
-
-                    <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="0">
-                            <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">
-                                        <RadialGradientBrush.GradientStops>
-                                            <GradientStop Color="#FFE5E2DF" Offset="0" />
-                                            <GradientStop Color="#FFFFFFFF" Offset="0" />
-                                            <GradientStop Color="#FFADAEB0" Offset="0.52" />
-                                            <GradientStop Color="sc#1, 0.238698155, 0.250727534, 0.259264916" Offset="0.82" />
-                                            <GradientStop Color="#FF454F52" Offset="1" />
-                                        </RadialGradientBrush.GradientStops>
-                                    </RadialGradientBrush>
-                                </Path.Fill>
-                            </Path>
-                            <Path Data="M46.8477,55.6938C52.0087,55.6938 56.1937,59.8788 56.1937,65.0398 56.1937,70.2008 52.0087,74.3858 46.8477,74.3858 41.6857,74.3858 37.5007,70.2008 37.5007,65.0398 37.5007,59.8788 41.6857,55.6938 46.8477,55.6938z" Stretch="Fill" Stroke="White" StrokeThickness="0.25" Width="18.943" Height="18.942" Canvas.Left="26.903" Canvas.Top="26.788" />
-                        </Canvas>
-                        <Canvas   Width="5.857" Height="5.855" Canvas.Left="43.919" Canvas.Top="33.332">
-                            <Path Data="M46.8477,62.1133C48.4637,62.1133 49.7757,63.4243 49.7757,65.0413 49.7757,66.6583 48.4637,67.9683 46.8477,67.9683 45.2307,67.9683 43.9187,66.6583 43.9187,65.0413 43.9187,63.4243 45.2307,62.1133 46.8477,62.1133z" Stretch="Fill" Fill="LightBlue" Stroke="#FF4C4C4C" StrokeThickness="0.25" Width="6.107" Height="6.105" Canvas.Left="-0.125" Canvas.Top="-0.125" />
-                        </Canvas>
-                        <Canvas   Width="56.555" Height="56.556" Canvas.Left="18.57" Canvas.Top="7.981">
-                            <Path Data="M46.8477,46.3472C57.1717,46.3472 65.5407,54.7172 65.5407,65.0412 65.5407,75.3652 57.1717,83.7342 46.8477,83.7342 36.5227,83.7342 28.1537,75.3652 28.1537,65.0412 28.1537,54.7172 36.5227,46.3472 46.8477,46.3472z" Stretch="Fill" Stroke="White" StrokeThickness="0.25" Width="37.637" Height="37.637" Canvas.Left="9.459" Canvas.Top="9.46" />
-                            <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>
-                    </Canvas>
-                </Viewbox>
-                <Viewbox Width="230" Height="230"  Canvas.Left="880" Canvas.Top="55">
-                    <local:WaferCtrl WaferData="{Binding ElementName=efem, Path=Aligner1Wafer}"/>
-                </Viewbox>
-                <local:Loadport Canvas.Top="20" Width="300" Height="300" RotateTransformValue="90" HorizontalAlignment="Left" VerticalAlignment="Top"/>
-                <local:Loadport  Canvas.Top="345" Width="300" Height="300" RotateTransformValue="90"/>
-                <local:Loadport Canvas.Top="670" Width="300" Height="300" RotateTransformValue="90"/>
-                <local:Foup Width="230" Height="450" Canvas.Left="-35"  Canvas.Top="53"   Visibility="{Binding ElementName=efem,Path=LP1Presented,Converter={StaticResource BoolToVisibility2}}" Style="{StaticResource LP1Style}" RotateTransformValue="90">
-                    <local:Foup.RenderTransform>
-                        <TransformGroup>
-                            <TranslateTransform/>
-                        </TransformGroup>
-                    </local:Foup.RenderTransform>
-                </local:Foup>
-                <local:Foup Width="230" Height="450" Canvas.Left="-35"  Canvas.Top="378"   Visibility="{Binding ElementName=efem,Path=LP2Presented,Converter={StaticResource BoolToVisibility2}}" Style="{StaticResource LP2Style}" RotateTransformValue="90">
-                    <local:Foup.RenderTransform>
-                        <TransformGroup>
-                            <TranslateTransform/>
-                        </TransformGroup>
-                    </local:Foup.RenderTransform>
-                </local:Foup>
-                <local:Foup Width="230" Height="450" Canvas.Left="-35" Canvas.Top="703"  Visibility="{Binding ElementName=efem,Path=LP3Presented,Converter={StaticResource BoolToVisibility2}}" Style="{StaticResource LP3Style}" RotateTransformValue="90">
-                    <local:Foup.RenderTransform>
-                        <TransformGroup>
-                            <TranslateTransform/>
-                        </TransformGroup>
-                    </local:Foup.RenderTransform>
-                </local:Foup>
-
-                <TextBox IsReadOnly="True" BorderThickness="0"  Text="LP1" Canvas.Left="-543"  Canvas.Top="128" FontSize="55" Width="280"  Height="84" Background="Transparent" HorizontalContentAlignment="Center" HorizontalAlignment="Left" VerticalAlignment="Top"/>
-                <TextBox IsReadOnly="True" BorderThickness="0"  Text="LP2" Canvas.Left="-543"  Canvas.Top="454" FontSize="55" Width="280"  Height="82" Background="Transparent"  HorizontalContentAlignment="Center" HorizontalAlignment="Left" VerticalAlignment="Top" RenderTransformOrigin="0.709,0.612"/>
-                <TextBox IsReadOnly="True" BorderThickness="0" Text="LP3" Canvas.Left="-543"  Canvas.Top="774" FontSize="55" Width="280" Height="83" Background="Transparent" HorizontalContentAlignment="Center" HorizontalAlignment="Left" VerticalAlignment="Top"/>
-            </Canvas>
-
-        </Border>
-    </Viewbox>
-</UserControl>

+ 0 - 28
PunkHPX8_Themes/UserControls/test2.xaml.cs

@@ -1,28 +0,0 @@
-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.Data;
-using System.Windows.Documents;
-using System.Windows.Input;
-using System.Windows.Media;
-using System.Windows.Media.Imaging;
-using System.Windows.Navigation;
-using System.Windows.Shapes;
-
-namespace P300_Themes.UserControls
-{
-    /// <summary>
-    /// test2.xaml 的交互逻辑
-    /// </summary>
-    public partial class test2 : UserControl
-    {
-        public test2()
-        {
-            InitializeComponent();
-        }
-    }
-}

BIN
PunkHPX8_Twincate/PunkHPX8/_Boot/CurrentConfig/PlcTest.tpzip


+ 1 - 1
PunkHPX8_UI/Config/UIMenu.json

@@ -10,7 +10,7 @@
 				"Id": "OperationOverView",
 				"Id": "OperationOverView",
 				"IsShow": "true",
 				"IsShow": "true",
 				"Name": "OverView",
 				"Name": "OverView",
-				"View": "OperationOverView"
+				"View": "OperationOverViewNew"
 			},
 			},
 			{
 			{
 				"Id": "JobOperationView",
 				"Id": "JobOperationView",