diff --git a/AltiumSharp/BasicTypes/Parameters.cs b/AltiumSharp/BasicTypes/Parameters.cs index 2d02cb6..7404c96 100644 --- a/AltiumSharp/BasicTypes/Parameters.cs +++ b/AltiumSharp/BasicTypes/Parameters.cs @@ -70,6 +70,9 @@ public string AsStringOrDefault(string defaultValue = default) => public int AsIntOrDefault(int defaultValue = default) => int.TryParse(_data, NumberStyles.Integer, Fp, out var result) ? result : defaultValue; + public long AsLongOrDefault(long defaultValue = default) => + long.TryParse(_data, NumberStyles.Integer, Fp, out var result) ? result : defaultValue; + /// /// Gets the enum value of this parameter, or a default value. /// @@ -463,6 +466,12 @@ public void Add(string key, string? value, bool ignoreDefaultValue = true) => public void Add(string key, int value, bool ignoreDefaultValue = true) => AddData(key, value, ignoreDefaultValue); + /// + /// Adds a key with a long value. + /// + public void Add(string key, long value, bool ignoreDefaultValue = true) => + AddData(key, value, ignoreDefaultValue); + /// /// Adds a key with an enum value. /// diff --git a/AltiumSharp/Records/Pcb/PcbComponentBody.cs b/AltiumSharp/Records/Pcb/PcbComponentBody.cs index 142687e..e4b2ca4 100644 --- a/AltiumSharp/Records/Pcb/PcbComponentBody.cs +++ b/AltiumSharp/Records/Pcb/PcbComponentBody.cs @@ -29,7 +29,8 @@ public class PcbComponentBody : PcbPrimitive public CoordPoint TextureSize { get; set; } public double TextureRotation { get; set; } public string ModelId { get; set; } - public int ModelChecksum { get; set; } + public long ModelChecksum { get; set; } + public string ModelSource{ get; set; } public bool ModelEmbed { get; set; } public CoordPoint Model2DLocation { get; set; } public double Model2DRotation { get; set; } @@ -82,7 +83,8 @@ public void ImportFromParameters(ParameterCollection p) TextureSize = new CoordPoint(p["TEXTURESIZEX"].AsCoord(), p["TEXTURESIZEY"].AsCoord()); TextureRotation = p["TEXTUREROTATION"].AsDouble(); ModelId = p["MODELID"].AsStringOrDefault(); - ModelChecksum = p["MODEL.CHECKSUM"].AsIntOrDefault(); + ModelChecksum = p["MODEL.CHECKSUM"].AsLongOrDefault(); + ModelSource = p["MODEL.SOURCE"].AsString(); ModelEmbed = p["MODEL.EMBED"].AsBool(); Model2DLocation = new CoordPoint(p["MODEL.2D.X"].AsCoord(), p["MODEL.2D.Y"].AsCoord()); Model2DRotation = p["MODEL.2D.ROTATION"].AsDoubleOrDefault(); @@ -101,37 +103,39 @@ public void ExportToParameters(ParameterCollection p) p.UseLongBooleans = true; p.Add("V7_LAYER", V7Layer); - p.Add("NAME", Name); - p.Add("KIND", Kind); + p.Add("NAME", Name, false); + p.Add("KIND", Kind, false); p.Add("SUBPOLYINDEX", SubPolyIndex); p.Add("UNIONINDEX", UnionIndex); p.Add("ARCRESOLUTION", ArcResolution); - p.Add("ISSHAPEBASED", IsShapeBased); - p.Add("STANDOFFHEIGHT", StandOffHeight); - p.Add("OVERALLHEIGHT", OverallHeight); + p.Add("ISSHAPEBASED", IsShapeBased, false); + p.Add("STANDOFFHEIGHT", StandOffHeight, false); + p.Add("OVERALLHEIGHT", OverallHeight, false); p.Add("BODYPROJECTION", BodyProjection); p.Add("ARCRESOLUTION", ArcResolution); p.Add("BODYCOLOR3D", BodyColor3D); p.Add("BODYOPACITY3D", BodyOpacity3D); p.Add("IDENTIFIER", string.Join(",", Identifier?.Select(c => (int)c) ?? Enumerable.Empty())); - p.Add("TEXTURE", Texture); - p.Add("TEXTURECENTERX", TextureCenter.X); - p.Add("TEXTURECENTERY", TextureCenter.Y); - p.Add("TEXTURESIZEX", TextureSize.X); - p.Add("TEXTURESIZEY", TextureSize.Y); - p.Add("TEXTUREROTATION", TextureRotation); + p.Add("TEXTURE", Texture, false); + p.Add("TEXTURECENTERX", TextureCenter.X, false); + p.Add("TEXTURECENTERY", TextureCenter.Y, false); + p.Add("TEXTURESIZEX", TextureSize.X, false); + p.Add("TEXTURESIZEY", TextureSize.Y, false); + p.Add("TEXTUREROTATION", TextureRotation, false); p.Add("MODELID", ModelId); - p.Add("MODEL.CHECKSUM", ModelChecksum); + p.Add("MODEL.CHECKSUM", ModelChecksum, false); + p.Add("MODEL.SOURCE", ModelSource); p.Add("MODEL.EMBED", ModelEmbed); - p.Add("MODEL.2D.X", Model2DLocation.X); - p.Add("MODEL.2D.Y", Model2DLocation.Y); - p.Add("MODEL.2D.ROTATION", Model2DRotation); - p.Add("MODEL.3D.ROTX", Model3DRotX); - p.Add("MODEL.3D.ROTY", Model3DRotY); - p.Add("MODEL.3D.ROTZ", Model3DRotZ); - p.Add("MODEL.3D.DZ", Model3DDz); + p.Add("MODEL.2D.X", Model2DLocation.X, false); + p.Add("MODEL.2D.Y", Model2DLocation.Y, false); + p.Add("MODEL.2D.ROTATION", Model2DRotation, false); + p.Add("MODEL.3D.ROTX", Model3DRotX, false); + p.Add("MODEL.3D.ROTY", Model3DRotY, false); + p.Add("MODEL.3D.ROTZ", Model3DRotZ, false); + p.Add("MODEL.3D.DZ", Model3DDz, false); p.Add("MODEL.SNAPCOUNT", ModelSnapCount); p.Add("MODEL.MODELTYPE", ModelType); + p.Add("MODEL.NAME", Identifier + ".STEP"); } public ParameterCollection ExportToParameters() diff --git a/AltiumSharp/Records/Pcb/PcbLibHeader.cs b/AltiumSharp/Records/Pcb/PcbLibHeader.cs index bcfa671..8a92773 100644 --- a/AltiumSharp/Records/Pcb/PcbLibHeader.cs +++ b/AltiumSharp/Records/Pcb/PcbLibHeader.cs @@ -30,7 +30,7 @@ public class PcbLibHeader public bool LayerMasterStackV8ShowTopDielectric { get; internal set; } public bool LayerMasterStackV8ShowBottomDielectric { get; internal set; } public bool LayerMasterStackV8IsFlex { get; internal set; } - public List<(string Id, string Name, int LayerId, bool UsedByPrims, int DielType, double DielConst, Coord DielHeight, string DielMaterial, Coord COverLayEXPansiOn, Coord CopThick, int ComponentPlacement, bool MechEnabled)> LayerV8 { get; internal set; } + public List<(string Id, string Name, int LayerId, bool UsedByPrims, int DielType, double DielConst, Coord DielHeight, string DielMaterial, Coord COverLayEXPansiOn, Coord CopThick, int ComponentPlacement, bool MechEnabled, string MechKind)> LayerV8 { get; internal set; } public int TopType { get; set; } public double TopConst { get; set; } public Coord TopHeight { get; set; } @@ -42,8 +42,9 @@ public class PcbLibHeader public int LayerStackStyle { get; set; } public bool ShowTopDielectric { get; set; } public bool ShowBottomDielectric { get; set; } - public List<(string Name, int Prev, int Next, bool MechEnabled, Coord CopThick, int DielType, double DielConst, Coord DielHeight, string DielMaterial)> Layer { get; internal set; } - public List<(string Name, int Prev, int Next, bool MechEnabled, Coord CopThick, int DielType, double DielConst, Coord DielHeight, string DielMaterial, int LayerId)> LayerV7 { get; internal set; } + public List<(string Name, int Prev, int Next, bool MechEnabled, string MechKind, Coord CopThick, int DielType, double DielConst, Coord DielHeight, string DielMaterial)> Layer { get; internal set; } + public List<(string Name, int Prev, int Next, bool MechEnabled, string MechKind, Coord CopThick, int DielType, double DielConst, Coord DielHeight, string DielMaterial, int LayerId)> LayerV7 { get; internal set; } + public List<(string Layer1, string Layer2)> MechanicalPair { get; set; } public Coord BigVisibleGridSize { get; set; } public Coord VisibleGridSize { get; set; } public Coord SnapGridSize { get; set; } @@ -190,106 +191,106 @@ public PcbLibHeader() BottomConst = 3.5; BottomHeight = Coord.FromMils(0.4); BottomMaterial = "Solder Resist"; - Layer = new List<(string Name, int Prev, int Next, bool MechEnabled, Coord CopThick, int DielType, double DielConst, Coord DielHeight, string DielMaterial)>(); - Layer.Add(("Top Layer", 0, 32, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Mid-Layer 1", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Mid-Layer 2", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Mid-Layer 3", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Mid-Layer 4", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Mid-Layer 5", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Mid-Layer 6", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Mid-Layer 7", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Mid-Layer 8", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Mid-Layer 9", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Mid-Layer 10", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Mid-Layer 11", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Mid-Layer 12", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Mid-Layer 13", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Mid-Layer 14", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Mid-Layer 15", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Mid-Layer 16", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Mid-Layer 17", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Mid-Layer 18", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Mid-Layer 19", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Mid-Layer 20", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Mid-Layer 21", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Mid-Layer 22", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Mid-Layer 23", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Mid-Layer 24", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Mid-Layer 25", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Mid-Layer 26", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Mid-Layer 27", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Mid-Layer 28", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Mid-Layer 29", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Mid-Layer 30", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Bottom Layer", 1, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Top Overlay", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Bottom Overlay", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Top Paste", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Bottom Paste", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Top Solder", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Bottom Solder", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Internal Plane 1", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Internal Plane 2", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Internal Plane 3", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Internal Plane 4", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Internal Plane 5", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Internal Plane 6", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Internal Plane 7", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Internal Plane 8", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Internal Plane 9", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Internal Plane 10", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Internal Plane 11", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Internal Plane 12", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Internal Plane 13", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Internal Plane 14", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Internal Plane 15", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Internal Plane 16", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Drill Guide", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Keep-Out Layer", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Mechanical 1", 0, 0, true, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Mechanical 2", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Mechanical 3", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Mechanical 4", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Mechanical 5", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Mechanical 6", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Mechanical 7", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Mechanical 8", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Mechanical 9", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Mechanical 10", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Mechanical 11", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Mechanical 12", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Mechanical 13", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Mechanical 14", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Mechanical 15", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Mechanical 16", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Drill Drawing", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Multi-Layer", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Connections", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Background", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("DRC Error Markers", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Selections", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Visible Grid 1", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Visible Grid 2", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Pad Holes", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - Layer.Add(("Via Holes", 0, 0, false, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); - LayerV7 = new List<(string Name, int Prev, int Next, bool MechEnabled, Coord CopThick, int DielType, double DielConst, Coord DielHeight, string DielMaterial, int LayerId)>(); - LayerV7.Add(("Mechanical 17", 16973824, 16973824, false, Coord.FromMils(0), 0, 4.8, Coord.FromMils(0), "FR-4", Coord.FromInt32(16908305))); - LayerV7.Add(("Mechanical 18", 16973824, 16973824, false, Coord.FromMils(0), 0, 4.8, Coord.FromMils(0), "FR-4", Coord.FromInt32(16908306))); - LayerV7.Add(("Mechanical 19", 16973824, 16973824, false, Coord.FromMils(0), 0, 4.8, Coord.FromMils(0), "FR-4", Coord.FromInt32(16908307))); - LayerV7.Add(("Mechanical 20", 16973824, 16973824, false, Coord.FromMils(0), 0, 4.8, Coord.FromMils(0), "FR-4", Coord.FromInt32(16908308))); - LayerV7.Add(("Mechanical 21", 16973824, 16973824, false, Coord.FromMils(0), 0, 4.8, Coord.FromMils(0), "FR-4", Coord.FromInt32(16908309))); - LayerV7.Add(("Mechanical 22", 16973824, 16973824, false, Coord.FromMils(0), 0, 4.8, Coord.FromMils(0), "FR-4", Coord.FromInt32(16908310))); - LayerV7.Add(("Mechanical 23", 16973824, 16973824, false, Coord.FromMils(0), 0, 4.8, Coord.FromMils(0), "FR-4", Coord.FromInt32(16908311))); - LayerV7.Add(("Mechanical 24", 16973824, 16973824, false, Coord.FromMils(0), 0, 4.8, Coord.FromMils(0), "FR-4", Coord.FromInt32(16908312))); - LayerV7.Add(("Mechanical 25", 16973824, 16973824, false, Coord.FromMils(0), 0, 4.8, Coord.FromMils(0), "FR-4", Coord.FromInt32(16908313))); - LayerV7.Add(("Mechanical 26", 16973824, 16973824, false, Coord.FromMils(0), 0, 4.8, Coord.FromMils(0), "FR-4", Coord.FromInt32(16908314))); - LayerV7.Add(("Mechanical 27", 16973824, 16973824, false, Coord.FromMils(0), 0, 4.8, Coord.FromMils(0), "FR-4", Coord.FromInt32(16908315))); - LayerV7.Add(("Mechanical 28", 16973824, 16973824, false, Coord.FromMils(0), 0, 4.8, Coord.FromMils(0), "FR-4", Coord.FromInt32(16908316))); - LayerV7.Add(("Mechanical 29", 16973824, 16973824, false, Coord.FromMils(0), 0, 4.8, Coord.FromMils(0), "FR-4", Coord.FromInt32(16908317))); - LayerV7.Add(("Mechanical 30", 16973824, 16973824, false, Coord.FromMils(0), 0, 4.8, Coord.FromMils(0), "FR-4", Coord.FromInt32(16908318))); - LayerV7.Add(("Mechanical 31", 16973824, 16973824, false, Coord.FromMils(0), 0, 4.8, Coord.FromMils(0), "FR-4", Coord.FromInt32(16908319))); - LayerV7.Add(("Mechanical 32", 16973824, 16973824, false, Coord.FromMils(0), 0, 4.8, Coord.FromMils(0), "FR-4", Coord.FromInt32(16908320))); + Layer = new List<(string Name, int Prev, int Next, bool MechEnabled, string MechKind, Coord CopThick, int DielType, double DielConst, Coord DielHeight, string DielMaterial)>(); + Layer.Add(("Top Layer", 0, 32, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Mid-Layer 1", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Mid-Layer 2", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Mid-Layer 3", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Mid-Layer 4", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Mid-Layer 5", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Mid-Layer 6", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Mid-Layer 7", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Mid-Layer 8", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Mid-Layer 9", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Mid-Layer 10", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Mid-Layer 11", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Mid-Layer 12", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Mid-Layer 13", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Mid-Layer 14", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Mid-Layer 15", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Mid-Layer 16", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Mid-Layer 17", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Mid-Layer 18", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Mid-Layer 19", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Mid-Layer 20", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Mid-Layer 21", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Mid-Layer 22", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Mid-Layer 23", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Mid-Layer 24", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Mid-Layer 25", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Mid-Layer 26", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Mid-Layer 27", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Mid-Layer 28", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Mid-Layer 29", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Mid-Layer 30", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Bottom Layer", 1, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Top Overlay", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Bottom Overlay", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Top Paste", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Bottom Paste", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Top Solder", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Bottom Solder", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Internal Plane 1", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Internal Plane 2", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Internal Plane 3", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Internal Plane 4", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Internal Plane 5", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Internal Plane 6", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Internal Plane 7", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Internal Plane 8", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Internal Plane 9", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Internal Plane 10", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Internal Plane 11", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Internal Plane 12", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Internal Plane 13", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Internal Plane 14", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Internal Plane 15", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Internal Plane 16", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Drill Guide", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Keep-Out Layer", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Mechanical 1", 0, 0, true, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Mechanical 2", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Mechanical 3", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Mechanical 4", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Mechanical 5", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Mechanical 6", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Mechanical 7", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Mechanical 8", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Mechanical 9", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Mechanical 10", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Mechanical 11", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Mechanical 12", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Mechanical 13", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Mechanical 14", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Mechanical 15", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Mechanical 16", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Drill Drawing", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Multi-Layer", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Connections", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Background", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("DRC Error Markers", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Selections", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Visible Grid 1", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Visible Grid 2", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Pad Holes", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + Layer.Add(("Via Holes", 0, 0, false, null, Coord.FromMils(1.4), 0, 4.8, Coord.FromMils(12.6), "FR-4")); + LayerV7 = new List<(string Name, int Prev, int Next, bool MechEnabled, string MechKind, Coord CopThick, int DielType, double DielConst, Coord DielHeight, string DielMaterial, int LayerId)>(); + LayerV7.Add(("Mechanical 17", 16973824, 16973824, false, null, Coord.FromMils(0), 0, 4.8, Coord.FromMils(0), "FR-4", Coord.FromInt32(16908305))); + LayerV7.Add(("Mechanical 18", 16973824, 16973824, false, null, Coord.FromMils(0), 0, 4.8, Coord.FromMils(0), "FR-4", Coord.FromInt32(16908306))); + LayerV7.Add(("Mechanical 19", 16973824, 16973824, false, null, Coord.FromMils(0), 0, 4.8, Coord.FromMils(0), "FR-4", Coord.FromInt32(16908307))); + LayerV7.Add(("Mechanical 20", 16973824, 16973824, false, null, Coord.FromMils(0), 0, 4.8, Coord.FromMils(0), "FR-4", Coord.FromInt32(16908308))); + LayerV7.Add(("Mechanical 21", 16973824, 16973824, false, null, Coord.FromMils(0), 0, 4.8, Coord.FromMils(0), "FR-4", Coord.FromInt32(16908309))); + LayerV7.Add(("Mechanical 22", 16973824, 16973824, false, null, Coord.FromMils(0), 0, 4.8, Coord.FromMils(0), "FR-4", Coord.FromInt32(16908310))); + LayerV7.Add(("Mechanical 23", 16973824, 16973824, false, null, Coord.FromMils(0), 0, 4.8, Coord.FromMils(0), "FR-4", Coord.FromInt32(16908311))); + LayerV7.Add(("Mechanical 24", 16973824, 16973824, false, null, Coord.FromMils(0), 0, 4.8, Coord.FromMils(0), "FR-4", Coord.FromInt32(16908312))); + LayerV7.Add(("Mechanical 25", 16973824, 16973824, false, null, Coord.FromMils(0), 0, 4.8, Coord.FromMils(0), "FR-4", Coord.FromInt32(16908313))); + LayerV7.Add(("Mechanical 26", 16973824, 16973824, false, null, Coord.FromMils(0), 0, 4.8, Coord.FromMils(0), "FR-4", Coord.FromInt32(16908314))); + LayerV7.Add(("Mechanical 27", 16973824, 16973824, false, null, Coord.FromMils(0), 0, 4.8, Coord.FromMils(0), "FR-4", Coord.FromInt32(16908315))); + LayerV7.Add(("Mechanical 28", 16973824, 16973824, false, null, Coord.FromMils(0), 0, 4.8, Coord.FromMils(0), "FR-4", Coord.FromInt32(16908316))); + LayerV7.Add(("Mechanical 29", 16973824, 16973824, false, null, Coord.FromMils(0), 0, 4.8, Coord.FromMils(0), "FR-4", Coord.FromInt32(16908317))); + LayerV7.Add(("Mechanical 30", 16973824, 16973824, false, null, Coord.FromMils(0), 0, 4.8, Coord.FromMils(0), "FR-4", Coord.FromInt32(16908318))); + LayerV7.Add(("Mechanical 31", 16973824, 16973824, false, null, Coord.FromMils(0), 0, 4.8, Coord.FromMils(0), "FR-4", Coord.FromInt32(16908319))); + LayerV7.Add(("Mechanical 32", 16973824, 16973824, false, null, Coord.FromMils(0), 0, 4.8, Coord.FromMils(0), "FR-4", Coord.FromInt32(16908320))); /* LayerV7.Add(("", 0, 0, false, Coord.FromMils(0), 0, 0, Coord.FromMils(0), "", 0)); LayerV7.Add(("", 0, 0, false, Coord.FromMils(0), 0, 0, Coord.FromMils(0), "", 0)); @@ -308,9 +309,10 @@ public PcbLibHeader() LayerV7.Add(("", 0, 0, false, Coord.FromMils(0), 0, 0, Coord.FromMils(0), "", 0)); LayerV7.Add(("", 0, 0, false, Coord.FromMils(0), 0, 0, Coord.FromMils(0), "", 0)); */ - LayerV8 = new List<(string Id, string Name, int LayerId, bool UsedByPrims, int DielType, double DielConst, Coord DielHeight, string DielMaterial, Coord COverLayEXPansiOn, Coord CopThick, int ComponentPlacement, bool MechEnabled)>(); + LayerV8 = new List<(string Id, string Name, int LayerId, bool UsedByPrims, int DielType, double DielConst, Coord DielHeight, string DielMaterial, Coord COverLayEXPansiOn, Coord CopThick, int ComponentPlacement, bool MechEnabled, string MechKind)>(); V9StackLayer = new List<(string Id, string Name, int LayerId, bool UsedByPrims, int DielType, double DielConst, Coord DielHeight, string DielMaterial, Coord COverLayEXPansiOn, Coord CopThick, int ComponentPlacement)>(); V9CacheLayer = new List<(int LayerId, bool UsedByPrims, string Id, string Name, int DielType, double DielConst, Coord DielHeight, string DielMaterial, Coord COverLayEXPansiOn, Coord CopThick, int ComponentPlacement, Coord PullBackDistance, bool MechEnabled)>(); + MechanicalPair = new List<(string Layer1, string Layer2)>(); BigVisibleGridSize = 0; VisibleGridSize = 0; SnapGridSize = 50000; @@ -568,7 +570,7 @@ public void ImportFromParameters(ParameterCollection p) int v8LayerMin = p.Select(kv => Regex.Match(kv.Item1, string.Format(CultureInfo.InvariantCulture, "LAYER_V8_{0}ID", @"(\d+)")).Groups[1].Value).Where(v => !string.IsNullOrEmpty(v)).DefaultIfEmpty("0").Min(v => int.Parse(v, CultureInfo.InvariantCulture)); int v8LayerCount = p.Select(kv => Regex.Match(kv.Item1, string.Format(CultureInfo.InvariantCulture, "LAYER_V8_{0}ID", @"(\d+)")).Groups[1].Value).Where(v => !string.IsNullOrEmpty(v)).Count(); - LayerV8 = new List<(string Id, string Name, int LayerId, bool UsedByPrims, int DielType, double DielConst, Coord DielHeight, string DielMaterial, Coord COverLayEXPansiOn, Coord CopThick, int ComponentPlacement, bool MechEnabled)>(); + LayerV8 = new List<(string Id, string Name, int LayerId, bool UsedByPrims, int DielType, double DielConst, Coord DielHeight, string DielMaterial, Coord COverLayEXPansiOn, Coord CopThick, int ComponentPlacement, bool MechEnabled, string MechKind)>(); for (int i = v8LayerMin; i < v8LayerCount; i++) { @@ -603,7 +605,8 @@ public void ImportFromParameters(ParameterCollection p) coverlayExpansion, copperThickness, p[fmt("LAYER_V8_{0}COMPONENTPLACEMENT", i)].AsIntOrDefault(), - p[fmt("LAYER_V8_{0}MECHENABLED", i)].AsBool() + p[fmt("LAYER_V8_{0}MECHENABLED", i)].AsBool(), + p[fmt("LAYER_V8_{0}MECHKIND", i)].AsString() ) ); } @@ -627,6 +630,7 @@ public void ImportFromParameters(ParameterCollection p) p[$"LAYER{i}PREV"].AsIntOrDefault(), p[$"LAYER{i}NEXT"].AsIntOrDefault(), p[$"LAYER{i}MECHENABLED"].AsBool(), + p[$"LAYER{i}MECHKIND"].AsString(), p[$"LAYER{i}COPTHICK"].AsCoord(), p[$"LAYER{i}DIELTYPE"].AsIntOrDefault(), p[$"LAYER{i}DIELCONST"].AsDoubleOrDefault(), @@ -655,7 +659,7 @@ public void ImportFromParameters(ParameterCollection p) int v7LayerMin = p.Select(kv => Regex.Match(kv.Item1, string.Format(CultureInfo.InvariantCulture, "LAYERV7_{0}NAME", @"(\d+)")).Groups[1].Value).Where(v => !string.IsNullOrEmpty(v)).DefaultIfEmpty("0").Min(v => int.Parse(v, CultureInfo.InvariantCulture)); int v7LayerCount = p.Select(kv => Regex.Match(kv.Item1, string.Format(CultureInfo.InvariantCulture, "LAYERV7_{0}NAME", @"(\d+)")).Groups[1].Value).Where(v => !string.IsNullOrEmpty(v)).Count(); - LayerV7 = new List<(string Name, int Prev, int Next, bool MechEnabled, Coord CopThick, int DielType, double DielConst, Coord DielHeight, string DielMaterial, int LayerId)>(); + LayerV7 = new List<(string Name, int Prev, int Next, bool MechEnabled, string MechKind, Coord CopThick, int DielType, double DielConst, Coord DielHeight, string DielMaterial, int LayerId)>(); for (int i = v7LayerMin; i < v7LayerCount; i++) { @@ -677,6 +681,7 @@ public void ImportFromParameters(ParameterCollection p) p[fmt("LAYERV7_{0}PREV", i)].AsIntOrDefault(), p[fmt("LAYERV7_{0}NEXT", i)].AsIntOrDefault(), p[fmt("LAYERV7_{0}MECHENABLED", i)].AsBool(), + p[fmt("LAYERV7_{0}MECHKIND", i)].AsString(), copperThickness, p[fmt("LAYERV7_{0}DIELTYPE", i)].AsIntOrDefault(), p[fmt("LAYERV7_{0}DIELCONST", i)].AsDoubleOrDefault(), @@ -687,6 +692,9 @@ public void ImportFromParameters(ParameterCollection p) ); } + MechanicalPair = p.Where(n => Regex.IsMatch(n.key, "MECHPAIR\\d+L1", RegexOptions.CultureInvariant)) + .Select(n => (n.value.AsString(), p[fmt("MECHPAIR{0}L2", Int32.Parse(Regex.Match(n.key, "MECHPAIR(\\d+)L1", RegexOptions.CultureInvariant).Groups[1].Value))].AsString())) + .ToList(); BigVisibleGridSize = Coord.FromInt32((int)p["BIGVISIBLEGRIDSIZE"].AsDoubleOrDefault()); VisibleGridSize = Coord.FromInt32((int)p["VISIBLEGRIDSIZE"].AsDoubleOrDefault()); SnapGridSize = (int)p["SNAPGRIDSIZE"].AsDoubleOrDefault(); @@ -935,6 +943,7 @@ public void ExportToParameters(ParameterCollection p) p.Add(fmt("LAYER_V8_{0}COPTHICK", i), LayerV8[i].CopThick); p.Add(fmt("LAYER_V8_{0}COMPONENTPLACEMENT", i), LayerV8[i].ComponentPlacement); p.Add(fmt("LAYER_V8_{0}MECHENABLED", i), LayerV8[i].MechEnabled, i < 15 || (i > 26 && i < 40)); + p.Add(fmt("LAYER_V8_{0}MECHKIND", i), LayerV8[i].MechKind); } } @@ -963,6 +972,7 @@ public void ExportToParameters(ParameterCollection p) p.Add($"LAYER{i + 1}DIELCONST", Layer[i].DielConst, false, 3); p.Add($"LAYER{i + 1}DIELHEIGHT", Layer[i].DielHeight, false); p.Add($"LAYER{i + 1}DIELMATERIAL", Layer[i].DielMaterial, false); + p.Add($"LAYER{i + 1}MECHKIND", Layer[i].MechKind, false); } for (var i = 0; i < LayerV7.Count; i++) { @@ -976,6 +986,13 @@ public void ExportToParameters(ParameterCollection p) p.Add($"LAYERV7_{i}DIELCONST", LayerV7[i].DielConst, false, 3); p.Add($"LAYERV7_{i}DIELHEIGHT", LayerV7[i].DielHeight, false); p.Add($"LAYERV7_{i}DIELMATERIAL", LayerV7[i].DielMaterial, false); + p.Add($"LAYERV7_{i}MECHKIND", Layer[i].MechKind, false); + } + + for (var i = 0; i < MechanicalPair.Count; i++) + { + p.Add($"MECHPAIR{i}L1", MechanicalPair[i].Layer1); + p.Add($"MECHPAIR{i}L2", MechanicalPair[i].Layer2); } AddParamRecord(p);