添加 MX-PD-盘古 项目文件
将 MX-PD-盘古 - new 目录下的所有文件添加到主仓库
This commit is contained in:
@@ -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
|
||||
{
|
||||
}
|
||||
}
|
||||
@@ -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; } // 逼近X(Die=X2, Pad=X1)
|
||||
public double ApproachYPos { get; set; } // 逼近Y(Die=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; } // 验证起点X(Die=X2, Pad=X1)
|
||||
public double WaferStartVerifyY { get; set; } // 验证起点Y(Die=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实际X(real坐标)
|
||||
public double DieRealY { get; set; } // die实际Y(real坐标)
|
||||
public double DieRulerX { get; set; } // die轴位置X(ruler坐标)
|
||||
public double DieRulerY { get; set; } // die轴位置Y(ruler坐标)
|
||||
|
||||
// Pad对位:飞拍pad坐标
|
||||
public double PadRealX { get; set; } // pad实际X(real坐标)
|
||||
public double PadRealY { get; set; } // pad实际Y(real坐标)
|
||||
public double PadRulerX { get; set; } // pad轴位置X(ruler坐标)
|
||||
public double PadRulerY { get; set; } // pad轴位置Y(ruler坐标)
|
||||
|
||||
// 对位结果
|
||||
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>>();
|
||||
}
|
||||
}
|
||||
@@ -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,
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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)); } }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -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)); } }
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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)); } }
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user