Beispiel #1
0
        static void Main(string[] args)
        {
            //GerberSplitter GS = new GerberSplitter();
            //GS.Split("G03*", new GerberLibrary.Core.Primitives.GerberNumberFormat());
            //GS.Split("%SRX1Y1I0.00000J1.76100*%", new GerberLibrary.Core.Primitives.GerberNumberFormat(),true);
            //Console.WriteLine("{0}", GS.Pairs.Count);
            Gerber.ShowProgress        = true;
            Gerber.DumpSanitizedOutput = true;
            Gerber.WriteSanitized      = true;

            if (args.Count() < 2)
            {
                Console.WriteLine("usage: ");
                Console.WriteLine("GerberCombiner <outputfile> <inputfile1> <inputfile2> <inputfileN> ");
                Console.WriteLine("<outputfile>: file to write - if the outputfile extension is .txt, all input files will be treated as excellon");
                Console.WriteLine("<inputfileN>: files to load");

                return;
            }
            for (int j = 1; j < args.Count(); j++)
            {
                if (File.Exists(args[j]) == false)
                {
                    Console.WriteLine("file not found! {0}", args[j]);
                    return;
                }
            }
            BoardSide  S;
            BoardLayer L;

            var FileType = Gerber.FindFileType(args[1]);

            Gerber.DetermineBoardSideAndLayer(args[1], out S, out L);

            for (int j = 2; j < args.Count(); j++)
            {
                var FileType2 = Gerber.FindFileType(args[1]);

                Gerber.DetermineBoardSideAndLayer(args[1], out S, out L);
                if (FileType2 != FileType)
                {
                    Console.WriteLine("Warning! Filetypes seem to be mismatched! First file ({0}) is a {1}, but {2} is a {3}", args[1], FileType, args[j], FileType2);
                }
            }

            if (FileType == BoardFileType.Drill)
            {
                List <string> ExcellonFiles = new List <string>();
                ExcellonFiles.AddRange(args.Skip(1));
                ExcellonFile.MergeAll(ExcellonFiles, args[0], new StandardConsoleLog());
            }
            else
            {
                List <string> GerberFiles = new List <string>();
                GerberFiles.AddRange(args.Skip(1));
                GerberMerger.MergeAll(GerberFiles, args[0], new StandardConsoleLog());
            }
            //  Console.WriteLine("Press any key to continue..");
            //  Console.ReadKey();
        }
Beispiel #2
0
        public static void ZipGerberFolderToFactoryFolder(string Name, string BoardGerbersFolder, string BoardFactoryFolder)
        {
            if (Directory.Exists(BoardGerbersFolder))
            {
                string TargetZip = Path.Combine(BoardFactoryFolder, Name + "_gerbers.zip");
                if (File.Exists(TargetZip))
                {
                    File.Delete(TargetZip);
                }
                Console.WriteLine("Zipping gerbers to {0}", TargetZip);
                ZipFile       Z            = new ZipFile();
                List <string> OutlineMerge = new List <string>();
                foreach (var F in Directory.GetFiles(BoardGerbersFolder))
                {
                    bool AddToZip = false;
                    var  T        = GerberLibrary.Gerber.FindFileType(F);
                    if (T == BoardFileType.Drill)
                    {
                        AddToZip = true;
                    }
                    else
                    {
                        GerberLibrary.Gerber.DetermineBoardSideAndLayer(F, out BoardSide Side, out BoardLayer Layer);
                        switch (Layer)
                        {
                        case BoardLayer.Mill:
                        case BoardLayer.Outline:
                            OutlineMerge.Add(F);
                            break;

                        case BoardLayer.Carbon:
                        case BoardLayer.Paste:
                        case BoardLayer.Silk:
                        case BoardLayer.SolderMask:
                        case BoardLayer.Copper:
                        case BoardLayer.Drill:
                            AddToZip = true;
                            break;

                        case BoardLayer.Assembly:
                            string TargetGerb = Path.Combine(BoardFactoryFolder, Name + "_" + Path.GetFileName(F));
                            File.Copy(F, TargetGerb, true);
                            break;
                        }
                    }
                    if (AddToZip)
                    {
                        Console.WriteLine("Adding {0} to zip.", F);
                        Z.AddFile(F, ".");
                    }
                }
                if (OutlineMerge.Count > 0)
                {
                    if (OutlineMerge.Count == 1)
                    {
//                        string TargetGerb = Path.Combine(BoardFactoryFolder, Name + "_" + Path.GetFileName(OutlineMerge[0]));
//                      File.Copy(OutlineMerge[0], TargetGerb, true);
                        Z.AddFile(OutlineMerge[0], ".");
                    }
                    else
                    {
                        string TargetGerb = Path.Combine(BoardFactoryFolder, Name + "_" + "MergedOutlines.gko");
                        GerberMerger.MergeAll(OutlineMerge, TargetGerb, new StandardConsoleLog());
                        Z.AddFile(TargetGerb, ".");
                    }
                }
                Z.Save(TargetZip);
            }
        }