Esempio n. 1
0
        public void Parse()
        {
            Posture p = new Posture();

            bool IsFirstElement = true;

            StreamReader sread = new StreamReader(_path);

            while (!sread.EndOfStream)
            {
                string buffer = sread.ReadLine();
                buffer = buffer.TrimStart();

                if ('#' == buffer[0])    // 注释行
                {
                    continue;
                }

                if (':' == buffer[0])
                {
                    continue;
                }

                string[] splitbuff = buffer.Split(new Char[] { '\t', ' ' }, StringSplitOptions.RemoveEmptyEntries);

                Bone bone = new Bone();
                bone.Name = splitbuff[0];

                if (1 == splitbuff.Length)
                {
                    if (!IsFirstElement)
                    {
                        _postures.Add(p.Clone());
                        p.Bones.Clear();
                    }

                    if (IsFirstElement)
                    {
                        IsFirstElement = false;
                    }
                    continue;
                }

                List <string> dofss = new List <string>();
                for (int i = 1; i < splitbuff.Length; i++)
                {
                    dofss.Add(splitbuff[i]);
                }
                bone.Dofs = dofss.ToArray();
                p.Bones.Add(bone.Clone());
                if (sread.EndOfStream)
                {
                    _postures.Add(p.Clone());
                }
            }

            sread.Close();
        }