添加 MX-PD-盘古 项目文件
将 MX-PD-盘古 - new 目录下的所有文件添加到主仓库
This commit is contained in:
@@ -0,0 +1,108 @@
|
||||
using MainShell.Common.Extension;
|
||||
using MainShell.DeviceMaintance.Model;
|
||||
using MainShell.Hardware;
|
||||
using MainShell.Parameter;
|
||||
using MainShell.Recipe.Models;
|
||||
using MaxwellFramework.Core.Interfaces;
|
||||
using MwFramework.Device;
|
||||
using MwFramework.ManagerService;
|
||||
using MXJM.Parameter.Maintance;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace MainShell.HeightMeasure.Model
|
||||
{
|
||||
public class DiastimeterHeightMeasure : IHeightMeasure
|
||||
{
|
||||
|
||||
public HeightBaseItem HeightBaseItem { get; set; }
|
||||
|
||||
public DiaHeightItem DiaHeightItem { get; set; }
|
||||
public CapHeightItem CapHeightItem { get; set; }
|
||||
|
||||
private HardwareManager _hardwareManager;
|
||||
private readonly IDiastimeter _diastimeter;
|
||||
private readonly IParamList _paramlist;
|
||||
public DiastimeterHeightMeasure(GlobalParameterContext globalParam, HardwareManager hardwareManager, IParameterManager paramList)
|
||||
{
|
||||
_hardwareManager = hardwareManager;
|
||||
_diastimeter = _hardwareManager.Diastimeter;
|
||||
_paramlist = paramList as IParamList;
|
||||
DiaHeightItem = globalParam.HeightBaseSetting.DiaHeightItem;
|
||||
HeightBaseItem = globalParam.HeightBaseSetting.HeightBaseItem;
|
||||
|
||||
}
|
||||
|
||||
public double GetDistance()
|
||||
{
|
||||
_hardwareManager.Diastimeter.GetLastSamples(out double Distance);
|
||||
if (double.IsNaN(Distance))
|
||||
{
|
||||
throw new Exception("测距仪反馈数据为NAN,请检查测距仪状态");
|
||||
}
|
||||
return Distance;
|
||||
}
|
||||
|
||||
public void CalculateHeight()
|
||||
{
|
||||
double glassHeightAverage = HeightBaseItem.GlassHeightMeasureList.Average(m => m.Height);
|
||||
double glassZAverage = HeightBaseItem.GlassHeightMeasureList.Average(m => m.Z);
|
||||
double waferHeightAverage = HeightBaseItem.WaferHeightMeasureList.Average(m => m.Height);
|
||||
double waferZAverage = HeightBaseItem.WaferHeightMeasureList.Average(m => m.Z);
|
||||
HeightBaseItem.GlassZHeight = glassZAverage + glassHeightAverage;
|
||||
HeightBaseItem.WaferZHeight = waferZAverage + waferHeightAverage;
|
||||
|
||||
if (_paramlist == null)
|
||||
{
|
||||
throw new InvalidOperationException("IParamList 未初始化,无法计算测高标定参数。");
|
||||
}
|
||||
|
||||
var needleZCalibrationItem = _paramlist.GetParameter<NeedleCalibrationSetting>().NeedleZCalibrationItem;
|
||||
DiaHeightItem.NeedleTouchHeight = needleZCalibrationItem.NeedleTouchHeight;
|
||||
DiaHeightItem.KnifeOffset = needleZCalibrationItem.KnifeOffset;
|
||||
|
||||
//Gap2
|
||||
HeightBaseItem.FromDieToPadDistance = GetGap2(HeightBaseItem.DieThickness, HeightBaseItem.WaferFilmThickness);
|
||||
|
||||
//激光与刺晶头偏差
|
||||
DiaHeightItem.LaserToZ1Offset = DiaHeightItem.NeedleTouchHeight -
|
||||
(DiaHeightItem.CaliZHeightLaserReading + DiaHeightItem.CaliZHeightPositionZ) + DiaHeightItem.KnifeOffset;
|
||||
|
||||
//刺晶头接触到方片高度
|
||||
HeightBaseItem.NeedleTouchWaferZHeight = HeightBaseItem.WaferZHeight + DiaHeightItem.LaserToZ1Offset;
|
||||
}
|
||||
|
||||
public double GetGap2(double dieThickness, double waferFilmThickness)
|
||||
{
|
||||
double height = 0.0;
|
||||
height = HeightBaseItem.WaferZHeight - HeightBaseItem.GlassZHeight
|
||||
- dieThickness - waferFilmThickness;
|
||||
return Math.Abs(height);
|
||||
}
|
||||
|
||||
//public double GetZStageTheoryWorkHeight(double glassThickness, double carrierThickness, WaferRecipeContentItem currentWaferRecipe = null)
|
||||
//{
|
||||
// double calibWaferToStageDis = HeightBaseItem.WaferFilmThickness + HeightBaseItem.DieThickness +
|
||||
// HeightBaseItem.FromDieToPadDistance + HeightBaseItem.GlassThickness + HeightBaseItem.CarrierThickness;
|
||||
|
||||
// double actualWaferToStageDis = currentWaferRecipe.WaferFilmThickness + currentWaferRecipe.DieThickness +
|
||||
// currentWaferRecipe.FromDieToPadDistance + glassThickness + carrierThickness;
|
||||
|
||||
// double height = HeightBaseItem.StageDatumHeight + calibWaferToStageDis - actualWaferToStageDis;
|
||||
// return height;
|
||||
//}
|
||||
|
||||
//public double GetZ1WorkHeight(BondingCraftRecipeContentItem currentWaferRecipe = null)
|
||||
//{
|
||||
// double height = 0.0;
|
||||
|
||||
// //2.针尖的工作高度
|
||||
// height = HeightBaseItem.NeedleTouchWaferZHeight + currentWaferRecipe.Gap1;
|
||||
|
||||
// return height;
|
||||
//}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,441 @@
|
||||
using MwFramework.Controls.UIControl;
|
||||
using MwFramework.ManagerService;
|
||||
using Stylet;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using MaxwellFramework.Core.Attributes;
|
||||
using System.ComponentModel.Composition;
|
||||
|
||||
namespace MXJM.Parameter.Maintance
|
||||
{
|
||||
[Export(typeof(IParameter))]
|
||||
public class HeightBaseSetting : ParameterBase
|
||||
{
|
||||
public HeightBaseItem HeightBaseItem { get; set; } = new HeightBaseItem();
|
||||
public DiaHeightItem DiaHeightItem { get; set; } = new DiaHeightItem();
|
||||
|
||||
public CapHeightItem CapHeightItem { get; set; } = new CapHeightItem();
|
||||
|
||||
public override void Copy(IParameter source)
|
||||
{
|
||||
HeightBaseSetting setting = source as HeightBaseSetting;
|
||||
if (setting != null)
|
||||
{
|
||||
ReflectionExtension.Copy<HeightBaseItem>(HeightBaseItem, setting.HeightBaseItem);
|
||||
ReflectionExtension.Copy<DiaHeightItem>(DiaHeightItem, setting.DiaHeightItem);
|
||||
ReflectionExtension.Copy<CapHeightItem>(CapHeightItem, setting.CapHeightItem);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class HeightBaseItem : PropertyChangedBase, IParameterItem
|
||||
{
|
||||
private double _measureWaferHeightX11;
|
||||
/// <summary>
|
||||
/// 测量方片时X11坐标
|
||||
/// </summary>
|
||||
[WatchValue("测量方片时X11坐标")]
|
||||
public double MeasureWaferHeightX11
|
||||
{
|
||||
get { return _measureWaferHeightX11; }
|
||||
set { if (_measureWaferHeightX11 != value) { _measureWaferHeightX11 = value; OnPropertyChanged(nameof(MeasureWaferHeightX11)); } }
|
||||
}
|
||||
|
||||
private double _measureWaferHeightY11;
|
||||
/// <summary>
|
||||
/// 测量方片时Y11坐标
|
||||
/// </summary>
|
||||
[WatchValue("测量方片时Y11坐标")]
|
||||
public double MeasureWaferHeightY11
|
||||
{
|
||||
get { return _measureWaferHeightY11; }
|
||||
set { if (_measureWaferHeightY11 != value) { _measureWaferHeightY11 = value; OnPropertyChanged(nameof(MeasureWaferHeightY11)); } }
|
||||
}
|
||||
|
||||
//龙门2避让位
|
||||
private double _avoidancePositionX21;
|
||||
[WatchValue("龙门X21的避让位")]
|
||||
public double AvoidancePositionX21
|
||||
{
|
||||
get { return _avoidancePositionX21; }
|
||||
set { if (_avoidancePositionX21 != value) { _avoidancePositionX21 = value; OnPropertyChanged(nameof(AvoidancePositionX21)); } }
|
||||
}
|
||||
|
||||
private double _avoidancePositionY21;
|
||||
[WatchValue("龙门Y21的避让位")]
|
||||
public double AvoidancePositionY21
|
||||
{
|
||||
get { return _avoidancePositionY21; }
|
||||
set { if (_avoidancePositionY21 != value) { _avoidancePositionY21 = value; OnPropertyChanged(nameof(AvoidancePositionY21)); } }
|
||||
}
|
||||
|
||||
private double _stageDatumHeight;
|
||||
[WatchValue("载台基准高度")]
|
||||
/// <summary>
|
||||
/// 载台基准高度
|
||||
/// </summary>
|
||||
public double StageDatumHeight
|
||||
{
|
||||
get { return _stageDatumHeight; }
|
||||
set { if (_stageDatumHeight != value) { _stageDatumHeight = value; OnPropertyChanged(nameof(StageDatumHeight)); } }
|
||||
}
|
||||
|
||||
private double _needleTouchWaferZHeight;
|
||||
[WatchValue("刺晶头接触到Wafer高度")]
|
||||
/// <summary>
|
||||
/// 刺晶头接触到Wafer高度
|
||||
/// </summary>
|
||||
public double NeedleTouchWaferZHeight
|
||||
{
|
||||
get { return _needleTouchWaferZHeight; }
|
||||
set { if (_needleTouchWaferZHeight != value) { _needleTouchWaferZHeight = value; OnPropertyChanged(nameof(NeedleTouchWaferZHeight)); } }
|
||||
}
|
||||
|
||||
|
||||
private double _cZCalibrationHeight;
|
||||
/// <summary>
|
||||
/// CZ标定高度
|
||||
/// </summary>
|
||||
[WatchValue("CZ标定高度")]
|
||||
public double CZCalibrationHeight
|
||||
{
|
||||
get { return _cZCalibrationHeight; }
|
||||
set { if (_cZCalibrationHeight != value) { _cZCalibrationHeight = value; OnPropertyChanged(nameof(CZCalibrationHeight)); } }
|
||||
}
|
||||
|
||||
|
||||
private double _waferFilmThickness;
|
||||
/// <summary>
|
||||
/// 方片膜厚度
|
||||
/// </summary>
|
||||
[WatchValue("方片膜厚度")]
|
||||
public double WaferFilmThickness
|
||||
{
|
||||
get { return _waferFilmThickness; }
|
||||
set { if (_waferFilmThickness != value) { _waferFilmThickness = value; OnPropertyChanged(nameof(WaferFilmThickness)); } }
|
||||
}
|
||||
private double _dieThickness;
|
||||
/// <summary>
|
||||
/// 晶粒厚度
|
||||
/// </summary>
|
||||
[WatchValue("晶粒厚度")]
|
||||
public double DieThickness
|
||||
{
|
||||
get { return _dieThickness; }
|
||||
set { if (_dieThickness != value) { _dieThickness = value; OnPropertyChanged(nameof(DieThickness)); } }
|
||||
}
|
||||
|
||||
private double _glassThickness = 0.5;
|
||||
[WatchValue("Glass厚度")]
|
||||
/// <summary>
|
||||
/// //Glass厚度
|
||||
/// </summary>
|
||||
public double GlassThickness
|
||||
{
|
||||
get { return _glassThickness; }
|
||||
set { if (_glassThickness != value) { _glassThickness = value; OnPropertyChanged(nameof(GlassThickness)); } }
|
||||
}
|
||||
|
||||
private double _carrierThickness = 0.5;
|
||||
[WatchValue("Carrier厚度")]
|
||||
/// <summary>
|
||||
/// Carrier厚度
|
||||
/// </summary>
|
||||
public double CarrierThickness
|
||||
{
|
||||
get { return _carrierThickness; }
|
||||
set { if (_carrierThickness != value) { _carrierThickness = value; OnPropertyChanged(nameof(CarrierThickness)); } }
|
||||
}
|
||||
|
||||
private double _fromDieToPadDistance;
|
||||
/// <summary>
|
||||
/// Gap2:Die到Pad的距离
|
||||
/// </summary>
|
||||
[WatchValue("Gap2:Die到Pad的距离")]
|
||||
public double FromDieToPadDistance
|
||||
{
|
||||
get { return _fromDieToPadDistance; }
|
||||
set { if (_fromDieToPadDistance != value) { _fromDieToPadDistance = value; OnPropertyChanged(nameof(FromDieToPadDistance)); } }
|
||||
}
|
||||
|
||||
private double _gap1;
|
||||
/// <summary>
|
||||
/// Gap1
|
||||
/// </summary>
|
||||
[WatchValue("Gap1")]
|
||||
public double Gap1
|
||||
{
|
||||
get { return _gap1; }
|
||||
set { if (_gap1 != value) { _gap1 = value; OnPropertyChanged(nameof(Gap1)); } }
|
||||
}
|
||||
|
||||
private double _glassZHeight;
|
||||
/// <summary>
|
||||
/// 测Glass时Z高度
|
||||
/// </summary>
|
||||
[WatchValue("测Glass时Z高度")]
|
||||
public double GlassZHeight
|
||||
{
|
||||
get { return _glassZHeight; }
|
||||
set { if (_glassZHeight != value) { _glassZHeight = value; OnPropertyChanged(nameof(GlassZHeight)); } }
|
||||
}
|
||||
|
||||
|
||||
private double _waferZHeight;
|
||||
/// <summary>
|
||||
/// 测Wafer时Z高度
|
||||
/// </summary>
|
||||
[WatchValue("测Wafer时Z高度")]
|
||||
public double WaferZHeight
|
||||
{
|
||||
get { return _waferZHeight; }
|
||||
set { if (_waferZHeight != value) { _waferZHeight = value; OnPropertyChanged(nameof(WaferZHeight)); } }
|
||||
}
|
||||
|
||||
private ObservableCollection<TeachPoint> _glassHeightMeasureList = new ObservableCollection<TeachPoint>();
|
||||
|
||||
public ObservableCollection<TeachPoint> GlassHeightMeasureList
|
||||
{
|
||||
get { return _glassHeightMeasureList; }
|
||||
set { if (_glassHeightMeasureList != value) { _glassHeightMeasureList = value; OnPropertyChanged(nameof(GlassHeightMeasureList)); } }
|
||||
}
|
||||
|
||||
private ObservableCollection<TeachPoint> _waferHeightMeasureList = new ObservableCollection<TeachPoint>();
|
||||
|
||||
public ObservableCollection<TeachPoint> WaferHeightMeasureList
|
||||
{
|
||||
get { return _waferHeightMeasureList; }
|
||||
set { if (_waferHeightMeasureList != value) { _waferHeightMeasureList = value; OnPropertyChanged(nameof(WaferHeightMeasureList)); } }
|
||||
}
|
||||
|
||||
|
||||
public IParameterItem Clone()
|
||||
{
|
||||
HeightBaseItem clone = new HeightBaseItem();
|
||||
if (this.GlassHeightMeasureList != null && this.GlassHeightMeasureList.Count != 0)
|
||||
{
|
||||
foreach (var item in this.GlassHeightMeasureList)
|
||||
{
|
||||
clone.GlassHeightMeasureList.Add(item.Clone() as TeachPoint);
|
||||
}
|
||||
}
|
||||
if (this.WaferHeightMeasureList != null && this.WaferHeightMeasureList.Count != 0)
|
||||
{
|
||||
foreach (var item in this.WaferHeightMeasureList)
|
||||
{
|
||||
clone.WaferHeightMeasureList.Add(item.Clone() as TeachPoint);
|
||||
}
|
||||
}
|
||||
clone.NeedleTouchWaferZHeight = this.NeedleTouchWaferZHeight;
|
||||
|
||||
return clone;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public class DiaHeightItem : PropertyChangedBase, IParameterItem
|
||||
{
|
||||
public IParameterItem Clone()
|
||||
{
|
||||
return this.MemberwiseClone() as IParameterItem;
|
||||
//DiaHeightItem clone = new DiaHeightItem();
|
||||
//clone.CaliZHeightPositionX = this.CaliZHeightPositionX;
|
||||
//clone.CaliZHeightPositionY = this.CaliZHeightPositionY;
|
||||
//clone.CaliZHeightPositionZ = this.CaliZHeightPositionZ;
|
||||
//clone.GlassZHeight = this.GlassZHeight;
|
||||
//clone.WaferZHeight = this.WaferZHeight;
|
||||
//return clone;
|
||||
}
|
||||
|
||||
private double _needleTouchHeight;
|
||||
/// <summary>
|
||||
/// 标定时对刀高度
|
||||
/// </summary>
|
||||
[WatchValue("标定时对刀高度")]
|
||||
public double NeedleTouchHeight
|
||||
{
|
||||
get { return _needleTouchHeight; }
|
||||
set { if (_needleTouchHeight != value) { _needleTouchHeight = value; OnPropertyChanged(nameof(NeedleTouchHeight)); } }
|
||||
}
|
||||
|
||||
private double _knifeOffset;
|
||||
[WatchValue("对刀偏差值")]
|
||||
/// <summary>
|
||||
/// 对刀偏差值
|
||||
/// </summary>
|
||||
public double KnifeOffset
|
||||
{
|
||||
get { return _knifeOffset; }
|
||||
set { if (_knifeOffset != value) { _knifeOffset = value; OnPropertyChanged(nameof(KnifeOffset)); } }
|
||||
}
|
||||
|
||||
private double _laserToZ1Offset;
|
||||
[WatchValue("激光与刺晶头偏差")]
|
||||
/// <summary>
|
||||
/// 激光与刺晶头偏差
|
||||
/// </summary>
|
||||
public double LaserToZ1Offset
|
||||
{
|
||||
get { return _laserToZ1Offset; }
|
||||
set { if (_laserToZ1Offset != value) { _laserToZ1Offset = value; OnPropertyChanged(nameof(LaserToZ1Offset)); } }
|
||||
}
|
||||
|
||||
private double _caliZHeightPositionX;
|
||||
[WatchValue("激光打到对刀仪上X坐标")]
|
||||
/// <summary>
|
||||
/// 激光打到对刀仪上X坐标
|
||||
/// </summary>
|
||||
public double CaliZHeightPositionX
|
||||
{
|
||||
get { return _caliZHeightPositionX; }
|
||||
set { if (_caliZHeightPositionX != value) { _caliZHeightPositionX = value; OnPropertyChanged(nameof(CaliZHeightPositionX)); } }
|
||||
}
|
||||
|
||||
private double _caliZHeightPositionY;
|
||||
[WatchValue("激光打到对刀仪上Y坐标")]
|
||||
/// <summary>
|
||||
/// 激光打到对刀仪上Y坐标
|
||||
/// </summary>
|
||||
public double CaliZHeightPositionY
|
||||
{
|
||||
get { return _caliZHeightPositionY; }
|
||||
set { if (_caliZHeightPositionY != value) { _caliZHeightPositionY = value; OnPropertyChanged(nameof(CaliZHeightPositionY)); } }
|
||||
}
|
||||
|
||||
public double CaliZHeight;
|
||||
|
||||
private double _caliZHeightPositionZ;
|
||||
[WatchValue("激光打到对刀仪上Z坐标")]
|
||||
/// <summary>
|
||||
/// 激光打到对刀仪上Z坐标
|
||||
/// </summary>
|
||||
public double CaliZHeightPositionZ
|
||||
{
|
||||
get { return _caliZHeightPositionZ; }
|
||||
set { if (_caliZHeightPositionZ != value) { _caliZHeightPositionZ = value; OnPropertyChanged(nameof(CaliZHeightPositionZ)); } }
|
||||
}
|
||||
|
||||
private double _caliZHeightLaserReading;
|
||||
[WatchValue("激光打到对刀仪上时激光读数")]
|
||||
/// <summary>
|
||||
/// 激光打到对刀仪上时激光读数
|
||||
/// </summary>
|
||||
public double CaliZHeightLaserReading
|
||||
{
|
||||
get { return _caliZHeightLaserReading; }
|
||||
set { if (_caliZHeightLaserReading != value) { _caliZHeightLaserReading = value; OnPropertyChanged(nameof(CaliZHeightLaserReading)); } }
|
||||
}
|
||||
}
|
||||
|
||||
public class CapHeightItem : PropertyChangedBase, IParameterItem
|
||||
{
|
||||
public IParameterItem Clone()
|
||||
{
|
||||
return this.MemberwiseClone() as IParameterItem;
|
||||
}
|
||||
|
||||
private double _capInitialValue;
|
||||
/// <summary>
|
||||
/// 电容初始值
|
||||
/// </summary>
|
||||
[WatchValue("电容初始值")]
|
||||
public double CapInitialValue
|
||||
{
|
||||
get { return _capInitialValue; }
|
||||
set { if (_capInitialValue != value) { _capInitialValue = value; OnPropertyChanged(nameof(CapInitialValue)); } }
|
||||
}
|
||||
}
|
||||
|
||||
public class TeachPoint : PropertyChangedBase, IParameterItem
|
||||
{
|
||||
private int _id = 1;
|
||||
public int Id
|
||||
{
|
||||
get { return _id; }
|
||||
set { if (_id != value) { _id = value; OnPropertyChanged(nameof(Id)); } }
|
||||
}
|
||||
|
||||
private double _x = 0.0;
|
||||
public double X
|
||||
{
|
||||
get { return _x; }
|
||||
set { if (_x != value) { _x = value; OnPropertyChanged(nameof(X)); } }
|
||||
}
|
||||
|
||||
private double _y = 0.0;
|
||||
public double Y
|
||||
{
|
||||
get { return _y; }
|
||||
set { if (_y != value) { _y = value; OnPropertyChanged(nameof(Y)); } }
|
||||
}
|
||||
|
||||
private double _z = 5.0;
|
||||
public double Z
|
||||
{
|
||||
get { return _z; }
|
||||
set { if (_z != value) { _z = value; OnPropertyChanged(nameof(Z)); } }
|
||||
}
|
||||
|
||||
private double _laserZ = 0.0;
|
||||
public double LaserZ
|
||||
{
|
||||
get { return _laserZ; }
|
||||
set { if (_laserZ != value) { _laserZ = value; OnPropertyChanged(nameof(LaserZ)); } }
|
||||
}
|
||||
|
||||
private double _height = 0.0;
|
||||
public double Height
|
||||
{
|
||||
get { return _height; }
|
||||
set { if (_height != value) { _height = value; OnPropertyChanged(nameof(Height)); } }
|
||||
}
|
||||
|
||||
private double _laserAndZHeightSum = 0.0;
|
||||
public double LaserAndZHeightSum
|
||||
{
|
||||
get { return _laserAndZHeightSum; }
|
||||
set { if (_laserAndZHeightSum != value) { _laserAndZHeightSum = value; OnPropertyChanged(nameof(LaserAndZHeightSum)); } }
|
||||
}
|
||||
|
||||
private int _row = 1;
|
||||
|
||||
public int Row
|
||||
{
|
||||
get { return _row; }
|
||||
set { SetAndNotify(ref _row, value); }
|
||||
}
|
||||
private int _column = 1;
|
||||
|
||||
public int Column
|
||||
{
|
||||
get { return _column; }
|
||||
set { SetAndNotify(ref _column, value); }
|
||||
}
|
||||
|
||||
private int _regionIndex;
|
||||
|
||||
public int RegionIndex
|
||||
{
|
||||
get { return _regionIndex; }
|
||||
set { SetAndNotify(ref _regionIndex, value); }
|
||||
}
|
||||
|
||||
public TeachPoint(double x, double y)
|
||||
{
|
||||
_x = x;
|
||||
_y = y;
|
||||
}
|
||||
public TeachPoint()
|
||||
{
|
||||
|
||||
}
|
||||
IParameterItem IParameterItem.Clone()
|
||||
{
|
||||
return this.MemberwiseClone() as IParameterItem;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
using MwFramework.ManagerService;
|
||||
using MXJM.Parameter.Maintance;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace MainShell.HeightMeasure.Model
|
||||
{
|
||||
public interface IHeightMeasure
|
||||
{
|
||||
HeightBaseItem HeightBaseItem { get; set; }
|
||||
|
||||
CapHeightItem CapHeightItem { get; set; }
|
||||
|
||||
DiaHeightItem DiaHeightItem { get; set; }
|
||||
|
||||
double GetDistance();
|
||||
|
||||
void CalculateHeight();
|
||||
|
||||
double GetGap2(double dieThickness, double waferFilmThickness);
|
||||
|
||||
//double GetZStageTheoryWorkHeight(double glassThickness, double carrierThickness, WaferRecipeContentItem currentWaferRecipe = null);
|
||||
|
||||
//double GetZ1WorkHeight(BondingCraftRecipeContentItem currentWaferRecipe = null);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user