/// <summary> /// 将用户Lib融入到已有Lib /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnMerge_Click(object sender, EventArgs e) { bool isFinded = false; if (string.IsNullOrEmpty(this.curLib.PathLib)) { return; } ComponentLib lib = new ComponentLib(); lib.Clear(); lib.AddRange(this.curLib.FindAll()); this.curLib.Save(); int index = findMaxIndex(lib); foreach (var userComp in this.curUserLib.FindAll()) { isFinded = false; foreach (var libComp in lib.FindAll()) { if (libComp.component.Name == userComp.component.Name) { isFinded = true; continue; } } if (isFinded == false) { index++; ComponentEx cmp = new ComponentEx(index); cmp.component = userComp.component.DepCopy(); lib.Add(cmp); } } string path = string.Format("{0}\\{1}.lib", Path.GetDirectoryName(this.curLib.GetPath()), Path.GetFileNameWithoutExtension(this.curLib.GetPath())); lib.SetPath(path); lib.PathLib = path; lib.Save(); }
private void getType() { for (int i = 0; i < CADImport.libStrArray.Length; i++) { string line = CADImport.libStrArray[i]; if (line.Contains("[") && line.Contains("]")) { int mid = line.LastIndexOf(','); int last = line.LastIndexOf(']'); string before = line.Substring(0, mid); string after = line.Substring(mid + 1, last - mid - 1); int redindexStar = i; int redindexEnd = i; int solindexStar = i; int solindexEnd = i; for (int j = i + 1; j < CADImport.libStrArray.Length; j++) { if (CADImport.libStrArray[j].Contains(".adh")) { redindexStar = j; } if (CADImport.libStrArray[j].Contains(".end")) { redindexEnd = j; break; } } for (int j = i + 1; j < CADImport.libStrArray.Length; j++) { if (CADImport.libStrArray[j].Contains(".sol")) { solindexStar = j; } if (CADImport.libStrArray[j].Contains(".end")) { solindexEnd = j; break; } } List <PointD> pointsred = new List <PointD>(); pointsred.Clear(); for (int k = redindexStar + 1; k < redindexEnd; k++) { PointD p = new PointD(); string[] splited = CADImport.libStrArray[k].Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); double x = 0; double y = 0; if (double.TryParse(splited[0], out x) && double.TryParse(splited[1], out y)) { p.X = x; p.Y = y; } pointsred.Add(p); } List <PointD> pointssol = new List <PointD>(); pointssol.Clear(); for (int k = solindexStar + 1; k < solindexEnd; k++) { PointD p = new PointD(); string[] splited = CADImport.libStrArray[k].Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); double x = 0; double y = 0; if (double.TryParse(splited[0], out x) && double.TryParse(splited[1], out y)) { p.X = x; p.Y = y; } pointssol.Add(p); } int index = this.lib.FindAll().Count; ComponentEx comp = new ComponentEx(index + 1); comp.component.Name = after; foreach (var item in pointsred) { GlueDot dot = new GlueDot(); int cout = comp.component.AdhPoints.Count; dot.index = cout + 1; dot.point = new PointD(item.X, item.Y); dot.Weight = (double)0; dot.Radius = (double)0; comp.component.AdhPoints.Add(dot); } foreach (var item in pointssol) { GlueDot dot = new GlueDot(); int cout = comp.component.SldPoints.Count; dot.index = cout + 1; dot.point = new PointD(item.X, item.Y); dot.Weight = (double)0; dot.Radius = (double)0; comp.component.SldPoints.Add(dot); } lib.Add(comp); } } }