static void Main(string[] args) { string basepath = Directory.GetCurrentDirectory(); Directory.CreateDirectory(Path.Combine(basepath, "outline")); Directory.CreateDirectory(Path.Combine(basepath, "frame")); GerberFrameWriter.FrameSettings FS = new GerberFrameWriter.FrameSettings(); PolyLine PL = new PolyLine(); FS.FrameTitle = "Test Frame"; FS.RenderSample = false; FS.margin = 3; PL.MakeRoundedRect(new PointD(10, 10), new PointD(200, 200), 7); FS.PositionAround(PL); //FS.offset = new PointD(200, 200); FS.RenderSample = true; GerberArtWriter GAW = new GerberArtWriter(); GAW.AddPolyLine(PL); GAW.Write("outline/outtestinside.gko"); GerberFrameWriter.WriteSideEdgeFrame(PL, FS, "frame/outtest"); GerberFrameWriter.MergeFrameIntoGerberSet(Path.Combine(basepath, "frame"), Path.Combine(basepath, "outline"), Path.Combine(basepath, "mergedoutput"), FS, new FrameCreatorTest(), "testframe"); GerberFrameWriter.MergeFrameIntoGerberSet(Path.Combine(basepath, "SliceFrameOutline6"), Path.Combine(basepath, "Slice6"), Path.Combine(basepath, "slice6inframe"), FS, new FrameCreatorTest(), "slice6framed"); // PNL.SaveOutlineTo("panelized.gko", "panelcombinedgko.gko"); }
static void Main(string[] args) { string basepath = Directory.GetCurrentDirectory(); Directory.CreateDirectory(Path.Combine(basepath, "outline")); Directory.CreateDirectory(Path.Combine(basepath, "frame")); Directory.CreateDirectory(Path.Combine(basepath, "imagetest")); GerberFrameWriter.FrameSettings FS = new GerberFrameWriter.FrameSettings(); PolyLine PL = new PolyLine(); FS.FrameTitle = "Test Frame"; FS.RenderSample = false; FS.margin = 3; PL.MakeRoundedRect(new PointD(-50, -50), new PointD(50, 50), 7); //FS.offset = new PointD(200, 200); FS.RenderSample = false; GerberArtWriter GAW = new GerberArtWriter(); GAW.AddPolyLine(PL); GAW.Write("outline/outtestinside.gko"); // Bitmap FrontPrint = (Bitmap)Bitmap.FromFile("BigJigImage.png"); // Bounds FrontBound = new Bounds() { BottomRight = new PointD(220, 230), TopLeft = new PointD(-220, -230) , Valid = true}; // PCBWriterSet s = new PCBWriterSet(); // s.TopSilk.WriteImageToBounds(FrontPrint, FrontBound, new Bounds() { TopLeft = new PointD(-10, -10), BottomRight = new PointD(10, 10),Valid = true }); // s.Write("imagetest", "test!"); FS.RenderDirectionArrow = true; FS.DirectionArrowSide = GerberLibrary.Core.BoardSide.Bottom; FS.DefaultFiducials = true; FS.FiducialSide = BoardSide.Both; FS.HorizontalTabs = true; FS.VerticalTabs = true; FS.InsideEdgeMode = GerberFrameWriter.FrameSettings.InsideMode.FormFitting; FS.PositionAround(PL); BOM OutFiducials = new BOM(); GerberFrameWriter.WriteSideEdgeFrame(PL, FS, Path.Combine(basepath, "frame/outtest"), OutFiducials); FS.RenderSample = true; GerberFrameWriter.MergeFrameIntoGerberSet(Path.Combine(basepath, "frame"), Path.Combine(basepath, "outline"), Path.Combine(basepath, "mergedoutput"), FS, new FrameCreatorTest(), "testframe"); // GerberFrameWriter.MergeFrameIntoGerberSet(Path.Combine(basepath, "SliceFrameOutline6"), Path.Combine(basepath, "Slice6"), Path.Combine(basepath, "slice6inframe"), FS, new FrameCreatorTest(),"slice6framed" ); // PNL.SaveOutlineTo("panelized.gko", "panelcombinedgko.gko"); //Console.ReadKey(); }
static void Main(string[] args) { string basepath = Directory.GetCurrentDirectory(); Directory.CreateDirectory(Path.Combine(basepath, "outline")); Directory.CreateDirectory(Path.Combine(basepath, "frame")); Directory.CreateDirectory(Path.Combine(basepath, "imagetest")); GerberFrameWriter.FrameSettings FS = new GerberFrameWriter.FrameSettings(); PolyLine PL = new PolyLine(); FS.FrameTitle = "Test Frame"; FS.RenderSample = false; FS.margin = 3; PL.MakeRoundedRect(new PointD(10, 10), new PointD(400, 300), 7); FS.PositionAround(PL); //FS.offset = new PointD(200, 200); FS.RenderSample = true; GerberArtWriter GAW = new GerberArtWriter(); GAW.AddPolyLine(PL); GAW.Write("outline/outtestinside.gko"); Bitmap FrontPrint = (Bitmap)Bitmap.FromFile("BigJigImage.png"); Bounds FrontBound = new Bounds() { BottomRight = new PointD(220, 230), TopLeft = new PointD(-220, -230), Valid = true }; PCBWriterSet s = new PCBWriterSet(); s.TopSilk.WriteImageToBounds(FrontPrint, FrontBound, new Bounds() { TopLeft = new PointD(-10, -10), BottomRight = new PointD(10, 10), Valid = true }); s.Write("imagetest", "test!"); // GerberFrameWriter.WriteSideEdgeFrame(PL, FS, "frame/outtest"); // GerberFrameWriter.MergeFrameIntoGerberSet(Path.Combine(basepath, "frame"), Path.Combine(basepath, "outline"), Path.Combine(basepath, "mergedoutput"),FS, new FrameCreatorTest(),"testframe"); // GerberFrameWriter.MergeFrameIntoGerberSet(Path.Combine(basepath, "SliceFrameOutline6"), Path.Combine(basepath, "Slice6"), Path.Combine(basepath, "slice6inframe"), FS, new FrameCreatorTest(),"slice6framed" ); // PNL.SaveOutlineTo("panelized.gko", "panelcombinedgko.gko"); }
private void button1_Click(object sender, EventArgs e) { if (saveFileDialog1.ShowDialog() == DialogResult.OK) { int polyid = 0; string fname = System.IO.Path.GetFileName(saveFileDialog1.FileName); string fnamenoext = System.IO.Path.GetFileNameWithoutExtension(saveFileDialog1.FileName); string OutName = ""; if (fname.Length != fnamenoext.Length) { int extlen = fname.Length - fnamenoext.Length; OutName = saveFileDialog1.FileName.Substring(0, saveFileDialog1.FileName.Length - extlen); } else { OutName = saveFileDialog1.FileName; } List <string> Files = new List <string>(); double W = (double)innerWidth.Value; double H = (double)innerHeight.Value; double TE = (double)topEdge.Value; double LE = (double)leftEdge.Value; double OuterWidth = W + LE * 2.0; double OuterHeight = H + TE * 2.0; double InnerWidth = W; double InnerHeight = H; GerberArtWriter Outline = new GerberArtWriter(); GerberArtWriter TopSilk = new GerberArtWriter(); GerberArtWriter TopCopper = new GerberArtWriter(); GerberArtWriter TopSolderMask = new GerberArtWriter(); GerberArtWriter BottomSilk = new GerberArtWriter(); GerberArtWriter BottomCopper = new GerberArtWriter(); GerberArtWriter BottomSolderMask = new GerberArtWriter(); List <PointD> DrillHoles = new List <PointD>(); double mountholediameter = (double)holeDiameter.Value; if (addHolesCheck.Checked) { double side = LE / 2.0; double top = TE / 2.0; DrillHoles.Add(new PointD(side, top)); DrillHoles.Add(new PointD(OuterWidth - side, top)); DrillHoles.Add(new PointD(OuterWidth - side, OuterHeight - top)); DrillHoles.Add(new PointD(side, OuterHeight - top)); ExcellonFile EF = new ExcellonFile(); ExcellonTool MountHoleDrill = new ExcellonTool(); MountHoleDrill.Radius = mountholediameter / 2.0; foreach (var a in DrillHoles) { MountHoleDrill.Drills.Add(a); } EF.Tools[10] = MountHoleDrill; EF.Write(OutName + ".txt", 0, 0, 0, 0); Files.Add(OutName + ".txt"); } // board outline PolyLine PL = new PolyLine(polyid++); PL.MakeRoundedRect(new PointD(0, 0), new PointD(OuterWidth, OuterHeight), (double)roundedOuterCorners.Value); Outline.AddPolyLine(PL, 0); PolyLine PL2 = new PolyLine(polyid++); PL2.MakeRoundedRect(new PointD(LE, TE), new PointD(InnerWidth + LE, InnerHeight + TE), (double)roundedInnerCorners.Value); Outline.AddPolyLine(PL2, 0); #region fiducials List <PointD> Fiducials = new List <PointD>(); foreach (DataGridViewRow dataRow in fiducialsListData.Rows) { PointD fiducialPoint = new PointD(); if (dataRow.Cells != null && dataRow.Cells["XCoordinate"].Value != null && dataRow.Cells["YCoordinate"].Value != null) { fiducialPoint.X = double.Parse(dataRow.Cells["XCoordinate"].Value.ToString()); fiducialPoint.Y = double.Parse(dataRow.Cells["YCoordinate"].Value.ToString()); if (string.Equals(dataRow.Cells["fiducialLayer"].Value.ToString(), "Top")) { TopCopper.AddFlash(fiducialPoint, double.Parse(dataRow.Cells["fiducialCopperDiameter"].Value.ToString()) / 2.0); TopSolderMask.AddFlash(fiducialPoint, double.Parse(dataRow.Cells["fiducialSolderMaskDiam"].Value.ToString()) / 2.0); } else { BottomCopper.AddFlash(fiducialPoint, double.Parse(dataRow.Cells["fiducialCopperDiameter"].Value.ToString()) / 2.0); BottomSolderMask.AddFlash(fiducialPoint, double.Parse(dataRow.Cells["fiducialSolderMaskDiam"].Value.ToString()) / 2.0); } } } #endregion string FrameTitle = FrameTitleBox.Text; if (FrameTitle.Length > 0) { FontSet FS = FontSet.Load("Font.xml"); TopSilk.DrawString(new PointD(OuterWidth / 2.0, OuterHeight - TE / 4.0), FS, FrameTitle + " - top", TE / 4.0, 0.1, StringAlign.CenterCenter); TopCopper.DrawString(new PointD(OuterWidth / 2.0, OuterHeight - TE / 4.0), FS, FrameTitle + " - top", TE / 4.0, 0.1, StringAlign.CenterCenter); BottomSilk.DrawString(new PointD(OuterWidth / 2.0, OuterHeight - TE / 4.0), FS, FrameTitle + " - bottom", TE / 4.0, 0.1, StringAlign.CenterCenter, true); BottomCopper.DrawString(new PointD(OuterWidth / 2.0, OuterHeight - TE / 4.0), FS, FrameTitle + " - bottom", TE / 4.0, 0.1, StringAlign.CenterCenter, true); } foreach (var a in DrillHoles) { TopSolderMask.AddFlash(a, mountholediameter / 2.0 + 1.0); BottomSolderMask.AddFlash(a, mountholediameter / 2.0 + 1.0); } Outline.Write(OutName + ".gko"); TopSilk.Write(OutName + ".gto"); TopCopper.Write(OutName + ".gtl"); TopSolderMask.Write(OutName + ".gts"); BottomSilk.Write(OutName + ".gbo"); BottomCopper.Write(OutName + ".gbl"); BottomSolderMask.Write(OutName + ".gbs"); Files.Add(OutName + ".gko"); Files.Add(OutName + ".gto"); Files.Add(OutName + ".gtl"); Files.Add(OutName + ".gts"); Files.Add(OutName + ".gbo"); Files.Add(OutName + ".gbl"); Files.Add(OutName + ".gbs"); GerberImageCreator GIC = new GerberImageCreator(); GIC.AddBoardsToSet(Files, new StandardConsoleLog()); GIC.WriteImageFiles(OutName, 50); // Gerber.SaveGerberFileToImage(OutName + ".gko", OutName + ".gko.png", 200, Color.Black, Color.White); // Gerber.SaveGerberFileToImage(OutName + ".gto", OutName + ".gto.png", 200, Color.Black, Color.White); } }
public static List <string> WriteSideEdgeFrame(PolyLine pl, FrameSettings FS, string basefile, bool insideedge = true) { List <string> Files = new List <string>(); try { int polyid = 0; string fname = System.IO.Path.GetFileName(basefile); string fnamenoext = System.IO.Path.GetFileNameWithoutExtension(basefile); string OutName = Path.Combine(System.IO.Path.GetDirectoryName(basefile), fnamenoext); Console.WriteLine("writing frame files to {0}", OutName); Bounds B = new Bounds(); B.AddPolyLine(pl); // FS.innerHeight = B.Height(); // FS.innerWidth = B.Width(); double W = (double)FS.innerWidth; double H = (double)FS.innerHeight; double TE = (double)FS.topEdge; double LE = (double)FS.leftEdge; double OuterWidth = W + LE * 2.0; double OuterHeight = H + TE * 2.0; double InnerWidth = W; double InnerHeight = H; PCBWriterSet PCB = new PCBWriterSet(); double mountholediameter = (double)FS.holeDiameter; // board outline PolyLine PL = new PolyLine(polyid++); PL.MakeRoundedRect(new PointD(0, 0), new PointD(OuterWidth, OuterHeight), (double)FS.roundedOuterCorners); PCB.AddOutline(PL); if (insideedge) { PolyLine PL2 = new PolyLine(polyid++); PL2.MakeRoundedRect(new PointD(LE, TE), new PointD(InnerWidth + LE, InnerHeight + TE), (double)FS.roundedInnerCorners); PCB.AddOutline(PL2); } #region fiducials List <PointD> Fiducials = new List <PointD>(); foreach (var P in FS.fiducialsListData) { PointD fiducialPoint = P.pos; PCB.Fiducial(fiducialPoint, P.CopperDiameter, P.MaskDiameter, P.Top); } #endregion string FrameTitle = FS.FrameTitle; string FrameTopTitle = FrameTitle + " - Top"; string FrameBottomTitle = FrameTitle + " - Bottom"; double verticaltitleclearance = 0; double horizontaltitleclearance = 0; if (FrameTitle.Length > 0) { FontSet fnt = FontSet.Load("Font.xml"); horizontaltitleclearance = fnt.StringWidth(FrameBottomTitle, TE / 4) + mountholediameter * 2 + FS.topEdge; verticaltitleclearance = fnt.StringWidth(FrameBottomTitle, TE / 4) + mountholediameter * 2 + FS.topEdge; PCB.Label(fnt, new PointD(OuterWidth / 2.0, OuterHeight - TE / 4.0), FrameTopTitle, TE / 4, StringAlign.CenterCenter, 0.1, true, true, 0); PCB.Label(fnt, new PointD(OuterWidth - LE / 4, OuterHeight / 2), FrameTopTitle, TE / 4.0, StringAlign.CenterCenter, 0.1, true, true, -90); PCB.Label(fnt, new PointD(LE / 4, OuterHeight / 2), FrameTopTitle, TE / 4.0, StringAlign.CenterCenter, 0.1, true, true, 90); PCB.Label(fnt, new PointD(OuterWidth / 2.0, TE - TE / 4.0), FrameTopTitle, TE / 4.0, StringAlign.CenterCenter, 0.1, true, true, 0); PCB.Label(fnt, new PointD(OuterWidth / 2.0, OuterHeight - TE / 4.0), FrameBottomTitle, TE / 4, StringAlign.CenterCenter, 0.1, true, true, 0, true, true, true); PCB.Label(fnt, new PointD(OuterWidth - LE / 4, OuterHeight / 2), FrameBottomTitle, TE / 4.0, StringAlign.CenterCenter, 0.1, true, true, -90, true); PCB.Label(fnt, new PointD(LE / 4, OuterHeight / 2), FrameBottomTitle, TE / 4.0, StringAlign.CenterCenter, 0.1, true, true, 90, true); PCB.Label(fnt, new PointD(OuterWidth / 2.0, TE - TE / 4.0), FrameBottomTitle, TE / 4.0, StringAlign.CenterCenter, 0.1, true, true, 0, true); } if (FS.addHoles) { double side = LE / 2.0; double top = TE / 2.0; PCB.Drill(new PointD(side, top), mountholediameter, 1); PCB.Drill(new PointD(OuterWidth - side, top), mountholediameter, 1); PCB.Drill(new PointD(OuterWidth - side, OuterHeight - top), mountholediameter, 1); PCB.Drill(new PointD(side, OuterHeight - top), mountholediameter, 1); double dx = (OuterWidth - side) - side; double dy = (OuterHeight - top) - top; dx -= horizontaltitleclearance; dy -= verticaltitleclearance; dx /= 2; dy /= 2; int horiz = (int)Math.Ceiling((dx / 2) / FS.MaxMountHoleSpacingMM); int vert = (int)Math.Ceiling((dy / 2) / FS.MaxMountHoleSpacingMM); dx /= (float)horiz; dy /= (float)vert; if (dx < FS.MinMountHoleSpacingMM) { horiz = 0; } if (dy < FS.MinMountHoleSpacingMM) { vert = 0; } for (int i = 1; i <= horiz; i++) { PCB.Drill(new PointD(side + (dx) * i, top), mountholediameter, 1); PCB.Drill(new PointD((OuterWidth - side) - (dx) * i, top), mountholediameter, 1); PCB.Drill(new PointD(side + (dx) * i, OuterHeight - top), mountholediameter, 1); PCB.Drill(new PointD((OuterWidth - side) - (dx) * i, OuterHeight - top), mountholediameter, 1); } for (int i = 1; i <= vert; i++) { PCB.Drill(new PointD(side, top + (dy) * i), mountholediameter, 1); PCB.Drill(new PointD(side, (OuterHeight - top) - (dy) * i), mountholediameter, 1); PCB.Drill(new PointD((OuterWidth - side), top + (dy) * i), mountholediameter, 1); PCB.Drill(new PointD((OuterWidth - side), (OuterHeight - top) - (dy) * i), mountholediameter, 1); } } PolyLine Left = new PolyLine(); PolyLine Right = new PolyLine(); PolyLine Top = new PolyLine(); PolyLine Bottom = new PolyLine(); Top.MakePRectangle(OuterWidth + 1, FS.topEdge + 1, -1, -1); Bottom.MakePRectangle(OuterWidth, FS.topEdge, 0, OuterHeight - FS.topEdge); Left.MakePRectangle(FS.leftEdge + 1, OuterHeight + 1, -1, -1); Right.MakePRectangle(FS.leftEdge, OuterHeight, OuterWidth - FS.leftEdge, 0); PCB.ArtInclusions.Add(Left); PCB.ArtInclusions.Add(Right); PCB.ArtInclusions.Add(Top); PCB.ArtInclusions.Add(Bottom); //PCB.CellularArt(); Files.AddRange(PCB.Write(Path.GetDirectoryName(basefile), Path.GetFileNameWithoutExtension(basefile), FS.offset));; if (FS.RenderSample) { GerberImageCreator GIC = new GerberImageCreator(); GIC.AddBoardsToSet(Files, new SilentLog()); GIC.WriteImageFiles(OutName, 200, true, false, true, null); } } catch (Exception e) { Console.Write(" Exception while making frames:{0}", e.Message); } foreach (var s in Files) { Console.WriteLine("Writen edge file {0} succesfully", s); } return(Files); }
private void button1_Click(object sender, EventArgs e) { if (saveFileDialog1.ShowDialog() == DialogResult.OK) { string fname = System.IO.Path.GetFileName(saveFileDialog1.FileName); string fnamenoext = System.IO.Path.GetFileNameWithoutExtension(saveFileDialog1.FileName); string OutName = ""; if (fname.Length != fnamenoext.Length) { int extlen = fname.Length - fnamenoext.Length; OutName = saveFileDialog1.FileName.Substring(0, saveFileDialog1.FileName.Length - extlen); } else { OutName = saveFileDialog1.FileName; } List <string> Files = new List <string>(); double W = (double)innerWidth.Value; double H = (double)innerHeight.Value; double TE = (double)topEdge.Value; double LE = (double)leftEdge.Value; double OuterWidth = W + LE * 2.0; double OuterHeight = H + TE * 2.0; double InnerWidth = W; double InnerHeight = H; GerberArtWriter Outline = new GerberArtWriter(); GerberArtWriter TopSilk = new GerberArtWriter(); GerberArtWriter TopCopper = new GerberArtWriter(); GerberArtWriter TopSolderMask = new GerberArtWriter(); GerberArtWriter BottomSilk = new GerberArtWriter(); GerberArtWriter BottomCopper = new GerberArtWriter(); GerberArtWriter BottomSolderMask = new GerberArtWriter(); List <PointD> DrillHoles = new List <PointD>(); double mountholediameter = (double)holeDiameter.Value; if (addHolesCheck.Checked) { double side = LE / 2.0; double top = TE / 2.0; DrillHoles.Add(new PointD(side, top)); DrillHoles.Add(new PointD(OuterWidth - side, top)); DrillHoles.Add(new PointD(OuterWidth - side, OuterHeight - top)); DrillHoles.Add(new PointD(side, OuterHeight - top)); ExcellonFile EF = new ExcellonFile(); ExcellonTool MountHoleDrill = new ExcellonTool(); MountHoleDrill.Radius = mountholediameter / 2.0; foreach (var a in DrillHoles) { MountHoleDrill.Drills.Add(a); } EF.Tools[10] = MountHoleDrill; EF.Write(OutName + ".txt", 0, 0, 0, 0); Files.Add(OutName + ".txt"); } PolyLine PL = new PolyLine(); PL.MakeRoundedRect(new PointD(0, 0), new PointD(OuterWidth, OuterHeight), (double)roundedOuterCorners.Value); Outline.AddPolyLine(PL, 0); PolyLine PL2 = new PolyLine(); PL2.MakeRoundedRect(new PointD(LE, TE), new PointD(InnerWidth + LE, InnerHeight + TE), (double)roundedInnerCorners.Value); Outline.AddPolyLine(PL2, 0); if (fiducials.Checked) { List <PointD> Fiducials = new List <PointD>(); Fiducials.Add(new PointD(LE * 2.0, TE / 2.0)); Fiducials.Add(new PointD(OuterWidth - LE * 2.0, TE / 2.0)); Fiducials.Add(new PointD(OuterWidth - LE * 2.0, OuterHeight - TE / 2.0)); Fiducials.Add(new PointD(LE * 2.0, OuterHeight - TE / 2.0)); Fiducials.Add(new PointD(OuterWidth / 2, TE / 2.0)); //generate extra non symetric fiducial foreach (var A in Fiducials) { TopCopper.AddFlash(A, 1.0); TopSolderMask.AddFlash(A, 3.0); } } string FrameTitle = FrameTitleBox.Text; if (FrameTitle.Length > 0) { FontSet FS = FontSet.Load("Font.xml"); TopSilk.DrawString(new PointD(OuterWidth / 2.0, OuterHeight - TE / 4.0), FS, FrameTitle + " - top", TE / 4.0, 0.1, StringAlign.CenterCenter); TopCopper.DrawString(new PointD(OuterWidth / 2.0, OuterHeight - TE / 4.0), FS, FrameTitle + " - top", TE / 4.0, 0.1, StringAlign.CenterCenter); BottomSilk.DrawString(new PointD(OuterWidth / 2.0, OuterHeight - TE / 4.0), FS, FrameTitle + " - bottom", TE / 4.0, 0.1, StringAlign.CenterCenter, true); BottomCopper.DrawString(new PointD(OuterWidth / 2.0, OuterHeight - TE / 4.0), FS, FrameTitle + " - bottom", TE / 4.0, 0.1, StringAlign.CenterCenter, true); } foreach (var a in DrillHoles) { TopSolderMask.AddFlash(a, mountholediameter / 2.0 + 1.0); BottomSolderMask.AddFlash(a, mountholediameter / 2.0 + 1.0); } Outline.Write(OutName + ".gko"); TopSilk.Write(OutName + ".gto"); TopCopper.Write(OutName + ".gtl"); TopSolderMask.Write(OutName + ".gts"); BottomSilk.Write(OutName + ".gbo"); BottomCopper.Write(OutName + ".gbl"); BottomSolderMask.Write(OutName + ".gbs"); Files.Add(OutName + ".gko"); Files.Add(OutName + ".gto"); Files.Add(OutName + ".gtl"); Files.Add(OutName + ".gts"); Files.Add(OutName + ".gbo"); Files.Add(OutName + ".gbl"); Files.Add(OutName + ".gbs"); GerberImageCreator GIC = new GerberImageCreator(); GIC.AddBoardsToSet(Files); GIC.WriteImageFiles(OutName, 50); // Gerber.SaveGerberFileToImage(OutName + ".gko", OutName + ".gko.png", 200, Color.Black, Color.White); // Gerber.SaveGerberFileToImage(OutName + ".gto", OutName + ".gto.png", 200, Color.Black, Color.White); } }