Exemplo n.º 1
0
        /// <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();
        }
Exemplo n.º 2
0
        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);
                }
            }
        }