添加 MX-PD-盘古 项目文件

将 MX-PD-盘古 - new 目录下的所有文件添加到主仓库
This commit is contained in:
Shi.Ji
2026-05-18 11:43:09 +08:00
parent 03632a379d
commit e31d3560bb
739 changed files with 99783 additions and 0 deletions

View File

@@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MainShell.AlgorithmCalib.Model
{
public class AlgorithmCalibModuleNames
{
}
}

View File

@@ -0,0 +1,89 @@
using MainShell.AlgorithmCalib.Common;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SemiPoint = SemiconductorVisionAlgorithm.SemiParams.Point;
namespace MainShell.AlgorithmCalib.Model
{
public static class FusionCalibModuleNames
{
public const string DieFusion = "Die融合标定";
public const string PadFusion = "Pad融合标定";
}
/// <summary>
/// 融合标定模块参数
/// Die和Pad共用通过 IsWaferCalib 区分
/// </summary>
public class FusionCalibModuleItem
{
// ===== 通用属性 =====
public string ModuleName { get; set; }
public bool IsIndependent { get; set; }
[JsonIgnore]
public IAlgorithmCalibrationPostProcessor PostProcessor { get; set; }
// ===== 融合标定参数 =====
public int Index { get; set; }
public string Camera_ID { get; set; }
public bool IsWaferCalib { get; set; } // true=Die(WS轴), false=Pad(PHS轴)
// 位置参数
public double MoveAxisPos { get; set; } // 移动轴位置Die=X1, Pad=Y1
public double ApproachXPos { get; set; } // 逼近XDie=X2, Pad=X1
public double ApproachYPos { get; set; } // 逼近YDie=Y1, Pad=Y2
public double CameraAxisPos { get; set; } // 相机轴起始位置
// 标定范围参数
public double StartX { get; set; } // 起始X
public double StartY { get; set; } // 起始Y
public double Step { get; set; } // 步进距离
public int Count { get; set; } // 组数
// 网格参数
public double CalibStep { get; set; } // 网格步长
public int CalibCount { get; set; } // 网格行列数
// 模板路径
public string ModelPath { get; set; } = "";
// ===== 验证参数 =====
public double WaferStartVerifyX { get; set; } // 验证起点XDie=X2, Pad=X1
public double WaferStartVerifyY { get; set; } // 验证起点YDie=Y1, Pad=Y2
public double WaferVerityStep { get; set; } // 验证步进
public int WaferVerityCountX { get; set; } // 验证X方向数量
public int WaferVerityCountY { get; set; } // 验证Y方向数量
// ===== 对位验证参数 =====
// Die对位飞拍die坐标
public double DieRealX { get; set; } // die实际Xreal坐标
public double DieRealY { get; set; } // die实际Yreal坐标
public double DieRulerX { get; set; } // die轴位置Xruler坐标
public double DieRulerY { get; set; } // die轴位置Yruler坐标
// Pad对位飞拍pad坐标
public double PadRealX { get; set; } // pad实际Xreal坐标
public double PadRealY { get; set; } // pad实际Yreal坐标
public double PadRulerX { get; set; } // pad轴位置Xruler坐标
public double PadRulerY { get; set; } // pad轴位置Yruler坐标
// 对位结果
public double AlignResultX { get; set; } // 对齐后X1偏移量
public double AlignResultY { get; set; } // 对齐后Y1偏移量
public double AlignResultX2 { get; set; } // X2补偿量
// ===== 运行时结果(不序列化) =====
[JsonIgnore]
public List<SemiPoint> RulerPoints { get; set; } = new List<SemiPoint>();
[JsonIgnore]
public List<SemiPoint> RealPoints { get; set; } = new List<SemiPoint>();
// Die网格飞拍数据
[JsonIgnore]
public List<Tuple<int, int, SemiPoint>> DieGridPoints { get; set; } = new List<Tuple<int, int, SemiPoint>>();
}
}

View File

@@ -0,0 +1,89 @@
using MainShell.Filewritable;
using MXJM.FileWritable;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MainShell.AlgorithmCalib.Model
{
public class FusionCalibSetting : JsonFileWritableBase
{
[JsonIgnore]
public override string Dir => Paths.CalibSettingPath;
[JsonIgnore]
public override string FileName => "FusionCalibSetting.json";
// Pad融合的4组模块
public List<FusionCalibModuleItem> PadModules { get; set; } = new List<FusionCalibModuleItem>();
// Die融合的参数单组
public FusionCalibModuleItem DieModule { get; set; } = new FusionCalibModuleItem();
public static FusionCalibSetting LoadOrCreate()
{
var setting = new FusionCalibSetting();
string path = Path.Combine(setting.Dir, setting.FileName);
if (File.Exists(path))
{
setting.Read(path);
setting.EnsureCollections();
return setting;
}
setting.PadModules = CreateDefaultPadModules();
setting.DieModule = CreateDefaultDieModule();
setting.Write(path);
return setting;
}
public void EnsureCollections()
{
if (PadModules == null)
PadModules = new List<FusionCalibModuleItem>();
if (DieModule == null)
DieModule = CreateDefaultDieModule();
}
private static List<FusionCalibModuleItem> CreateDefaultPadModules()
{
var modules = new List<FusionCalibModuleItem>();
for (int i = 1; i <= 4; i++)
{
modules.Add(new FusionCalibModuleItem
{
ModuleName = FusionCalibModuleNames.PadFusion,
IsIndependent = true,
Index = i,
Camera_ID = $"Fusion_Time{i}",
IsWaferCalib = false,
CalibStep = 0.4,
CalibCount = 10,
Count = 4,
Step = 5.0,
});
}
return modules;
}
private static FusionCalibModuleItem CreateDefaultDieModule()
{
return new FusionCalibModuleItem
{
ModuleName = FusionCalibModuleNames.DieFusion,
IsIndependent = true,
Index = 1,
Camera_ID = "DieFusion",
IsWaferCalib = true,
CalibStep = 0.4,
CalibCount = 10,
Count = 4,
Step = 5.0,
};
}
}
}

View File

@@ -0,0 +1,133 @@
using MaxwellFramework.Core.Common;
using MaxwellFramework.Core.Interfaces;
using MwFramework.Controls.SystemCalib;
using SemiconductorVisionAlgorithm.SemiParams;
using Stylet;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MainShell.AlgorithmCalib.Model
{
public class FusionCalibParItem : ViewModelBase
{
private double _moveAxisPos = 0.0;
public double MoveAxisPos
{
get { return _moveAxisPos; }
set { if (_moveAxisPos != value) { _moveAxisPos = value; OnPropertyChanged(nameof(MoveAxisPos)); } }
}
private double _approachXPos = 0.0;
public double ApproachXPos
{
get { return _approachXPos; }
set { if (_approachXPos != value) { _approachXPos = value; OnPropertyChanged(nameof(ApproachXPos)); } }
}
private double _approachYPos = 0.0;
public double ApproachYPos
{
get { return _approachYPos; }
set { if (_approachYPos != value) { _approachYPos = value; OnPropertyChanged(nameof(ApproachYPos)); } }
}
private double _cameraAxisPos = 0.0;
public double CameraAxisPos
{
get { return _cameraAxisPos; }
set { if (_cameraAxisPos != value) { _cameraAxisPos = value; OnPropertyChanged(nameof(CameraAxisPos)); } }
}
private double _startX = 0.0;
public double StartX
{
get { return _startX; }
set { if (_startX != value) { _startX = value; OnPropertyChanged(nameof(StartX)); } }
}
private double _startY = 0.0;
public double StartY
{
get { return _startY; }
set { if (_startY != value) { _startY = value; OnPropertyChanged(nameof(StartY)); } }
}
private double _step = 0.0;
public double Step
{
get { return _step; }
set { if (_step != value) { _step = value; OnPropertyChanged(nameof(Step)); } }
}
private int _count = 0;
public int Count
{
get { return _count; }
set { if (_count != value) { _count = value; OnPropertyChanged(nameof(Count)); } }
}
private double _calibStep = 0.0;
public double CalibStep
{
get { return _calibStep; }
set { if (_calibStep != value) { _calibStep = value; OnPropertyChanged(nameof(CalibStep)); } }
}
private int _calibCount = 0;
public int CalibCount
{
get { return _calibCount; }
set { if (_calibCount != value) { _calibCount = value; OnPropertyChanged(nameof(CalibCount)); } }
}
private bool _isWaferCalib = false;
public bool IsWaferCalib
{
get { return _isWaferCalib; }
set { if (_isWaferCalib != value) { _isWaferCalib = value; OnPropertyChanged(nameof(_isWaferCalib)); } }
}
private string _modelPath = "";
public string ModelPath
{
get { return _modelPath; }
set { if (_modelPath != value) { _modelPath = value; OnPropertyChanged(nameof(ModelPath)); } }
}
private int _index = 0;
public int Index
{
get { return _index; }
set { if (_index != value) { _index = value; OnPropertyChanged(nameof(Index)); } }
}
private string _camera_Id = string.Empty;
public string Camera_ID
{
get { return _camera_Id; }
set { if (_camera_Id != value) { _camera_Id = value; OnPropertyChanged(nameof(Camera_ID)); } }
}
private List<Point> _rulerPoints;
public List<Point> RulerPoints
{
get { return _rulerPoints; }
set { if (_rulerPoints != value) { _rulerPoints = value; OnPropertyChanged(nameof(RulerPoints)); } }
}
private List<Point> _realPoints;
public List<Point> RealPoints
{
get { return _realPoints; }
set { if (_realPoints != value) { _realPoints = value; OnPropertyChanged(nameof(RealPoints)); } }
}
}
}

View File

@@ -0,0 +1,85 @@
using MaxwellFramework.Core.Common;
using SemiconductorVisionAlgorithm.SemiParams;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MainShell.AlgorithmCalib.Model
{
public class FusionCalibVerifyParItem: ViewModelBase
{
private double _moveAxisPos = 0.0;
public double MoveAxisPos
{
get { return _moveAxisPos; }
set { if (_moveAxisPos != value) { _moveAxisPos = value; OnPropertyChanged(nameof(MoveAxisPos)); } }
}
private double _approachXPos = 0.0;
public double ApproachXPos
{
get { return _approachXPos; }
set { if (_approachXPos != value) { _approachXPos = value; OnPropertyChanged(nameof(ApproachXPos)); } }
}
private double _approachYPos = 0.0;
public double ApproachYPos
{
get { return _approachYPos; }
set { if (_approachYPos != value) { _approachYPos = value; OnPropertyChanged(nameof(ApproachYPos)); } }
}
private double _startX = 0.0;
public double StartX
{
get { return _startX; }
set { if (_startX != value) { _startX = value; OnPropertyChanged(nameof(StartX)); } }
}
private double _startY = 0.0;
public double StartY
{
get { return _startY; }
set { if (_startY != value) { _startY = value; OnPropertyChanged(nameof(StartY)); } }
}
private double _step = 0.0;
public double Step
{
get { return _step; }
set { if (_step != value) { _step = value; OnPropertyChanged(nameof(Step)); } }
}
private int _countX = 0;
public int CountX
{
get { return _countX; }
set { if (_countX != value) { _countX = value; OnPropertyChanged(nameof(CountX)); } }
}
private int _countY = 0;
public int CountY
{
get { return _countY; }
set { if (_countY != value) { _countY = value; OnPropertyChanged(nameof(CountY)); } }
}
private string _modelPath = @"Parameters\SystemSetting\AxisAndWaferCaliModel";
public string ModelPath
{
get { return _modelPath; }
set { if (_modelPath != value) { _modelPath = value; OnPropertyChanged(nameof(ModelPath)); } }
}
private List<Point> _verifyRealPts = new List<Point>();
public List<Point> VerifyRealPts
{
get { return _verifyRealPts; }
set { if (_verifyRealPts != value) { _verifyRealPts = value; OnPropertyChanged(nameof(VerifyRealPts)); } }
}
}
}

View File

@@ -0,0 +1,100 @@
using MaxwellFramework.Core.Common;
using MwFramework.Controls.SystemCalib;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MainShell.AlgorithmCalib.Model
{
public class RotateCalibParItem: ViewModelBase
{
private string _modelPath = @"Parameters\SystemSetting\AxisAndWaferCaliModel";
public string ModelPath
{
get { return _modelPath; }
set { if (_modelPath != value) { _modelPath = value; OnPropertyChanged(nameof(ModelPath)); } }
}
private double _x1 = 0.0;
public double X1
{
get { return _x1; }
set { if (_x1 != value) { _x1 = value; OnPropertyChanged(nameof(X1)); } }
}
private double _start_X = 0.0;
public double Start_X
{
get { return _start_X; }
set { if (_start_X != value) { _start_X = value; OnPropertyChanged(nameof(Start_X)); } }
}
private double _start_Y = 0.0;
public double Start_Y
{
get { return _start_Y; }
set { if (_start_Y != value) { _start_Y = value; OnPropertyChanged(nameof(Start_Y)); } }
}
private double _verifyStartX = 0.0;
public double VerifyStartX
{
get { return _verifyStartX; }
set { if (_verifyStartX != value) { _verifyStartX = value; OnPropertyChanged(nameof(VerifyStartX)); } }
}
private double _verifyStartY = 0.0;
public double VerifyStartY
{
get { return _verifyStartY; }
set { if (_verifyStartY != value) { _verifyStartY = value; OnPropertyChanged(nameof(VerifyStartY)); } }
}
private int _rowCol = 0;
public int RowCol
{
get { return _rowCol; }
set { if (_rowCol != value) { _rowCol = value; OnPropertyChanged(nameof(RowCol)); } }
}
private int _verifyRowCol = 0;
public int VerifyRowCol
{
get { return _verifyRowCol; }
set { if (_verifyRowCol != value) { _verifyRowCol = value; OnPropertyChanged(nameof(VerifyRowCol)); } }
}
private double _wafer_Step = 0.0;
public double Wafer_Step
{
get { return _wafer_Step; }
set { if (_wafer_Step != value) { _wafer_Step = value; OnPropertyChanged(nameof(Wafer_Step)); } }
}
private double _verifyWaferStep = 0.0;
public double VerifyWaferStep
{
get { return _verifyWaferStep; }
set { if (_verifyWaferStep != value) { _verifyWaferStep = value; OnPropertyChanged(nameof(VerifyWaferStep)); } }
}
private double _rotate_Step = 0.0;
public double Rotate_Step
{
get { return _rotate_Step; }
set { if (_rotate_Step != value) { _rotate_Step = value; OnPropertyChanged(nameof(Rotate_Step)); } }
}
private double _verifyRotateRange = 0.0;
public double VerifyRotateRange
{
get { return _verifyRotateRange; }
set { if (_verifyRotateRange != value) { _verifyRotateRange = value; OnPropertyChanged(nameof(VerifyRotateRange)); } }
}
}
}

View File

@@ -0,0 +1,107 @@
using MainShell.AlgorithmCalib.Common;
using MainShell.Filewritable;
using MainShell.PageCalib.OriginCalib.Service;
using MXJM.FileWritable;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MainShell.AlgorithmCalib.Model
{
public static class RotateMatixFormCalibModuleNames
{
public const string RotateForm = "旋转表标定模块";
}
public class RotateMatixFormCalibModuleItem
{
// ===== 对标 OriginCalibModuleItem 通用属性 =====
public string ModuleName { get; set; }
public bool IsIndependent { get; set; }
public string TemplatePath { get; set; }
[JsonIgnore]
public IAlgorithmCalibrationPostProcessor PostProcessor { get; set; }
// ===== 旋转表特有参数(原 RotateCalibParItem =====
public double X1AvoidancePosition { get; set; }
public double RotateStep { get; set; }
public double WaferStep { get; set; }
public int RowCol { get; set; }
// ===== 验证参数 =====
public int VerifyRowCol { get; set; }
public double VerifyWaferStep { get; set; }
public double VerifyRotateRange { get; set; }
// ===== 运行时参数(不序列化) =====
[JsonIgnore]
public double StartX { get; set; }
[JsonIgnore]
public double StartY { get; set; }
[JsonIgnore]
public double VerifyStartX { get; set; }
[JsonIgnore]
public double VerifyStartY { get; set; }
//逼近容差
public double AlignTolerance { get; set; } = 0.005;
}
public class RotateMatixFormCalibSetting : JsonFileWritableBase
{
[JsonIgnore]
public override string Dir => Paths.CalibSettingPath;
[JsonIgnore]
public override string FileName => "RotateFormCalibSetting.json";
public List<RotateMatixFormCalibModuleItem> Modules { get; set; } = new List<RotateMatixFormCalibModuleItem>();
public static RotateMatixFormCalibSetting LoadOrCreate()
{
// TODO: 对标 OriginCalibSetting.LoadOrCreate()
var setting = new RotateMatixFormCalibSetting();
string path = Path.Combine(setting.Dir, setting.FileName);
if (File.Exists(path))
{
setting.Read(path);
setting.EnsureCollections();
return setting;
}
setting.Modules = CreateDefaultModules();
setting.Write(path);
return setting;
}
public void EnsureCollections()
{
// TODO: 对标 OriginCalibSetting.EnsureCollections()
if (Modules == null)
Modules = new List<RotateMatixFormCalibModuleItem>();
}
private static List<RotateMatixFormCalibModuleItem> CreateDefaultModules()
{
// TODO: 原 RotateCalibParItem 的默认值搬到这里
return new List<RotateMatixFormCalibModuleItem>
{
new RotateMatixFormCalibModuleItem
{
ModuleName = RotateMatixFormCalibModuleNames.RotateForm,
IsIndependent = true,
TemplatePath = "",
RotateStep = 0.05,
WaferStep = 0.4,
RowCol = 10,
}
};
}
}
}