Loading files
This file is pinned to the selected release. Download the original to open it in your design tool.
5203ce801This file is pinned to the selected release. Download the original to open it in your design tool.
using GerberLibrary;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing;
namespace GerberToImage
{
class GerberToImage
{
enum Arguments
{
dpi,
noxray,
nonormal,
silk,
mask,
trace,
copper,
None
}
[STAThread]
static void Main(string[] args)
{
if (args.Count() < 1)
{
Console.WriteLine("need files to render...");
Console.WriteLine("GerberToImage <files> [--dpi N] [--noxray] [--nopcb] [--silk color] [--trace color] [--copper color] [--mask color]");
return;
}
int dpi = 400;
Arguments NextArg = Arguments.None;
bool xray = true;
bool normal = true;
string pcbcolor = "green";
string silkcolor = "white";
string tracecolor = "auto";
string coppercolor = "gold";
List<string> RestList = new List<string>();
for (int i = 0; i < args.Count() ; i++)
{
switch (NextArg)
{
case Arguments.dpi: dpi = Int32.Parse(args[i]); NextArg = Arguments.None; break;
case Arguments.silk: silkcolor = args[i];NextArg = Arguments.None;break;
case Arguments.mask: pcbcolor = args[i]; NextArg = Arguments.None; break;
case Arguments.trace: tracecolor = args[i]; NextArg = Arguments.None; break;
case Arguments.copper: coppercolor= args[i]; NextArg = Arguments.None; break;
case Arguments.None:
switch (args[i].ToLower())
{
case "-dpi":
case "--dpi": NextArg = Arguments.dpi; break;
case "-silk":
case "--silk": NextArg = Arguments.silk;break;
case "-trace":
case "--trace": NextArg = Arguments.trace; break;
case "-copper":
case "--copper": NextArg = Arguments.copper; break;
case "-mask":
case "--mask": NextArg = Arguments.mask; break;
case "-noxray":
case "--noxray": xray = false; NextArg = Arguments.None; break;
case "-nopcb":
case "--nopcb": normal = false; NextArg = Arguments.None; break;
default:
RestList.Add(args[i]);break;
}
break;
}
}
Gerber.SaveIntermediateImages = false;
Gerber.ShowProgress = true;
if (RestList.Count() == 1 && File.Exists(RestList[0]) && Path.GetExtension(RestList[0]).ToLower()!= ".zip")
{
// Gerber.WriteSanitized = true;
Gerber.ExtremelyVerbose = false;
//Gerber.Verbose = true;
Gerber.ThrowExceptions = true;
Gerber.WaitForKey = false;
Gerber.ShowProgress = true;
CreateImageForSingleFile(new StandardConsoleLog(),RestList[0], Color.Black, Color.White,dpi);
if (Gerber.WaitForKey)
{
Console.WriteLine("Press any key to continue");
Console.ReadKey();
}
return;
}
GerberImageCreator GIC = new GerberImageCreator();
string TargetFileBaseName = "";
if (RestList.Count() >= 1) TargetFileBaseName = RestList[0];
List<String> FileList = new List<string>();
foreach(var a in RestList)
{
if (Directory.Exists(a))
{
FileList.AddRange(Directory.GetFiles(a, "*.*"));
}
else
{
if (File.Exists(a))
{
FileList.Add(a);
}
}
}
for (int i = 0; i < FileList.Count; i++)
{
if (FileList[i][FileList[i].Count() - 1] == '\\')
{
FileList[i] = Path.GetDirectoryName(FileList[i]);
}
}
var L = new GerberToImage( Path.GetFileNameWithoutExtension(TargetFileBaseName));
GIC.AddBoardsToSet(FileList,new StandardConsoleLog(), true);
BoardRenderColorSet colors = new BoardRenderColorSet();
if (pcbcolor == "") pcbcolor = "black";
colors.SetupColors(pcbcolor, silkcolor, tracecolor, coppercolor);
GIC.SetColors(colors);
GIC.WriteImageFiles(TargetFileBaseName, dpi, false, xray, normal, new StandardConsoleLog());
Console.WriteLine("Done writing {0}", TargetFileBaseName);
}
private static void CreateImageForSingleFile(ProgressLog log, string arg, Color Foreground, Color Background, float dpi = 1000)
{
if (arg.ToLower().EndsWith(".png") == true) return;
GerberImageCreator.AA = true;
//Gerber.Verbose = true;
if (Gerber.ThrowExceptions)
{
Gerber.SaveGerberFileToImageUnsafe(log, arg, arg + "_render.png", dpi, Foreground, Background);
}
else
{
Gerber.SaveGerberFileToImage(log, arg, arg + "_render.png", dpi, Foreground, Background);
}
if (Gerber.SaveDebugImageOutput)
{
Gerber.SaveDebugImage(arg, arg + "_debugviz.png", dpi, Foreground, Background, new StandardConsoleLog());
}
}
public string TheName;
GerberToImage(string name)
{
TheName = name;
}
}
}