Merge branch '多片机/动画' into 多片机/multiplate-develop

# Conflicts:
#	SicUI/Controls/Mainframe/M2C4EFEMView.xaml
#	SicUI/Controls/Mainframe/M2C4EFEMView2.xaml
#	SicUI/Models/Operations/Overviews/OverViewViewModel.cs
#	SicUI/SicUI.csproj
#	ThirdParty/MECF.Framework/MECF.Framework.Common.dll
#	ThirdParty/MECF.Framework/MECF.Framework.RT.Core.dll
#	ThirdParty/MECF.Framework/MECF.Framework.RT.EquipmentLibrary.dll
#	ThirdParty/MECF.Framework/MECF.Framework.Simulator.Core.dll
#	ThirdParty/MECF.Framework/MECF.Framework.UI.Client.dll
#	ThirdParty/MECF.Framework/MECF.Framework.UI.Core.dll
#	ThirdParty/MECF.Framework/Sicentury.Core.dll
This commit is contained in:
Han Qiang Qiang 2024-03-25 10:37:12 +08:00
commit 2b2074297a
21 changed files with 643 additions and 141 deletions

View File

@ -6,15 +6,15 @@
xmlns:controls="clr-namespace:SicUI.Controls"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:diag="clr-namespace:System.Diagnostics;assembly=WindowsBase"
xmlns:local="clr-namespace:SicUI.Controls.M2C4Parts"
xmlns:extendedControls="clr-namespace:MECF.Framework.UI.Core.ExtendedControls;assembly=MECF.Framework.UI.Core"
xmlns:local="clr-namespace:SicUI.Controls.M2C4Parts"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
x:Name="mainw"
d:DesignHeight="38"
d:DesignWidth="416"
mc:Ignorable="d"
x:Name="mainw">
mc:Ignorable="d">
<UserControl.Resources>
<extendedControls:BindingProxy x:Key="proxy" Data="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=UserControl}}"/>
<extendedControls:BindingProxy x:Key="proxy" Data="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}}" />
</UserControl.Resources>
<Viewbox Stretch="Uniform">
<Canvas
@ -55,16 +55,38 @@
<!--<Image Source="Images/pm2.png" Visibility="{Binding HasWafer}" Canvas.Top="-40" Canvas.Left="27" />-->
<Image
Canvas.Left="8"
Canvas.Top="-17"
Width="70"
Canvas.Left="29"
Canvas.Top="-14"
Width="60"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Source="Images/pm52.png"
Visibility="{Binding HasTray}" />
<controls:WaferCtrl
Canvas.Left="22"
Canvas.Top="-3"
Width="42"
Height="42"
Canvas.Left="39"
Canvas.Top="-7"
Width="23"
Height="23"
HorizontalAlignment="Left"
VerticalAlignment="Center"
WaferData="{Binding Wafer1}" />
<controls:WaferCtrl
Canvas.Left="62"
Canvas.Top="1"
Width="23"
Height="23"
HorizontalAlignment="Center"
VerticalAlignment="Top"
WaferData="{Binding Wafer1}" />
<controls:WaferCtrl
Canvas.Left="42"
Canvas.Top="17"
Width="23"
Height="23"
HorizontalAlignment="Left"
VerticalAlignment="Center"
WaferData="{Binding Wafer1}" />
</Common:AxisCanvas>
@ -72,8 +94,8 @@
</Common:AxisCanvas>
<Canvas.RenderTransform>
<TransformGroup>
<RotateTransform Angle="{Binding Source={StaticResource proxy},Path=Data.RotateAngle,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}" CenterY="30" />
<TranslateTransform x:Name="translate" X="{Binding Source={StaticResource proxy},Path=Data.TranslateX,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}" />
<RotateTransform Angle="{Binding Source={StaticResource proxy}, Path=Data.RotateAngle, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" CenterY="30" />
<TranslateTransform x:Name="translate" X="{Binding Source={StaticResource proxy}, Path=Data.TranslateX, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" />
</TransformGroup>
</Canvas.RenderTransform>
<!--<Canvas.RenderTransform>

View File

@ -180,6 +180,38 @@ namespace SicUI.Controls.M2C4Parts
public static readonly DependencyProperty HasTrayProperty =
DependencyProperty.Register("HasTray", typeof(Visibility), typeof(AtmRobotMultiLP), new PropertyMetadata(Visibility.Hidden));
public RobotPosition RobotPointIntsMove
{
get { return (RobotPosition)GetValue(RobotPointIntsMoveProperty); }
set { SetValue(RobotPointIntsMoveProperty, value); }
}
public static readonly DependencyProperty RobotPointIntsMoveProperty =
DependencyProperty.Register("RobotPointIntsMove", typeof(RobotPosition), typeof(AtmRobotMultiLP), new FrameworkPropertyMetadata(null, PointMoveTest));
static void PointMoveTest(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var self = (AtmRobotMultiLP)d;
var robotPosition = (RobotPosition)e.NewValue;
var storyboard = new Storyboard();
var needRotate = new List<bool>();
needRotate.Add(self.canvas1.Rotate(storyboard, robotPosition.Root, true, self.MoveTime));
needRotate.Add(self.canvas2.Rotate(storyboard, robotPosition.Arm, true, self.MoveTime));
needRotate.Add(self.canvas3.Rotate(storyboard, robotPosition.Hand, true, self.MoveTime));
if (needRotate.Any(x => x))
storyboard.Begin();
}
private List<MenuItem> menu;
public event PropertyChangedEventHandler PropertyChanged;
@ -244,15 +276,22 @@ namespace SicUI.Controls.M2C4Parts
StartPosition= new RobotPosition()
{
Z=0,
Root = 99,
//Root = 120,
//Arm = -120,
//Hand = -120
Root = 100,
Arm = 240,
Hand = 240
Hand = -110
},
EndPosition= new RobotPosition()
{
Root = 239,
//Root = 238,
//Arm = 0,
//Hand = 360
Root =238,
Arm = 0,
Hand = 360
Hand = 0
}
}
@ -262,13 +301,13 @@ namespace SicUI.Controls.M2C4Parts
StartPosition= new RobotPosition()
{
Z=0,
Root = 10,
Arm = 194,
Hand = 99
Root = 60,
Arm = 120,
Hand = 130
},
EndPosition= new RobotPosition()
{
Root = -58,
Root = -54,
Arm = 360,
Hand = 0
}
@ -279,14 +318,14 @@ namespace SicUI.Controls.M2C4Parts
StartPosition= new RobotPosition()
{
Z=0,
Root = 80,
Arm = 190,
Hand = 100
Root = 5,
Arm = 240,
Hand = -110
},
EndPosition= new RobotPosition()
{
Root = 13,
Arm = 360,
Root = 137,
Arm = 0,
Hand = 0
}
}
@ -312,16 +351,20 @@ namespace SicUI.Controls.M2C4Parts
{
StartPosition= new RobotPosition()
{
//Z=0,
//Root =-80,
//Arm = 240,
//Hand = 240
Z=0,
Root =-45,
Arm = 240,
Hand = 240
Root=170,
Arm=120,
Hand=120
},
EndPosition= new RobotPosition()
{
Root = 90,
Arm = 0,
Hand = 360
Root = 47,
Arm = 360,
Hand = 0
}
}
},

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

After

Width:  |  Height:  |  Size: 21 KiB

View File

@ -43,7 +43,6 @@
Canvas.Left="341.166"
Canvas.Top="327.333"
Source="Images/tm3.png" />
<Canvas Visibility="{Binding IsPM1Installed, Converter={StaticResource BoolVisibilityConverter}}">
<Image
Canvas.Left="198"
@ -160,7 +159,7 @@
Canvas.Left="349"
Canvas.Top="316"
Width="550"
Height="80"
Height="70"
HasTray="{Binding TMRobotHaveTray}"
HasWafer="{Binding IsArmWater}"
IsEnabled="{Binding EnableWaferClick}"
@ -199,9 +198,11 @@
<Canvas Visibility="{Binding IsLoadLockInstalled, Converter={StaticResource BoolVisibilityConverter}}">
<Image
Canvas.Left="330"
Canvas.Top="158"
Width="95"
Canvas.Left="338"
Canvas.Top="166"
Width="80"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Source="Images/pm52.png"
Visibility="{Binding LoadLockHaveTray}" />
</Canvas>
@ -359,26 +360,51 @@
<!-- 石墨盘和Wafer -->
<Canvas Visibility="{Binding IsPM1Installed, Converter={StaticResource BoolVisibilityConverter}}">
<Image
Canvas.Left="239"
Canvas.Top="164"
Width="96"
Canvas.Left="247"
Canvas.Top="172"
Width="80"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Source="Images/pm52.png"
Visibility="{Binding PM1HaveTray}" />
<controls:WaferCtrl
Canvas.Left="258"
Canvas.Top="183"
Width="60"
Height="60"
IsEnabled="{Binding PM1EnableWaferClick}"
Canvas.Left="261"
Canvas.Top="182"
Width="30"
Height="30"
IsEnabled="{Binding EnableWaferClick}"
IsRotary="{Binding IsPm1WaferRotary}"
ToolTipService.ShowOnDisabled="True"
WaferData="{Binding PM1Wafer}" />
<controls:WaferCtrl
Canvas.Left="291"
Canvas.Top="192"
Width="30"
Height="30"
IsEnabled="{Binding EnableWaferClick}"
IsRotary="{Binding IsPm1WaferRotary}"
ToolTipService.ShowOnDisabled="True"
WaferData="{Binding PM1Wafer}" />
<controls:WaferCtrl
Canvas.Left="265"
Canvas.Top="214"
Width="30"
Height="30"
IsEnabled="{Binding EnableWaferClick}"
IsRotary="{Binding IsPm1WaferRotary}"
ToolTipService.ShowOnDisabled="True"
WaferData="{Binding PM1Wafer}" />
</Canvas>
<Canvas Visibility="{Binding IsPM2Installed, Converter={StaticResource BoolVisibilityConverter}}">
<Image
Canvas.Left="420"
Canvas.Top="165"
Width="96"
Canvas.Left="428"
Canvas.Top="173"
Width="80"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Source="Images/pm52.png"
Visibility="{Binding PM2HaveTray}" />
<controls:WaferCtrl
@ -393,14 +419,17 @@
</Canvas>
<Canvas Visibility="{Binding IsUnLoadInstalled, Converter={StaticResource BoolVisibilityConverter}}">
<Image
Canvas.Left="176"
Canvas.Top="340"
Width="95"
Canvas.Left="184"
Canvas.Top="348"
Width="80"
HorizontalAlignment="Center"
VerticalAlignment="Top"
Source="Images/pm52.png"
Visibility="{Binding UnLoadHaveTray}" />
<controls:WaferCtrl
Canvas.Left="194"
Canvas.Left="198"
Canvas.Top="358"
Width="60"
Height="60"
IsEnabled="{Binding UnLoadEnableWaferClick}"
@ -410,11 +439,48 @@
<Canvas Visibility="{Binding IsLoadLockInstalled, Converter={StaticResource BoolVisibilityConverter}}">
<!--<Image Source="Images/pm52.png" Canvas.Left="330" Canvas.Top="458" Visibility="{Binding LoadLockHaveTray}" Width="95"/>-->
<controls:WaferCtrl
Canvas.Left="348"
Canvas.Left="228"
Canvas.Top="368"
Width="30"
Height="30"
IsEnabled="{Binding EnableWaferClick}"
ToolTipService.ShowOnDisabled="True"
WaferData="{Binding UnLoadWafer}" />
<controls:WaferCtrl
Canvas.Left="202"
Canvas.Top="390"
Width="30"
Height="30"
IsEnabled="{Binding EnableWaferClick}"
ToolTipService.ShowOnDisabled="True"
WaferData="{Binding UnLoadWafer}" />
</Canvas>
<Canvas Visibility="{Binding IsLLInstalled, Converter={StaticResource BoolVisibilityConverter}}">
<controls:WaferCtrl
Canvas.Left="352"
Canvas.Top="476"
Width="60"
Height="60"
IsEnabled="{Binding LoadLockEnableWaferClick}"
Width="30"
Height="30"
IsEnabled="{Binding EnableWaferClick}"
ToolTipService.ShowOnDisabled="True"
WaferData="{Binding LoadLockWafer}" />
<controls:WaferCtrl
Canvas.Left="382"
Canvas.Top="486"
Width="30"
Height="30"
IsEnabled="{Binding EnableWaferClick}"
ToolTipService.ShowOnDisabled="True"
WaferData="{Binding LoadLockWafer}" />
<controls:WaferCtrl
Canvas.Left="356"
Canvas.Top="508"
Width="30"
Height="30"
IsEnabled="{Binding EnableWaferClick}"
ToolTipService.ShowOnDisabled="True"
WaferData="{Binding LoadLockWafer}" />
</Canvas>

View File

@ -14,98 +14,156 @@
x:Name="root"
Height="800"
VerticalAlignment="Top">
<Canvas Margin="0,45.333,0,26.667">
<Canvas Margin="-47,52,47,20">
<!--TM-->
<Image
Canvas.Left="254"
Canvas.Top="233"
Source="Images/tm1.png" />
<Image
Canvas.Left="341.166"
Canvas.Top="327.333"
Source="Images/tm3.png" />
Canvas.Left="253"
Canvas.Top="236"
Height="250"
Width="250"
Source="Images/tm4.png" />
<!--PM1-->
<Canvas Visibility="{Binding IsPM1Installed, Converter={StaticResource BoolVisibilityConverter}}">
<Image
Canvas.Left="198"
Canvas.Top="121"
Canvas.Left="189"
Canvas.Top="141"
Width="160"
Source="Images/pmbg51.png">
Source="Images/pmbg51.png" HorizontalAlignment="Center" VerticalAlignment="Top">
<Image.RenderTransform>
<TransformGroup>
<ScaleTransform />
<SkewTransform />
<RotateTransform Angle="0.43" />
<TranslateTransform />
<RotateTransform Angle="-5.5" />
</TransformGroup>
</Image.RenderTransform>
</Image>
<unitControls:Door
Canvas.Left="273"
Canvas.Top="264"
Canvas.Left="278"
Canvas.Top="272"
Width="90"
Height="8"
Height="9"
IsDoorOpen="{Binding IsPM1DoorOpen}"
RenderTransformOrigin="0.5,0.5">
RenderTransformOrigin="0.5,0.5" HorizontalAlignment="Center" VerticalAlignment="Top">
<unitControls:Door.RenderTransform>
<TransformGroup>
<ScaleTransform />
<SkewTransform />
<RotateTransform Angle="-30.127" />
<RotateTransform Angle="-36" />
<TranslateTransform />
</TransformGroup>
</unitControls:Door.RenderTransform>
</unitControls:Door>
<!--Tray和晶圆-->
<Canvas Visibility="{Binding IsPM1Installed, Converter={StaticResource BoolVisibilityConverter}}">
<Image
Canvas.Left="248"
Canvas.Top="182"
Width="80"
Source="Images/pm52.png"
Visibility="{Binding PM1HaveTray}" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<controls:WaferCtrl
Canvas.Left="262"
Canvas.Top="192"
Width="30"
Height="30"
IsEnabled="{Binding EnableWaferClick}"
IsRotary="{Binding IsPm1WaferRotary}"
WaferData="{Binding PM1Wafer}" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<controls:WaferCtrl
Canvas.Left="292"
Canvas.Top="202"
Width="30"
Height="30"
IsEnabled="{Binding EnableWaferClick}"
IsRotary="{Binding IsPm1WaferRotary}"
WaferData="{Binding PM1Wafer}" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<controls:WaferCtrl
Canvas.Left="266"
Canvas.Top="224"
Width="30"
Height="30"
IsEnabled="{Binding EnableWaferClick}"
IsRotary="{Binding IsPm1WaferRotary}"
WaferData="{Binding PM1Wafer}" HorizontalAlignment="Center" VerticalAlignment="Top"/>
</Canvas>
</Canvas>
<!--PM2-->
<Canvas Visibility="{Binding IsPM2Installed, Converter={StaticResource BoolVisibilityConverter}}">
<Image
Canvas.Left="398"
Canvas.Top="123"
Canvas.Left="410"
Canvas.Top="129"
Width="160"
Source="Images/pmbg41.png">
Source="Images/pmbg41.png" HorizontalAlignment="Center" VerticalAlignment="Top">
<Image.RenderTransform>
<TransformGroup>
<ScaleTransform />
<SkewTransform />
<RotateTransform Angle="0.535" />
<RotateTransform Angle="5.5" />
<TranslateTransform />
</TransformGroup>
</Image.RenderTransform>
</Image>
<unitControls:Door
Canvas.Left="390"
Canvas.Top="267"
Canvas.Left="389"
Canvas.Top="274"
Width="90"
Height="8"
IsDoorOpen="{Binding IsPM2DoorOpen}"
RenderTransformOrigin="0.5,0.5">
RenderTransformOrigin="0.5,0.5" HorizontalAlignment="Center" VerticalAlignment="Top">
<unitControls:Door.RenderTransform>
<TransformGroup>
<ScaleTransform />
<SkewTransform />
<RotateTransform Angle="30.086" />
<RotateTransform Angle="35.8" />
<TranslateTransform />
</TransformGroup>
</unitControls:Door.RenderTransform>
</unitControls:Door>
<!--Tray和晶圆-->
<Canvas Visibility="{Binding IsPM2Installed, Converter={StaticResource BoolVisibilityConverter}}">
<Image
Canvas.Left="431"
Canvas.Top="185"
Width="80"
Source="Images/pm52.png"
Visibility="{Binding PM2HaveTray}" HorizontalAlignment="Left" VerticalAlignment="Center" />
<controls:WaferCtrl
Canvas.Left="444"
Canvas.Top="195"
Width="30"
Height="30"
IsEnabled="{Binding EnableWaferClick}"
IsRotary="{Binding IsPm2WaferRotary}"
WaferData="{Binding PM2Wafer}" HorizontalAlignment="Left" VerticalAlignment="Center" />
</Canvas>
</Canvas>
<Canvas Visibility="{Binding IsUnLoadInstalled, Converter={StaticResource BoolVisibilityConverter}}">
<!--Lod-->
<Canvas Visibility="{Binding IsLLInstalled, Converter={StaticResource BoolVisibilityConverter}}">
<unitControls:Door
Canvas.Left="404"
Canvas.Top="427"
Width="83"
Height="9"
IsDoorOpen="{Binding IsLLDoorOpen}"
RenderTransformOrigin="0.5,0.5" HorizontalAlignment="Center" VerticalAlignment="Top">
<unitControls:Door.RenderTransform>
<TransformGroup>
<RotateTransform Angle="-46" />
</TransformGroup>
</unitControls:Door.RenderTransform>
</unitControls:Door>
<Image
Canvas.Left="174"
Canvas.Top="339"
RenderTransformOrigin="0.5,0.5"
Source="Images/wf.png">
Canvas.Left="406"
Canvas.Top="470"
Source="Images/wf.png" Height="126" Width="110" HorizontalAlignment="Center" VerticalAlignment="Top">
<Image.RenderTransform>
<TransformGroup>
<ScaleTransform />
<SkewTransform />
<RotateTransform Angle="-13.5" />
<TranslateTransform />
<RotateTransform Angle="-46" />
</TransformGroup>
</Image.RenderTransform>
</Image>
<unitControls:Door
<!--<unitControls:Door
Canvas.Left="232"
Canvas.Top="372"
Width="82"
@ -120,73 +178,99 @@
<TranslateTransform />
</TransformGroup>
</unitControls:Door.RenderTransform>
</unitControls:Door>
</unitControls:Door>-->
</Canvas>
<Canvas Visibility="{Binding IsLoadLockInstalled, Converter={StaticResource BoolVisibilityConverter}}">
<unitControls:Door
<!--<unitControls:Door
Canvas.Left="336"
Canvas.Top="455"
Width="83"
Height="8"
IsDoorOpen="{Binding IsLLDoorOpen}"
RenderTransformOrigin="0.5,0.5" />
<Image
RenderTransformOrigin="0.5,0.5" />-->
<!--<Image
Canvas.Left="327"
Canvas.Top="458"
Source="Images/wf.png" />
Source="Images/wf.png" />-->
<!--Tray和晶圆-->
<Canvas Visibility="{Binding IsLLInstalled, Converter={StaticResource BoolVisibilityConverter}}">
<Image
Canvas.Left="450"
Canvas.Top="436"
Width="80"
Source="Images/pm52.png"
Visibility="{Binding LoadLockHaveTray}" HorizontalAlignment="Left" VerticalAlignment="Center" />
<controls:WaferCtrl
Canvas.Left="464"
Canvas.Top="446"
Width="30"
Height="30"
IsEnabled="{Binding EnableWaferClick}"
WaferData="{Binding LoadLockWafer}" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<controls:WaferCtrl
Canvas.Left="494"
Canvas.Top="456"
Width="30"
Height="30"
IsEnabled="{Binding EnableWaferClick}"
WaferData="{Binding LoadLockWafer}" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<controls:WaferCtrl
Canvas.Left="468"
Canvas.Top="478"
Width="30"
Height="30"
IsEnabled="{Binding EnableWaferClick}"
WaferData="{Binding LoadLockWafer}" HorizontalAlignment="Left" VerticalAlignment="Center"/>
</Canvas>
</Canvas>
<local:AtmRobotMultiLP
Canvas.Left="349"
Canvas.Top="316"
Canvas.Left="353"
Canvas.Top="317"
Width="550"
Height="80"
HasTray="{Binding TMRobotHaveTray}"
HasWafer="{Binding IsArmWater}"
RobotPointIntsMove="{Binding TmRobotPointIntsMove}"
RobotMoveInfo="{Binding TmRobotMoveInfo}"
ShowDock="False"
Wafer1="{Binding TMRobotWafer1}" />
Wafer1="{Binding TMRobotWafer1}" HorizontalAlignment="Center" VerticalAlignment="Top" />
<!--Buffer-->
<Canvas Visibility="{Binding IsBufferInstalled, Converter={StaticResource BoolVisibilityConverter}}">
<Image
Canvas.Left="466"
Canvas.Top="343"
Canvas.Left="212"
Canvas.Top="407"
RenderTransformOrigin="0.5,0.5"
Source="Images/Layout09.png">
Source="Images/Buffer.png" HorizontalAlignment="Left" VerticalAlignment="Top" Height="120" Width="100">
<Image.RenderTransform>
<TransformGroup>
<ScaleTransform />
<SkewTransform />
<RotateTransform Angle="106" />
<TranslateTransform />
<RotateTransform Angle="45" />
</TransformGroup>
</Image.RenderTransform>
</Image>
<unitControls:Door
Canvas.Left="435"
Canvas.Top="377"
Canvas.Left="266"
Canvas.Top="422"
Width="82"
Height="8"
Height="9"
IsDoorOpen="{Binding IsBufferDoorOpen}"
RenderTransformOrigin="0.5,0.5">
RenderTransformOrigin="0.5,0.5" HorizontalAlignment="Center" VerticalAlignment="Top">
<unitControls:Door.RenderTransform>
<TransformGroup>
<ScaleTransform />
<SkewTransform />
<RotateTransform Angle="106.127" />
<TranslateTransform />
<RotateTransform Angle="45" />
</TransformGroup>
</unitControls:Door.RenderTransform>
</unitControls:Door>
</Canvas>
<Canvas Visibility="{Binding IsPM1Installed, Converter={StaticResource BoolVisibilityConverter}}">
<Image
<!--<Image
Canvas.Left="239"
Canvas.Top="164"
Width="96"
Source="Images/pm52.png"
Visibility="{Binding PM1HaveTray}" />
Visibility="{Binding PM1HaveTray}" />-->
<controls:WaferCtrl
Canvas.Left="258"
Canvas.Top="183"
@ -197,12 +281,12 @@
WaferData="{Binding PM1Wafer}" />
</Canvas>
<Canvas Visibility="{Binding IsPM2Installed, Converter={StaticResource BoolVisibilityConverter}}">
<Image
<!--<Image
Canvas.Left="420"
Canvas.Top="165"
Width="96"
Source="Images/pm52.png"
Visibility="{Binding PM2HaveTray}" />
Visibility="{Binding PM2HaveTray}" />-->
<controls:WaferCtrl
Canvas.Left="439"
Canvas.Top="184"
@ -212,7 +296,7 @@
IsRotary="{Binding IsPm2WaferRotary}"
WaferData="{Binding PM2Wafer}" />
</Canvas>
<Canvas Visibility="{Binding IsUnLoadInstalled, Converter={StaticResource BoolVisibilityConverter}}">
<!--<Canvas Visibility="{Binding IsUnLoadInstalled, Converter={StaticResource BoolVisibilityConverter}}">
<Image
Canvas.Left="176"
Canvas.Top="340"
@ -226,8 +310,8 @@
Height="60"
IsEnabled="{Binding UnLoadEnableWaferClick}"
WaferData="{Binding UnLoadWafer}" />
</Canvas>
<Canvas Visibility="{Binding IsLoadLockInstalled, Converter={StaticResource BoolVisibilityConverter}}">
</Canvas>-->
<!--<Canvas Visibility="{Binding IsLoadLockInstalled, Converter={StaticResource BoolVisibilityConverter}}">
<Image
Canvas.Left="330"
Canvas.Top="459"
@ -241,7 +325,10 @@
Height="60"
IsEnabled="{Binding LoadLockEnableWaferClick}"
WaferData="{Binding LoadLockWafer}" />
</Canvas>
</Canvas>-->
</Canvas>
</Grid>
</UserControl>

View File

@ -5,14 +5,14 @@
xmlns:Common="clr-namespace:SicUI.Controls.Common"
xmlns:controls="clr-namespace:SicUI.Controls"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:SicUI.Controls.M2C4Parts"
xmlns:extendedControls="clr-namespace:MECF.Framework.UI.Core.ExtendedControls;assembly=MECF.Framework.UI.Core"
xmlns:local="clr-namespace:SicUI.Controls.M2C4Parts"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
d:DesignHeight="38"
d:DesignWidth="416"
mc:Ignorable="d">
<UserControl.Resources>
<extendedControls:BindingProxy x:Key="proxy" Data="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=UserControl}}"/>
<extendedControls:BindingProxy x:Key="proxy" Data="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}}" />
</UserControl.Resources>
<Viewbox Stretch="Uniform">
<Canvas
@ -64,8 +64,8 @@
</Common:AxisCanvas>
<Canvas.RenderTransform>
<TransformGroup>
<RotateTransform Angle="{Binding Source={StaticResource proxy},Path=Data.RotateAngle}" CenterY="30" />
<TranslateTransform x:Name="translate" X="{Binding Source={StaticResource proxy},Path=Data.TranslateX}" />
<RotateTransform Angle="{Binding Source={StaticResource proxy}, Path=Data.RotateAngle}" CenterY="30" />
<TranslateTransform x:Name="translate" X="{Binding Source={StaticResource proxy}, Path=Data.TranslateX}" />
</TransformGroup>
</Canvas.RenderTransform>
</Canvas>

View File

@ -20,9 +20,11 @@ namespace SicUI.Controls.M2C4Parts
private int moveTime = 300;
private const int AnimationTimeout = 3000; // ms
private string _currentPosition;
private string CurrentPosition
{
get; set;
get { return _currentPosition; }
set { _currentPosition = value; }
}
private RobotAction CurrentAction

View File

@ -5,14 +5,14 @@
xmlns:Common="clr-namespace:SicUI.Controls.Common"
xmlns:controls="clr-namespace:SicUI.Controls"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:SicUI.Controls.M2C4Parts"
xmlns:extendedControls="clr-namespace:MECF.Framework.UI.Core.ExtendedControls;assembly=MECF.Framework.UI.Core"
xmlns:local="clr-namespace:SicUI.Controls.M2C4Parts"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
d:DesignHeight="38"
d:DesignWidth="416"
mc:Ignorable="d">
<UserControl.Resources>
<extendedControls:BindingProxy x:Key="proxy" Data="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=UserControl}}"/>
<extendedControls:BindingProxy x:Key="proxy" Data="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}}" />
</UserControl.Resources>
<Viewbox Stretch="Uniform">
<Canvas
@ -65,8 +65,8 @@
</Common:AxisCanvas>
<Canvas.RenderTransform>
<TransformGroup>
<RotateTransform Angle="{Binding Source={StaticResource proxy},Path=Data.RotateAngle}" CenterY="30" />
<TranslateTransform x:Name="translate" X="{Binding Source={StaticResource proxy},Path=Data.TranslateX}" />
<RotateTransform Angle="{Binding Source={StaticResource proxy}, Path=Data.RotateAngle}" CenterY="30" />
<TranslateTransform x:Name="translate" X="{Binding Source={StaticResource proxy}, Path=Data.TranslateX}" />
</TransformGroup>
</Canvas.RenderTransform>
</Canvas>

View File

@ -1612,6 +1612,19 @@
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
<Button
Width="80"
Height="25"
Margin="10,0"
Content="Test1"
>
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<cal:ActionMessage MethodName="Test"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
</StackPanel>
</Border>
@ -1678,6 +1691,20 @@
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
<Button
Width="80"
Height="25"
Margin="10,0"
HorizontalAlignment="Left"
Content="Test2"
IsEnabled="{Binding IsUnLoadEnableManualOperation}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<cal:ActionMessage MethodName="Test2" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
</StackPanel>
</Border>
@ -1749,6 +1776,20 @@
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
<Button
Width="80"
Height="24"
Margin="10,0"
HorizontalAlignment="Left"
Content="Test3"
IsEnabled="{Binding IsUnLoadEnableManualOperation}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<cal:ActionMessage MethodName="Test3" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
</StackPanel>
</Border>

View File

@ -274,13 +274,42 @@ namespace SicUI.Models.Maintenances.TM
set;
}
[Subscription("TrayRobot.RobotMoveInfo")]
//[Subscription("TrayRobot.RobotMoveInfo")]
public RobotMoveInfo TrayRobotMoveInfo
{
get;
set;
}
public void Test()
{
TrayRobotMoveInfo = new RobotMoveInfo()
{
Action = RobotAction.Moving,
ArmTarget = RobotArm.ArmA,
BladeTarget = "CassBL",
};
}
public void Test2()
{
TrayRobotMoveInfo = new RobotMoveInfo()
{
Action = RobotAction.Picking,
ArmTarget = RobotArm.ArmA,
BladeTarget = "ArmA.CassBL",
};
}
public void Test3()
{
TrayRobotMoveInfo = new RobotMoveInfo()
{
Action = RobotAction.Picking,
ArmTarget = RobotArm.ArmA,
BladeTarget = "LoadLock",
};
}
[Subscription("WaferRobot.State")]
public string WaferRobotState { get; set; }

View File

@ -359,13 +359,103 @@
HorizontalAlignment="Center"
VerticalAlignment="Top">
<parts:M2C4EFEMView
<parts:M2C4EFEMView2
x:Name="system"
Canvas.Left="300"
Canvas.Top="2"
Width="770"
Height="698" />
<StackPanel Canvas.Left="729" Canvas.Top="10">
<Button Margin="5" Content="PM1">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<cal:ActionMessage MethodName="Storyboard">
<cal:Parameter Value="ArmA.PM1" />
</cal:ActionMessage>
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
<Button Margin="5" Content="PM2">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<cal:ActionMessage MethodName="Storyboard">
<cal:Parameter Value="ArmA.PM2" />
</cal:ActionMessage>
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
<Button Margin="5" Content="TM">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<cal:ActionMessage MethodName="Storyboard">
<cal:Parameter Value="ArmA.System" />
</cal:ActionMessage>
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
<Button Margin="5" Content="Buffer">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<cal:ActionMessage MethodName="Storyboard">
<cal:Parameter Value="ArmA.Buffer" />
</cal:ActionMessage>
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
<Button Margin="5" Content="Load">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<cal:ActionMessage MethodName="Storyboard">
<cal:Parameter Value="ArmA.LoadLock" />
</cal:ActionMessage>
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
<Button Margin="5" Content="Auto">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<cal:ActionMessage MethodName="AutoStart"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
<CheckBox IsChecked="{Binding IsPick}">
</CheckBox>
</StackPanel>
<StackPanel
Canvas.Left="550"
Canvas.Top="15"
HorizontalAlignment="Center"
VerticalAlignment="Top">
<StackPanel Orientation="Horizontal">
<TextBox
Width="50"
Margin="3"
Text="{Binding r1, UpdateSourceTrigger=PropertyChanged}" />
<TextBox
Width="50"
Margin="3"
Text="{Binding r2, UpdateSourceTrigger=PropertyChanged}" />
<TextBox
Width="50"
Margin="3"
Text="{Binding r3, UpdateSourceTrigger=PropertyChanged}" />
</StackPanel>
<Button
Width="90"
Margin="5,20"
HorizontalAlignment="Left"
Content="MovePoint">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<cal:ActionMessage MethodName="MovePoint" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
</StackPanel>
<Grid
x:Name="PM1_Info"
Canvas.Left="87"

View File

@ -19,6 +19,12 @@ using Caliburn.Micro.Core;
using MECF.Framework.Common.Account.Permissions;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.Window;
using Aitex.Core.RT.SCCore;
using System.Xml.Linq;
using System.Threading.Tasks;
using MECF.Framework.Common.SubstrateTrackings;
using MECF.Framework.Common.Equipment;
using SicUI.Controls.Common;
namespace SicUI.Models.Operations.Overviews
{
@ -93,7 +99,7 @@ namespace SicUI.Models.Operations.Overviews
#region Mainframe
[Subscription("TMRobot.RobotMoveInfo")]
//[Subscription("TMRobot.RobotMoveInfo")]
public RobotMoveInfo TmRobotMoveInfo
{
get;
@ -422,7 +428,7 @@ namespace SicUI.Models.Operations.Overviews
{
get
{
if(UnLoadLiftUpSensor && !UnLoadLiftDownSensor)
if (UnLoadLiftUpSensor && !UnLoadLiftDownSensor)
{
return "Up";
}
@ -469,7 +475,7 @@ namespace SicUI.Models.Operations.Overviews
[Subscription("UnLoad.UnLoadWaferClaw.State")]
public string UnLoadWaferClaw { get; set; }
//
#endregion
@ -676,7 +682,7 @@ namespace SicUI.Models.Operations.Overviews
[Subscription("Scheduler.TimeBuffer2")]
public string TimeBuffer2 { get; set; }
public double sTimeBuffer2 => TimeBuffer2 == null || TimeBuffer2.Length == 0 ? 0: Double.Parse(TimeBuffer2);
public double sTimeBuffer2 => TimeBuffer2 == null || TimeBuffer2.Length == 0 ? 0 : Double.Parse(TimeBuffer2);
[Subscription("Scheduler.TimeBuffer3")]
public string TimeBuffer3 { get; set; }
@ -749,6 +755,67 @@ namespace SicUI.Models.Operations.Overviews
#endregion
#region
public int r1 { get; set; }
public int r2 { get; set; }
public int r3 { get; set; }
public RobotPosition TmRobotPointIntsMove { get; set; }
public void MovePoint()
{
TmRobotPointIntsMove = new RobotPosition()
{
Z = 0,
Root = r1,
Arm = r2,
Hand = r3
};
}
public bool IsPick { get; set; }
public void Storyboard(string toName)
{
TmRobotMoveInfo = new RobotMoveInfo()
{
Action = IsPick ? RobotAction.Picking : RobotAction.Moving,
ArmTarget = RobotArm.ArmA,
BladeTarget = toName,
};
}
AutoTransfer autoTransferPM1 = new AutoTransfer("PM1");
public void AutoStart()
{
Task.Run(() =>
{
foreach (var moduleAutoTransfer in autoTransferPM1.moduleAutoTransfers)
{
foreach (var moduleAuto in moduleAutoTransfer.AutoTransferList)
{
System.Threading.Thread.Sleep(1000);
TmRobotMoveInfo = new RobotMoveInfo()
{
Action = moduleAuto.robotAction,
ArmTarget = RobotArm.ArmA,
BladeTarget = moduleAuto.Module,
};
//if (moduleAuto.robotAction== RobotAction.Picking || moduleAuto.robotAction == RobotAction.Placing)
// WaferManager.Instance.TrayMoved(moduleAutoTransfer.FromName, 1, moduleAutoTransfer.ToName, 1);
}
}
});
}
#endregion
public OverViewViewModel()
{
this.DisplayName = "OverViewViewModel";
@ -1315,4 +1382,55 @@ namespace SicUI.Models.Operations.Overviews
}
public class AutoTransfer
{
public AutoTransfer(string pmName)
{
moduleAutoTransfers = new List<ModuleAutoTransfer>()
{
new ModuleAutoTransfer(ModuleName.LoadLock,ModuleName.TMRobot,"ArmA.LoadLock",RobotAction.Picking),
new ModuleAutoTransfer(),
new ModuleAutoTransfer(ModuleName.TMRobot,ModuleName.PM1,$"ArmA.{pmName}"),
new ModuleAutoTransfer(),
new ModuleAutoTransfer(ModuleName.PM1,ModuleName.Buffer,"ArmA.Buffer"),
new ModuleAutoTransfer(),
new ModuleAutoTransfer(ModuleName.TMRobot,ModuleName.Buffer,"ArmA.Buffer"),
new ModuleAutoTransfer(),
new ModuleAutoTransfer(ModuleName.Buffer,ModuleName.TMRobot,"ArmA.LoadLock"),
};
}
public List<ModuleAutoTransfer> moduleAutoTransfers { get;set; }
}
public class ModuleAutoTransfer
{
public ModuleName FromName { get;set; }
public ModuleName ToName { get;set; }
public List<ModuleAuto> AutoTransferList { get; set; }
public ModuleAutoTransfer()
{
AutoTransferList=new List<ModuleAuto>() { new ModuleAuto() { Module = "ArmA.System" }, };
}
public ModuleAutoTransfer(ModuleName fromName , ModuleName toName , string locationName, RobotAction robotAction = RobotAction.Placing)
{
FromName = fromName;
ToName = toName;
AutoTransferList = new List<ModuleAuto>()
{
new ModuleAuto() {Module=locationName},
new ModuleAuto() {Module=locationName,robotAction= robotAction},
new ModuleAuto() {Module=locationName},
};
}
}
public class ModuleAuto
{
public string Module { get; set; }
public RobotAction robotAction { get; set; } = RobotAction.Moving;
}
}

View File

@ -918,6 +918,10 @@ if exist "$(ProjectDir)..\SicSetup\Packages\SicUI\PresetGroups" rd "$(ProjectDir
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\Images\find.png" />
<Resource Include="Controls\Mainframe\Images\tm4.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Controls\Mainframe\Images\Buffer.png" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>