Files
test_demo/MX-PD-盘古 - new/PanGu.DieBonderApp/MainShell/Recipe/Models/SubstrateParameter/SubstrateInfo.cs

104 lines
2.7 KiB
C#
Raw Normal View History

using MainShell.Models;
using MwFramework.ManagerService;
using Stylet;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MainShell.Recipe.Models
{
public class SubstrateInfo : PropertyChangedBase, IParameterItem
{
private MxSize _substrateSize = new MxSize();
public MxSize SubstrateSize
{
get { return _substrateSize; }
set { SetAndNotify(ref _substrateSize, value); }
}
private MxSize _padSize;
public MxSize PadSize
{
get { return _padSize; }
set { SetAndNotify(ref _padSize, value); }
}
private double _thickness;
public double ThickNess
{
get { return _thickness; }
set { SetAndNotify(ref _thickness, value); }
}
private double _pitchX;
public double PitchX
{
get { return _pitchX; }
set { SetAndNotify(ref _pitchX, value); }
}
private double _pitchY;
public double PitchY
{
get { return _pitchY; }
set { SetAndNotify(ref _pitchY, value); }
}
private int _rowNumber;
public int RowNumber
{
get { return _rowNumber; }
set { SetAndNotify(ref _rowNumber, value); }
}
private int _colNumber;
public int ColNumber
{
get { return _colNumber; }
set { SetAndNotify(ref _colNumber, value); }
}
private double _recheckPitch;
public double RecheckPitch
{
get { return _recheckPitch; }
set { SetAndNotify(ref _recheckPitch, value); }
}
public IParameterItem Clone()
{
// 1. 首先执行浅拷贝,复制所有值类型字段(如 Thickness, PitchX 等)
var clone = this.MemberwiseClone() as SubstrateInfo;
// 2. 手动深拷贝引用类型对象 (MxSize)
// 如果不这样做clone 和原对象将指向内存中的同一个 MxSize 实例
if (this.SubstrateSize != null)
{
clone.SubstrateSize = new MxSize
{
Width = this.SubstrateSize.Width,
Height = this.SubstrateSize.Height
};
}
if (this.PadSize != null)
{
clone.PadSize = new MxSize
{
Width = this.PadSize.Width,
Height = this.PadSize.Height
};
}
return clone;
}
}
}