Loading files
This file is pinned to the selected release. Download the original to open it in your design tool.
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using GerberLibrary;
using GerberLibrary.Core;
using Ionic.Zip;
using System.IO;
namespace GerberViewer
{
public class LoadedStuff
{
public class DisplayGerber
{
public bool visible;
public ParsedGerber File;
public int sortindex;
public Color Color;
internal LayerDisplay Panel;
}
public GerberLibrary.BoardRenderColorSet Colors = new GerberLibrary.BoardRenderColorSet();
public List<DisplayGerber> Gerbers = new List<DisplayGerber>();
internal bool CrossHairActive;
internal float MouseY;
internal float MouseX;
public void AddFileStream(ProgressLog log, MemoryStream S, string origfilename, double drillscaler = 1.0)
{
var FileType = Gerber.FindFileTypeFromStream(new StreamReader( S), origfilename);
S.Seek(0, SeekOrigin.Begin);
if (FileType == BoardFileType.Unsupported)
{
return;
}
ParsedGerber PLS;
GerberParserState State = new GerberParserState() { PreCombinePolygons = false };
if (FileType == BoardFileType.Drill)
{
if (Gerber.ExtremelyVerbose) Console.WriteLine("Log: Drill file: {0}", origfilename);
PLS = PolyLineSet.LoadExcellonDrillFileFromStream(log, new StreamReader(S), origfilename, false, drillscaler);
S.Seek(0, SeekOrigin.Begin);
// ExcellonFile EF = new ExcellonFile();
// EF.Load(a);
}
else
{
bool forcezerowidth = false;
bool precombinepolygons = false;
BoardSide Side = BoardSide.Unknown;
BoardLayer Layer = BoardLayer.Unknown;
Gerber.DetermineBoardSideAndLayer(origfilename, out Side, out Layer);
if (Layer == BoardLayer.Outline || Layer == BoardLayer.Mill)
{
forcezerowidth = true;
precombinepolygons = true;
}
State.PreCombinePolygons = precombinepolygons;
PLS = PolyLineSet.LoadGerberFileFromStream(log, new StreamReader(S),origfilename, forcezerowidth, false, State);
S.Seek(0, SeekOrigin.Begin);
PLS.Side = Side;
PLS.Layer = Layer;
}
Gerbers.Add(new DisplayGerber() { File = PLS, visible = true, sortindex = Gerber.GetDefaultSortOrder(PLS.Side, PLS.Layer), Color = Colors.GetDefaultColor(PLS.Layer, PLS.Side) });
}
public void AddFile(ProgressLog log, string filename, double drillscaler = 1.0)
{
string[] filesplit = filename.Split('.');
string ext = filesplit[filesplit.Count() - 1].ToLower();
if (ext == "zip")
{
using (ZipFile zip1 = ZipFile.Read(filename))
{
foreach (ZipEntry e in zip1)
{
MemoryStream MS = new MemoryStream();
if (e.IsDirectory == false)
{
e.Extract(MS);
MS.Seek(0, SeekOrigin.Begin);
AddFileStream(log, MS, e.FileName, drillscaler);
}
}
}
return;
}
MemoryStream MS2 = new MemoryStream();
FileStream FS = File.OpenRead(filename);
FS.CopyTo(MS2);
MS2.Seek(0, SeekOrigin.Begin);
AddFileStream(log, MS2, filename, drillscaler);
}
}
}
5203ce801This file is pinned to the selected release. Download the original to open it in your design tool.