fix: auto run bga detection in task wizard
This commit is contained in:
@@ -28,9 +28,13 @@ namespace XplorePlane.Services.Inspection.Tasks
|
|||||||
{
|
{
|
||||||
ArgumentNullException.ThrowIfNull(balls);
|
ArgumentNullException.ThrowIfNull(balls);
|
||||||
ArgumentNullException.ThrowIfNull(context);
|
ArgumentNullException.ThrowIfNull(context);
|
||||||
|
var labels = BgaBallGroupLabeler.AssignLabels(
|
||||||
|
balls,
|
||||||
|
XplorePlane.Models.Inspection.BgaGridIndexingMode.AlphaNumericTopLeft);
|
||||||
_overlay.PublishBgaBalls(balls.Select(ball => new BallOverlayItem
|
_overlay.PublishBgaBalls(balls.Select(ball => new BallOverlayItem
|
||||||
{
|
{
|
||||||
Id = ball.Id,
|
Id = ball.Id,
|
||||||
|
Label = labels.TryGetValue(ball.Id, out var label) ? label : string.Empty,
|
||||||
CenterX = (ball.X - context.OriginX) * context.ScaleX,
|
CenterX = (ball.X - context.OriginX) * context.ScaleX,
|
||||||
CenterY = (ball.Y - context.OriginY) * context.ScaleY,
|
CenterY = (ball.Y - context.OriginY) * context.ScaleY,
|
||||||
Diameter = ball.Diameter * ((context.ScaleX + context.ScaleY) / 2),
|
Diameter = ball.Diameter * ((context.ScaleX + context.ScaleY) / 2),
|
||||||
|
|||||||
@@ -179,7 +179,8 @@ namespace XplorePlane.ViewModels.Inspection.TaskWizard
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private int _poolColumns = 2;
|
// 参考 BGA_Insp_Tang_1:4 列 × 4 行,编号从左上角开始 A1,右下角为 D4。
|
||||||
|
private int _poolColumns = 4;
|
||||||
|
|
||||||
public int PoolColumns
|
public int PoolColumns
|
||||||
{
|
{
|
||||||
@@ -187,7 +188,7 @@ namespace XplorePlane.ViewModels.Inspection.TaskWizard
|
|||||||
set => SetProperty(ref _poolColumns, value);
|
set => SetProperty(ref _poolColumns, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
private int _poolRows = 2;
|
private int _poolRows = 4;
|
||||||
|
|
||||||
public int PoolRows
|
public int PoolRows
|
||||||
{
|
{
|
||||||
@@ -195,7 +196,7 @@ namespace XplorePlane.ViewModels.Inspection.TaskWizard
|
|||||||
set => SetProperty(ref _poolRows, value);
|
set => SetProperty(ref _poolRows, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
private int _ballsPerBlock = 16;
|
private int _ballsPerBlock = 1;
|
||||||
|
|
||||||
public int BallsPerBlock
|
public int BallsPerBlock
|
||||||
{
|
{
|
||||||
@@ -609,12 +610,15 @@ namespace XplorePlane.ViewModels.Inspection.TaskWizard
|
|||||||
}
|
}
|
||||||
|
|
||||||
CurrentStage = InspectionTaskStage.BGADetected;
|
CurrentStage = InspectionTaskStage.BGADetected;
|
||||||
|
// 锁定流水线后立即执行一次识别,避免用户必须再次点击“开始识别”才能继续。
|
||||||
|
_ = ExecuteRunBgaDetectionUnified();
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task ExecuteRunBgaDetectionUnified()
|
private async Task ExecuteRunBgaDetectionUnified()
|
||||||
{
|
{
|
||||||
var pipeline = InspectionTask?.PipelineSnapshot;
|
var pipeline = InspectionTask?.PipelineSnapshot;
|
||||||
var sourceImage = _viewportService?.LatestDetectorImage as BitmapSource
|
var sourceImage = _viewportService?.CurrentHistogramSource16 as BitmapSource
|
||||||
|
?? _viewportService?.LatestDetectorImage as BitmapSource
|
||||||
?? _viewportService?.CurrentDisplayImage as BitmapSource;
|
?? _viewportService?.CurrentDisplayImage as BitmapSource;
|
||||||
if (pipeline == null || sourceImage == null)
|
if (pipeline == null || sourceImage == null)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user