Exemplo n.º 1
0
        /// <summary>
        /// Последовательность штрихов и пробелов типа линии
        /// </summary>
        /// <param name="ltype"></param>
        /// <param name="ltScale"></param>
        /// <returns></returns>
        public static List <double> GetLinePattern(LinetypeTableRecord ltype, double ltScale = 1)
        {
            List <double> pattern = new List <double>();

            for (int i = 0; i < ltype.NumDashes; i++)
            {
                //Учтена возможность вставки подряд двух пробелов или двух штрихов
                double dash = ltype.DashLengthAt(i);
                if (dash != 0)
                {
                    double dashValue = dash * ltScale;
                    if (i != 0 && Math.Sign(pattern[i - 1]) == Math.Sign(dashValue))
                    {
                        pattern[i - 1] += dashValue;//такой же знак как и у предыдущего => объединить в один
                    }
                    else
                    {
                        pattern.Add(dashValue);//новый штрих
                    }
                }
            }


            if (pattern.Count == 0)//если данные не получены, то выдать патерн для сплошной линии
            {
                pattern.Add(1);
            }

            return(pattern);
        }
Exemplo n.º 2
0
        Stream(ArrayList data, LinetypeTableRecord rec)
        {
            data.Add(new Snoop.Data.ClassSeparator(typeof(LinetypeTableRecord)));

            data.Add(new Snoop.Data.String("Ascii Description", rec.AsciiDescription));
            data.Add(new Snoop.Data.String("Comments", rec.Comments));
            data.Add(new Snoop.Data.Bool("Is scaled to fit", rec.IsScaledToFit));
            data.Add(new Snoop.Data.Distance("Pattern length", rec.PatternLength));
            data.Add(new Snoop.Data.Int("Number of dashes", rec.NumDashes));

            int i, len;

            len = rec.NumDashes;
            for (i = 0; i < len; i++)
            {
                data.Add(new Snoop.Data.CategorySeparator(string.Format("--- DASH [{0}] ---", i)));
                data.Add(new Snoop.Data.Distance("Length", rec.DashLengthAt(i)));
                data.Add(new Snoop.Data.ObjectId("Shape style", rec.ShapeStyleAt(i)));
                data.Add(new Snoop.Data.Int("Shape number at", rec.ShapeNumberAt(i)));
                data.Add(new Snoop.Data.Vector2d("Shape offset at", rec.ShapeOffsetAt(i)));
                data.Add(new Snoop.Data.Double("Shape scale at", rec.ShapeScaleAt(i)));
                data.Add(new Snoop.Data.Bool("Shape is UCS oriented at", rec.ShapeIsUcsOrientedAt(i)));
                data.Add(new Snoop.Data.Angle("Shape rotation at", rec.ShapeRotationAt(i)));

                try {
                    data.Add(new Snoop.Data.String("Text at", rec.TextAt(i)));
                }
                catch (Autodesk.AutoCAD.Runtime.Exception e) {
                    if (e.ErrorStatus == Autodesk.AutoCAD.Runtime.ErrorStatus.NotApplicable)
                    {
                        data.Add(new Snoop.Data.Exception("Text at", e));
                    }
                    else
                    {
                        throw e;
                    }
                }
            }
        }