CNC 运行日志、导出字段顺序、以及参考点/保存点同步适配
This commit is contained in:
@@ -103,6 +103,63 @@ namespace XplorePlane.Services.Cnc
|
||||
{
|
||||
switch (node)
|
||||
{
|
||||
case ReferencePointNode rp:
|
||||
_logger.ForModule<CncExecutionService>().Info(
|
||||
"执行参考点节点 [{Index}] {Name} | " +
|
||||
"StageX={StageX} StageY={StageY} SourceZ={SourceZ} DetectorZ={DetectorZ} " +
|
||||
"DetectorSwing={DetectorSwing} FDD={FDD} FOD={FOD} Magnification={Magnification} " +
|
||||
"StageRotation={StageRotation} FixtureRotation={FixtureRotation} " +
|
||||
"RayOn={RayOn} Voltage={Voltage}kV Current={Current}uA",
|
||||
rp.Index, rp.Name,
|
||||
rp.StageX, rp.StageY, rp.SourceZ, rp.DetectorZ,
|
||||
rp.DetectorSwing, rp.FDD, rp.FOD, rp.Magnification,
|
||||
rp.StageRotation, rp.FixtureRotation,
|
||||
rp.IsRayOn, rp.Voltage, rp.Current);
|
||||
break;
|
||||
|
||||
case SavePositionNode sp:
|
||||
_logger.ForModule<CncExecutionService>().Info(
|
||||
"执行保存位置节点 [{Index}] {Name} | " +
|
||||
"StageX={StageX} StageY={StageY} SourceZ={SourceZ} DetectorZ={DetectorZ} " +
|
||||
"DetectorSwing={DetectorSwing} FDD={FDD} FOD={FOD} Magnification={Magnification} " +
|
||||
"StageRotation={StageRotation} FixtureRotation={FixtureRotation}",
|
||||
sp.Index, sp.Name,
|
||||
sp.MotionState.StageX, sp.MotionState.StageY,
|
||||
sp.MotionState.SourceZ, sp.MotionState.DetectorZ,
|
||||
sp.MotionState.DetectorSwing, sp.MotionState.FDD,
|
||||
sp.MotionState.FOD, sp.MotionState.Magnification,
|
||||
sp.MotionState.StageRotation, sp.MotionState.FixtureRotation);
|
||||
break;
|
||||
|
||||
case SaveNodeNode sn:
|
||||
_logger.ForModule<CncExecutionService>().Info(
|
||||
"执行保存节点 [{Index}] {Name} | " +
|
||||
"StageX={StageX} StageY={StageY} SourceZ={SourceZ} DetectorZ={DetectorZ} " +
|
||||
"DetectorSwing={DetectorSwing} FDD={FDD} FOD={FOD} Magnification={Magnification} " +
|
||||
"RayOn={RayOn} Voltage={Voltage}kV Power={Power}W",
|
||||
sn.Index, sn.Name,
|
||||
sn.MotionState.StageX, sn.MotionState.StageY,
|
||||
sn.MotionState.SourceZ, sn.MotionState.DetectorZ,
|
||||
sn.MotionState.DetectorSwing, sn.MotionState.FDD,
|
||||
sn.MotionState.FOD, sn.MotionState.Magnification,
|
||||
sn.RaySourceState.IsOn, sn.RaySourceState.Voltage, sn.RaySourceState.Power);
|
||||
break;
|
||||
|
||||
case SaveNodeWithImageNode sni:
|
||||
_logger.ForModule<CncExecutionService>().Info(
|
||||
"执行保存节点(图像) [{Index}] {Name} | " +
|
||||
"StageX={StageX} StageY={StageY} SourceZ={SourceZ} DetectorZ={DetectorZ} " +
|
||||
"DetectorSwing={DetectorSwing} FDD={FDD} FOD={FOD} Magnification={Magnification} " +
|
||||
"RayOn={RayOn} Voltage={Voltage}kV Power={Power}W ImageFile={ImageFile}",
|
||||
sni.Index, sni.Name,
|
||||
sni.MotionState.StageX, sni.MotionState.StageY,
|
||||
sni.MotionState.SourceZ, sni.MotionState.DetectorZ,
|
||||
sni.MotionState.DetectorSwing, sni.MotionState.FDD,
|
||||
sni.MotionState.FOD, sni.MotionState.Magnification,
|
||||
sni.RaySourceState.IsOn, sni.RaySourceState.Voltage, sni.RaySourceState.Power,
|
||||
sni.ImageFileName);
|
||||
break;
|
||||
|
||||
case WaitDelayNode waitNode:
|
||||
try
|
||||
{
|
||||
|
||||
@@ -408,7 +408,7 @@ namespace XplorePlane.Services.Cnc
|
||||
private SaveNodeWithImageNode CreateSaveNodeWithImageNode(Guid id, int index)
|
||||
{
|
||||
return new SaveNodeWithImageNode(
|
||||
id, index, $"保存节点(图像)_{index}",
|
||||
id, index, $"保存节点_图像_{index}",
|
||||
MotionState: _appStateService.MotionState,
|
||||
RaySourceState: _appStateService.RaySourceState,
|
||||
DetectorState: _appStateService.DetectorState,
|
||||
|
||||
@@ -417,7 +417,7 @@ namespace XplorePlane.ViewModels.Cnc
|
||||
return;
|
||||
|
||||
var sb = new StringBuilder();
|
||||
sb.AppendLine("Index,NodeType,Name,StageX,StageY,SourceZ,DetectorZ,DetectorSwing,StageRotation,FixtureRotation,FOD,FDD,Magnification,Voltage_kV,Current_uA,Power_W,RayOn,DetectorConnected,FrameRate,Resolution,ImageFile,MarkerType,MarkerX,MarkerY,DialogTitle,DialogMessage,DelayMs,Pipeline");
|
||||
sb.AppendLine("Index,NodeType,Name,SourceZ,DetectorZ,StageX,StageY,DetectorSwing,StageRotation,FixtureRotation,FOD,FDD,Magnification,Voltage_kV,Current_uA,Power_W,RayOn,DetectorConnected,FrameRate,Resolution,ImageFile,MarkerType,MarkerX,MarkerY,DialogTitle,DialogMessage,DelayMs,Pipeline");
|
||||
|
||||
var inv = CultureInfo.InvariantCulture;
|
||||
|
||||
@@ -425,10 +425,10 @@ namespace XplorePlane.ViewModels.Cnc
|
||||
{
|
||||
var row = node switch
|
||||
{
|
||||
ReferencePointNode rp => $"{rp.Index},{rp.NodeType},{Esc(rp.Name)},{rp.StageX.ToString(inv)},{rp.StageY.ToString(inv)},{rp.SourceZ.ToString(inv)},{rp.DetectorZ.ToString(inv)},{rp.DetectorSwing.ToString(inv)},{rp.StageRotation.ToString(inv)},{rp.FixtureRotation.ToString(inv)},{rp.FOD.ToString(inv)},{rp.FDD.ToString(inv)},{rp.Magnification.ToString(inv)},{rp.Voltage.ToString(inv)},{rp.Current.ToString(inv)},,{rp.IsRayOn},,,,,,,,,,",
|
||||
SaveNodeWithImageNode sni => $"{sni.Index},{sni.NodeType},{Esc(sni.Name)},{sni.MotionState.StageX.ToString(inv)},{sni.MotionState.StageY.ToString(inv)},{sni.MotionState.SourceZ.ToString(inv)},{sni.MotionState.DetectorZ.ToString(inv)},{sni.MotionState.DetectorSwing.ToString(inv)},{sni.MotionState.StageRotation.ToString(inv)},{sni.MotionState.FixtureRotation.ToString(inv)},{sni.MotionState.FOD.ToString(inv)},{sni.MotionState.FDD.ToString(inv)},{sni.MotionState.Magnification.ToString(inv)},{sni.RaySourceState.Voltage.ToString(inv)},,{sni.RaySourceState.Power.ToString(inv)},{sni.RaySourceState.IsOn},{sni.DetectorState.IsConnected},{sni.DetectorState.FrameRate.ToString(inv)},{Esc(sni.DetectorState.Resolution)},{Esc(sni.ImageFileName)},,,,,,",
|
||||
SaveNodeNode sn => $"{sn.Index},{sn.NodeType},{Esc(sn.Name)},{sn.MotionState.StageX.ToString(inv)},{sn.MotionState.StageY.ToString(inv)},{sn.MotionState.SourceZ.ToString(inv)},{sn.MotionState.DetectorZ.ToString(inv)},{sn.MotionState.DetectorSwing.ToString(inv)},{sn.MotionState.StageRotation.ToString(inv)},{sn.MotionState.FixtureRotation.ToString(inv)},{sn.MotionState.FOD.ToString(inv)},{sn.MotionState.FDD.ToString(inv)},{sn.MotionState.Magnification.ToString(inv)},{sn.RaySourceState.Voltage.ToString(inv)},,{sn.RaySourceState.Power.ToString(inv)},{sn.RaySourceState.IsOn},{sn.DetectorState.IsConnected},{sn.DetectorState.FrameRate.ToString(inv)},{Esc(sn.DetectorState.Resolution)},,,,,,,",
|
||||
SavePositionNode sp => $"{sp.Index},{sp.NodeType},{Esc(sp.Name)},{sp.MotionState.StageX.ToString(inv)},{sp.MotionState.StageY.ToString(inv)},{sp.MotionState.SourceZ.ToString(inv)},{sp.MotionState.DetectorZ.ToString(inv)},{sp.MotionState.DetectorSwing.ToString(inv)},{sp.MotionState.StageRotation.ToString(inv)},{sp.MotionState.FixtureRotation.ToString(inv)},{sp.MotionState.FOD.ToString(inv)},{sp.MotionState.FDD.ToString(inv)},{sp.MotionState.Magnification.ToString(inv)},,,,,,,,,,,,,,",
|
||||
ReferencePointNode rp => $"{rp.Index},{rp.NodeType},{Esc(rp.Name)},{rp.SourceZ.ToString(inv)},{rp.DetectorZ.ToString(inv)},{rp.StageX.ToString(inv)},{rp.StageY.ToString(inv)},{rp.DetectorSwing.ToString(inv)},{rp.StageRotation.ToString(inv)},{rp.FixtureRotation.ToString(inv)},{rp.FOD.ToString(inv)},{rp.FDD.ToString(inv)},{rp.Magnification.ToString(inv)},{rp.Voltage.ToString(inv)},{rp.Current.ToString(inv)},,{rp.IsRayOn},,,,,,,,,,",
|
||||
SaveNodeWithImageNode sni => $"{sni.Index},{sni.NodeType},{Esc(sni.Name)},{sni.MotionState.SourceZ.ToString(inv)},{sni.MotionState.DetectorZ.ToString(inv)},{sni.MotionState.StageX.ToString(inv)},{sni.MotionState.StageY.ToString(inv)},{sni.MotionState.DetectorSwing.ToString(inv)},{sni.MotionState.StageRotation.ToString(inv)},{sni.MotionState.FixtureRotation.ToString(inv)},{sni.MotionState.FOD.ToString(inv)},{sni.MotionState.FDD.ToString(inv)},{sni.MotionState.Magnification.ToString(inv)},{sni.RaySourceState.Voltage.ToString(inv)},,{sni.RaySourceState.Power.ToString(inv)},{sni.RaySourceState.IsOn},{sni.DetectorState.IsConnected},{sni.DetectorState.FrameRate.ToString(inv)},{Esc(sni.DetectorState.Resolution)},{Esc(sni.ImageFileName)},,,,,,",
|
||||
SaveNodeNode sn => $"{sn.Index},{sn.NodeType},{Esc(sn.Name)},{sn.MotionState.SourceZ.ToString(inv)},{sn.MotionState.DetectorZ.ToString(inv)},{sn.MotionState.StageX.ToString(inv)},{sn.MotionState.StageY.ToString(inv)},{sn.MotionState.DetectorSwing.ToString(inv)},{sn.MotionState.StageRotation.ToString(inv)},{sn.MotionState.FixtureRotation.ToString(inv)},{sn.MotionState.FOD.ToString(inv)},{sn.MotionState.FDD.ToString(inv)},{sn.MotionState.Magnification.ToString(inv)},{sn.RaySourceState.Voltage.ToString(inv)},,{sn.RaySourceState.Power.ToString(inv)},{sn.RaySourceState.IsOn},{sn.DetectorState.IsConnected},{sn.DetectorState.FrameRate.ToString(inv)},{Esc(sn.DetectorState.Resolution)},,,,,,,",
|
||||
SavePositionNode sp => $"{sp.Index},{sp.NodeType},{Esc(sp.Name)},{sp.MotionState.SourceZ.ToString(inv)},{sp.MotionState.DetectorZ.ToString(inv)},{sp.MotionState.StageX.ToString(inv)},{sp.MotionState.StageY.ToString(inv)},{sp.MotionState.DetectorSwing.ToString(inv)},{sp.MotionState.StageRotation.ToString(inv)},{sp.MotionState.FixtureRotation.ToString(inv)},{sp.MotionState.FOD.ToString(inv)},{sp.MotionState.FDD.ToString(inv)},{sp.MotionState.Magnification.ToString(inv)},,,,,,,,,,,,,,",
|
||||
InspectionModuleNode im => $"{im.Index},{im.NodeType},{Esc(im.Name)},,,,,,,,,,,,,,,,,,,,,,{Esc(im.Pipeline?.Name ?? string.Empty)}",
|
||||
InspectionMarkerNode mk => $"{mk.Index},{mk.NodeType},{Esc(mk.Name)},,,,,,,,,,,,,,,,,{Esc(mk.MarkerType)},{mk.MarkerX.ToString(inv)},{mk.MarkerY.ToString(inv)},,,",
|
||||
PauseDialogNode pd => $"{pd.Index},{pd.NodeType},{Esc(pd.Name)},,,,,,,,,,,,,,,,,,,{Esc(pd.DialogTitle)},{Esc(pd.DialogMessage)},,",
|
||||
|
||||
@@ -489,43 +489,43 @@
|
||||
Visibility="{Binding SelectedNode.IsMotionSnapshotNode, Converter={StaticResource BoolToVisibilityConverter}}">
|
||||
<UniformGrid Margin="8,8,8,6" Columns="2">
|
||||
<StackPanel Margin="0,0,6,0">
|
||||
<TextBlock Style="{StaticResource LabelStyle}" Text="StageX" />
|
||||
<TextBlock Style="{StaticResource LabelStyle}" Text="载物台 X (μm)" />
|
||||
<TextBox Style="{StaticResource EditorBox}" Text="{Binding SelectedNode.StageX, UpdateSourceTrigger=LostFocus}" />
|
||||
</StackPanel>
|
||||
<StackPanel>
|
||||
<TextBlock Style="{StaticResource LabelStyle}" Text="StageY" />
|
||||
<TextBlock Style="{StaticResource LabelStyle}" Text="载物台 Y (μm)" />
|
||||
<TextBox Style="{StaticResource EditorBox}" Text="{Binding SelectedNode.StageY, UpdateSourceTrigger=LostFocus}" />
|
||||
</StackPanel>
|
||||
<StackPanel Margin="0,0,6,0">
|
||||
<TextBlock Style="{StaticResource LabelStyle}" Text="SourceZ" />
|
||||
<TextBlock Style="{StaticResource LabelStyle}" Text="射线源 Z (μm)" />
|
||||
<TextBox Style="{StaticResource EditorBox}" Text="{Binding SelectedNode.SourceZ, UpdateSourceTrigger=LostFocus}" />
|
||||
</StackPanel>
|
||||
<StackPanel>
|
||||
<TextBlock Style="{StaticResource LabelStyle}" Text="DetectorZ" />
|
||||
<TextBlock Style="{StaticResource LabelStyle}" Text="探测器 Z (μm)" />
|
||||
<TextBox Style="{StaticResource EditorBox}" Text="{Binding SelectedNode.DetectorZ, UpdateSourceTrigger=LostFocus}" />
|
||||
</StackPanel>
|
||||
<StackPanel Margin="0,0,6,0">
|
||||
<TextBlock Style="{StaticResource LabelStyle}" Text="DetectorSwing" />
|
||||
<TextBlock Style="{StaticResource LabelStyle}" Text="探测器摆动 (°)" />
|
||||
<TextBox Style="{StaticResource EditorBox}" Text="{Binding SelectedNode.DetectorSwing, UpdateSourceTrigger=LostFocus}" />
|
||||
</StackPanel>
|
||||
<StackPanel>
|
||||
<TextBlock Style="{StaticResource LabelStyle}" Text="StageRotation" />
|
||||
<TextBlock Style="{StaticResource LabelStyle}" Text="载物台旋转 (°)" />
|
||||
<TextBox Style="{StaticResource EditorBox}" Text="{Binding SelectedNode.StageRotation, UpdateSourceTrigger=LostFocus}" />
|
||||
</StackPanel>
|
||||
<StackPanel Margin="0,0,6,0">
|
||||
<TextBlock Style="{StaticResource LabelStyle}" Text="FixtureRotation" />
|
||||
<TextBlock Style="{StaticResource LabelStyle}" Text="夹具旋转 (°)" />
|
||||
<TextBox Style="{StaticResource EditorBox}" Text="{Binding SelectedNode.FixtureRotation, UpdateSourceTrigger=LostFocus}" />
|
||||
</StackPanel>
|
||||
<StackPanel>
|
||||
<TextBlock Style="{StaticResource LabelStyle}" Text="FOD" />
|
||||
<TextBlock Style="{StaticResource LabelStyle}" Text="FOD (μm)" />
|
||||
<TextBox Style="{StaticResource EditorBox}" Text="{Binding SelectedNode.FOD, UpdateSourceTrigger=LostFocus}" />
|
||||
</StackPanel>
|
||||
<StackPanel Margin="0,0,6,0">
|
||||
<TextBlock Style="{StaticResource LabelStyle}" Text="FDD" />
|
||||
<TextBlock Style="{StaticResource LabelStyle}" Text="FDD (μm)" />
|
||||
<TextBox Style="{StaticResource EditorBox}" Text="{Binding SelectedNode.FDD, UpdateSourceTrigger=LostFocus}" />
|
||||
</StackPanel>
|
||||
<StackPanel>
|
||||
<TextBlock Style="{StaticResource LabelStyle}" Text="Magnification" />
|
||||
<TextBlock Style="{StaticResource LabelStyle}" Text="放大倍率" />
|
||||
<TextBox Style="{StaticResource EditorBox}" Text="{Binding SelectedNode.Magnification, UpdateSourceTrigger=LostFocus}" />
|
||||
</StackPanel>
|
||||
</UniformGrid>
|
||||
|
||||
Reference in New Issue
Block a user