Пример #1
0
        public bool LoadFile(string path)
        {
            //参数列表
            List <QCharacteristic> ps = new List <QCharacteristic>();

            // 文件读取部分,完成了以下几件事:
            // 1、读取每行,生成每行的QLineInfo对象
            // 2、先交给对应的参数处理,如果处理失败,再交给QFile处理
            // 3、如果不是QlineInfo对象,那么交给QFile的Data
            List <string> strs = GetLines(path);


            int   partid = 0;
            QPart part   = new QPart();

            foreach (string str in strs)
            {
                try
                {
                    //如果是K开头,那么就是定义,如果是‘/’那么就是注释,取消,否则就是数据。
                    if (str[0] == 'K' || str[0] == 'k')
                    {
                        QLineInfo line = new QLineInfo(str);

                        //如果是零配件信息,交由QF处理。"K1001 jet2013"
                        if (str[1] == '1')
                        {
                            partid = line.pid > 0 ? line.pid - 1 : 0;
                            if (partid + 1 > parts.Count)
                            {
                                QPart pt = new QPart();
                                pt.partid = line.pid;
                                parts.Add(pt);
                            }
                            parts[partid].DealLine(line);
                        }
                        //否则是参数信息,交由参数层处理
                        else if (str[1] == '2')
                        {
                            if (line.pid > ps.Count)
                            {
                                for (int j = ps.Count; j < line.pid; j++)
                                {
                                    QCharacteristic p = new QCharacteristic();
                                    p.partId = partid + 1;
                                    p.id     = j + 1;
                                    ps.Add(p);
                                    parts[partid].pramters.Add(p);
                                }
                            }
                            ps[line.pid - 1].DealLine(line);
                        }
                    }
                    //如果是/,那么就是注释,忽略。
                    else if (str[0] == '/')
                    {
                    }
                    else
                    {
                        this.data.Add(new QData(str));
                    }
                }
                catch { }
            }

            //取出生成的参数,添加至QFile中
            for (int i = 0; i < ps.Count; i++)
            {
                if (ps[i].id > 0)
                {
                    this.pramters.Add(ps[i]);
                }
            }

            //此处将QFile中的Data中的DataItem与
            //每个QPramater的QDataItem数据组一一对应。
            for (int i = 0; i < this.data.Count; i++)
            {
                for (int j = 0; j < this.data[i].items.Count; j++)
                {
                    this.pramters[j].data.Add(this.data[i].items[j]);
                }
            }


            return(true);
        }