public MRecipeBaseNode() : base() { ArrayInfo = new MArrayInfo(); TransformInfo = new TransformInfo(); Fiducials = new ObservableCollection <MFiducialInfo>(); }
/// <summary> /// The copy constructor /// </summary> /// <param name="info"></param> private MArrayInfo(MArrayInfo info) { NumX = info.NumX; NumY = info.NumY; NumZ = info.NumZ; PitchX = info.PitchX; PitchY = info.PitchY; PitchZ = info.PitchZ; ArrayStyle = info.ArrayStyle; }
/// <summary> /// Use to get all tiles, when order does not matter. /// </summary> /// <param name="callback"></param> public void BeginGetAllTiles_Parallel(Action <MTileDescription> callback) { MArrayInfo.BeginGetAll(ArrayInfo, (index) => { Parallel.ForEach(TileDescriptions, (td) => { var tile = (MTileDescription)td.Clone(); tile.CentreX += index.XInfo.Offset; tile.CentreY += index.YInfo.Offset; callback(tile); }); }); }
/// <summary> /// Use to get all tiles. /// </summary> /// <param name="callback"></param> public void BeginGetAllTiles(Action <MTileDescription> callback) { MArrayInfo.BeginGetAll(ArrayInfo, (index) => { foreach (var td in TileDescriptions) { var tile = (MTileDescription)td.Clone(); tile.CentreX += index.XInfo.Offset; tile.CentreY += index.YInfo.Offset; callback(tile); } }); }
/// <summary> /// Use to get layers when order does not matter. /// </summary> /// <param name="callback"></param> public void BeginGetAllLayers_Parallel(Action <MRecipeDeviceLayer> callback) { MArrayInfo.BeginGetAll_Parallel(ArrayInfo, (index) => { Parallel.ForEach(Layers, (l) => { var layer = (MRecipeDeviceLayer)l.Clone(); layer.TransformInfo.OffsetX += index.XInfo.Offset; layer.TransformInfo.OffsetY += index.YInfo.Offset; layer.TransformInfo.OffsetZ += index.ZInfo.Offset; callback(layer); }); }); }
/// <summary> /// Use to get all layers. /// </summary> /// <param name="callback"></param> public void BeginGetAllLayers(Action <MRecipeDeviceLayer> callback) { MArrayInfo.BeginGetAll(ArrayInfo, (index) => { foreach (var l in Layers) { var layer = (MRecipeDeviceLayer)l.Clone(); layer.TransformInfo.OffsetX += index.XInfo.Offset; layer.TransformInfo.OffsetY += index.YInfo.Offset; layer.TransformInfo.OffsetZ += index.ZInfo.Offset; callback(layer); } }); }
/// <summary> /// Use to get devices when order does not matter. /// </summary> /// <param name="callback"></param> public void BeginGetAllDevices_Parallel(Action <MRecipeDevice> callback) { MArrayInfo.BeginGetAll_Parallel(ArrayInfo, (index) => { Parallel.ForEach(Devices, (d) => { var device = (MRecipeDevice)d.Clone(); device.TransformInfo.OffsetX += index.XInfo.Offset; device.TransformInfo.OffsetY += index.YInfo.Offset; device.TransformInfo.OffsetZ += index.ZInfo.Offset; callback(device); }); }); }
/// <summary> /// Use to get all devices. /// </summary> /// <param name="callback"></param> public void BeginGetAllDevices(Action <MRecipeDevice> callback) { MArrayInfo.BeginGetAll(ArrayInfo, (index) => { foreach (var d in Devices) { var device = (MRecipeDevice)d.Clone(); device.TransformInfo.OffsetX += index.XInfo.Offset; device.TransformInfo.OffsetY += index.YInfo.Offset; device.TransformInfo.OffsetZ += index.ZInfo.Offset; callback(device); } }); }
/// <summary> /// Auto generates position info using the given array info. /// </summary> /// <param name="info">The array info.</param> /// <param name="callback">A callback to receive the calculated values.</param> public static void BeginGetAll(MArrayInfo info, Action <(MArrayPositionInfo XInfo, MArrayPositionInfo YInfo, MArrayPositionInfo ZInfo)> callback)