Esempio n. 1
0
        static public bool CloneAttributeList(IAttributeListContainer From, IAttributeListContainer To, string ListName, bool Initialize)
        {
            IAttributeList toAdd = null;

            if (From != null)
            {
                toAdd = From.GetList(ListName);
                if (toAdd != null)
                {
                    toAdd = toAdd.Clone();
                }
            }
            if (toAdd == null)
            {
                switch (ListName)
                {
                case "ColorList":
                    toAdd = new ColorList();
                    break;

                case "LayerList":
                    toAdd = new LayerList();
                    break;

                case "HatchStyleList":
                    toAdd = new HatchStyleList();
                    break;

                case "DimensionStyleList":
                    toAdd = new DimensionStyleList();
                    break;

                case "LineWidthList":
                    toAdd = new LineWidthList();
                    break;

                case "LinePatternList":
                    toAdd = new LinePatternList();
                    break;

                case "StyleList":
                    toAdd = new StyleList();
                    break;

                default:
                    return(false);
                }
                if (Initialize)
                {
                    toAdd.Initialize();
                }
            }
            To.Add(ListName, toAdd);
            return(true);
        }
Esempio n. 2
0
        /// <summary>
        /// Creates a default LineWidthList.
        /// </summary>
        /// <returns></returns>
        public static LineWidthList GetDefault()
        {
            LineWidthList res = new LineWidthList();
            string        defaultLineWidthList = StringTable.GetString("LineWidthList.Default");

            // z.B.: "|Standard (0.7 mm):0.7L|dünn:0.0D|0.3 mm:0.3W"
            string[] split = defaultLineWidthList.Split(new char[] { defaultLineWidthList[0] });
            foreach (string substr in split)
            {
                if (substr.Length > 0)
                {
                    string[] pos = substr.Split(':'); // halt fest am : splitten
                    if (pos.Length == 2)              // es müssen genau zwei sein
                    {
                        LineWidth lw = new LineWidth();
                        lw.Name = pos[0];
                        int    ind = pos[1].LastIndexOfAny("0123456789.".ToCharArray());
                        string widthstr;
                        if (ind > 0)
                        {
                            widthstr = pos[1].Substring(0, ind + 1);
                        }
                        else
                        {
                            widthstr = pos[1];
                        }
                        try
                        {
                            if (ind > 0 && ind < pos[1].Length - 1)
                            {
                                switch (pos[1][ind + 1])
                                {
                                default:     // ist Layout
                                case 'L': lw.Scale = LineWidth.Scaling.Layout; break;

                                case 'W': lw.Scale = LineWidth.Scaling.World; break;

                                case 'D': lw.Scale = LineWidth.Scaling.Device; break;
                                }
                            }
                            lw.Name  = pos[0];
                            lw.Width = double.Parse(widthstr, NumberFormatInfo.InvariantInfo);
                            res.Add(lw);
                        }
                        catch (FormatException) { }            // dann halt nicht zufügen
                        catch (NameAlreadyExistsException) { } // macht auch nix
                    }
                }
            }
            return(res);
        }
Esempio n. 3
0
 internal override void Update(bool AddMissingToList)
 {
     if (Parent != null && Parent.Owner != null)
     {
         ColorList cl = Parent.Owner.ColorList;
         if (cl != null && colorDef != null)
         {
             ColorDef cd = cl.Find(colorDef.Name);
             if (cd != null)
             {
                 colorDef = cd;
             }
             else if (AddMissingToList)
             {
                 cl.Add(colorDef);
             }
         }
         LineWidthList ll = Parent.Owner.LineWidthList;
         if (ll != null && lineWidth != null)
         {
             LineWidth lw = ll.Find(lineWidth.Name);
             if (lw != null)
             {
                 lineWidth = lw;
             }
             else if (AddMissingToList)
             {
                 ll.Add(lineWidth);
             }
         }
         LinePatternList pl = Parent.Owner.LinePatternList;
         if (pl != null && linePattern != null)
         {
             LinePattern lw = pl.Find(linePattern.Name);
             if (lw != null)
             {
                 linePattern = lw;
             }
             else if (AddMissingToList)
             {
                 pl.Add(linePattern);
             }
         }
     }
 }
Esempio n. 4
0
        /// <summary>
        /// Returns a copy of this LineWidthList. The entries are cloned so the copy is independant.
        /// </summary>
        /// <returns></returns>
        public LineWidthList Clone()
        {
            LineWidthList res = new LineWidthList();

            for (int i = 0; i < entries.Count; ++i)
            {
                res.Add((entries[i] as LineWidth).Clone());
            }
            if (current != null)
            {
                res.current = res.Find(current.Name);
            }
            else
            {
                res.current = null;
            }
            return(res);
        }