Exemplo n.º 1
0
        public MRecipe GenerateRecipe(string outputFileName)
        {
            if (
                _geometriesBuffer == null ||
                _geometriesBuffer.Keys.Count <= 0 ||
                !File.Exists(PatternFilePath)
                )
            {
                throw new Exception("Missing or Invalid pattern");
            }

            var patternName = Path.GetFileNameWithoutExtension(outputFileName);
            var device      = new MRecipeDevice(patternName);
            var recipe      = new MRecipe(new MRecipePlate("Plate", device));

            // add fiducials to recipe plate
            recipe.Plates.First().Fiducials = new ObservableCollection <MFiducialInfo>(Fiducials);

            if (SeperateLayers)
            {
                var dataDirectory = Path.Combine(
                    Path.GetDirectoryName(outputFileName),
                    $"{patternName} Data"
                    );

                if (!Directory.Exists(dataDirectory))
                {
                    Directory.CreateDirectory(dataDirectory);
                }

                foreach (var layerName in _geometriesBuffer?.Keys)
                {
                    var fileName = Path.Combine(
                        dataDirectory, $"{layerName}.dxf"
                        );
                    GeometricArithmeticModule.SaveDXF(fileName, _geometriesBuffer[layerName]);

                    var layer = new MRecipeDeviceLayer(layerName);
                    layer.AlignmentType             = AlignmentType;
                    layer.PatternFilePath           = fileName;
                    layer.ProcessParametersFilePath = ProcessParametersFilePath;
                    layer.TargetProcessMode         = TargetProcessMode?.Name.EnglishValue;
                    layer.TileSettings = (MTileSettings)TileSettings.Clone();
                    device.AddLayer(layer);
                }

                recipe.Save(
                    Path.Combine(
                        dataDirectory, $"{patternName}.{MRecipe.DefaultFileExtension}"
                        )
                    );
            }
            else
            {
                var layer = new MRecipeDeviceLayer(patternName);
                layer.AlignmentType             = AlignmentType;
                layer.PatternFilePath           = PatternFilePath;
                layer.ProcessParametersFilePath = ProcessParametersFilePath;
                layer.TargetProcessMode         = TargetProcessMode?.Name.EnglishValue;
                layer.TileSettings = (MTileSettings)TileSettings.Clone();
                device.AddLayer(layer);

                recipe.Save(
                    Path.Combine(
                        Path.GetDirectoryName(PatternFilePath), $"{patternName}.{MRecipe.DefaultFileExtension}"
                        )
                    );
            }

            // update recipe's parents
            recipe.UpdateParents();

            return(recipe);
        }