添加 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,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,
};
}
}
}