/// <summary>The get pattern info.</summary>
        /// <param name="name">The name value.</param>
        /// <returns>The Tekla.Structures.Concrete.PatternInfo.</returns>
        public static PatternInfo GetPatternInfo(string name)
        {
            PatternInfo result = null;

            if (patternData == null)
            {
                LoadPatternData();
            }

            if (patternData != null)
            {
                foreach (PatternInfo pi in patternData)
                {
                    if (pi.Name == name)
                    {
                        result = pi;
                        break;
                    }
                }

                if (result == null)
                {
                    result = (PatternInfo)patternData[0];
                }
            }

            return(result);
        }
        /// <summary>
        /// The load pattern data.
        /// </summary>
        /// <returns>
        /// The System.Boolean.
        /// </returns>
        /// <exception cref="Exception">
        /// Throws an exception.
        /// </exception>
        private static bool LoadPatternData()
        {
            patternData = new ArrayList();

            try
            {
                var path = GetPatternFileName();
                if (!path.Equals(string.Empty))
                {
                    var sr = new StreamReader(path);
                    using (sr)
                    {
                        string      line;
                        var         currentBeam = string.Empty;
                        PatternInfo pi;
                        while ((line = sr.ReadLine()) != null)
                        {
                            var items = line.Split(new[] { ';' }, 3);
                            if (items.GetLength(0) > 1)
                            {
                                if (items[0] == BeamTag)
                                {
                                    currentBeam = items[1];
                                }
                                else if (items[0] == BottomNameTag)
                                {
                                    bottomName = items[1];
                                }
                                else if (items[0] == BottomClassTag)
                                {
                                    try
                                    {
                                        bottomClass = Convert.ToInt32(items[1]);
                                    }
                                    catch
                                    {
                                    }
                                }
                                else if (items[0] == TopNameTag)
                                {
                                    topName = items[1];
                                }
                                else if (items[0] == TopClassTag)
                                {
                                    try
                                    {
                                        topClass = Convert.ToInt32(items[1]);
                                    }
                                    catch
                                    {
                                    }
                                }
                                else if (items[0] == PatternBeginTag)
                                {
                                    pi = new PatternInfo {
                                        Name = items[1], BeamType = currentBeam
                                    };
                                    pi.ReadPatternBlock(sr);
                                    patternData.Add(pi);
                                }
                            }
                        }
                    }
                }
            }
            catch
            {
                throw new Exception("Exception in LoadPatternData of PatternInfo.");
            }

            return(patternData.Count < 0);
        }