예제 #1
0
        /// <summary>
        /// Сделано временно для быстрого ввода данных о диаметрах с чертежей и вывод их в упорядоченную таблицу
        /// Здесь же добавлен объем бетона
        /// </summary>
        public static void MakeRebarString()
        {
            string heading  = "БЕТОН\tД40\tД36\tД32\tД28\tД25\tД20\tД16\tД12\tД10\tД8";
            var    dict     = new Dictionary <string, string>();
            var    splitted = heading.Split('\t');

            foreach (var s in splitted)
            {
                dict.Add(s, "");
            }

            var sset = Input.Objects("Выберите сначала объем бетона затем текстовые элементы ведомости расхода стали"); if (Input.StatusBad)
            {
                return;
            }
            string output = "";

            List <Entity> entities;
            var           strings  = new List <string>();
            string        concrete = "";

            using (var th = new TransactionHelper())
            {
                entities = th.ReadObjects(sset);
                concrete = Utilities.GetText(entities[0]);
                entities = entities.Skip(1).ToList();

                entities.Sort(Comparer <Entity> .Create(MyCompare));

                foreach (var ent in entities)
                {
                    string s = Utilities.GetText(ent);
                    if (String.IsNullOrEmpty(s))
                    {
                        continue;
                    }

                    strings.Add(s);
                }
            }
            for (int i = 1; i < strings.Count; i += 2)
            {
                var pair = DiameterPair(new Tuple <string, string>(strings[i - 1], strings[i]));
                dict[pair.Item1] = pair.Item2;
            }

            var match_number = new Regex(@"\d+\.\d+м");

            concrete      = match_number.Match(concrete.Replace(",", ".")).Value.Replace("м", "");
            dict["БЕТОН"] = concrete.Replace(".", ",");

            output = dict.Values.Aggregate((a, b) => a + '\t' + b);

            Clipboard.SetText(output);
        }
예제 #2
0
        public static void ListAttributes()
        {
            var contents = new List <string>();
            var tags     = new List <string>();
            var acDoc    = App.DocumentManager.MdiActiveDocument;
            var acCurDb  = acDoc.Database;
            var acEd     = acDoc.Editor;

            var sset = Input.Objects("Выберите блоки, из которых нужно прочитать имена аттрибутов"); if (Input.StatusBad)

            {
                return;
            }

            using (var th = new TransactionHelper())
            {
                var blockrefs = th.ReadObjects(sset).OfType <BlockReference>();
                foreach (var br in blockrefs)
                {
                    foreach (ObjectId attRef_id in br.AttributeCollection)
                    {
                        var attRef = th.EditObject(attRef_id) as AttributeReference;
                        if (tags.Contains(attRef.Tag))
                        {
                            continue;
                        }
                        else
                        {
                            tags.Add(attRef.Tag);
                            contents.Add(attRef.TextString);
                        }
                    }
                }
            }

            string output = "";

            for (int i = 0; i < tags.Count; i++)
            {
                output += tags[i] + "\t" + contents[i] + "\n";
            }

            Console.WriteLine(output);

            Clipboard.SetText(output);
        }
예제 #3
0
        public static void ShowFields()
        {
            var Selection = Input.Objects("Выделите объекты для просмотра полей"); if (Input.StatusBad)

            {
                return;
            }

            using (var th = new TransactionHelper())
            {
                var AcadObjects = th.ReadObjects(Selection);
                foreach (var AcadObject in AcadObjects)
                {
                    var AcadObjectType = AcadObject.GetType();
                    Messaging.Tweet("Объект типа " + AcadObjectType.Name);
                    BaseTypeInfo(AcadObjectType, AcadObject);
                }
            }
        }
예제 #4
0
        public ChangeDrawingProperty()
        {
            var sset = Input.Objects("Выберите объекты для извлечения и установки свойств"); if (Input.StatusBad)
            {
                return;
            }
            Entity donorObject;

            using (var th = new TransactionHelper())
            {
                donorObject = th.ReadObject(sset[0].ObjectId) as Entity;
                if (donorObject == null)
                {
                    return;
                }
            }

            // эта строчка будет меняться на код выбора нужных нам свойств исходя из того объекта, который нам попался
            ChangeLayer(donorObject.LayerId);
            ChangeLineWeight(donorObject.LineWeight);
            ChangeLineType(donorObject.LinetypeId);
            ChangeColor(donorObject.Color);
            ChangeLineTypeScele(donorObject.LinetypeScale);
        }
예제 #5
0
        /// <summary>
        /// text from some entity
        /// </summary>
        /// <param name="ent"></param>
        /// <returns></returns>
        public static string GetText(Entity ent)
        {
            if (ent is MText)
            {
                MText mt = (MText)ent;

                //TODO:тут можно вынуть существующий текст и обработать форматирование
                //и запихать уже подготовленную строку
                return(mt.Contents);
            }
            if (ent is DBText)
            {
                DBText dt = (DBText)ent;

                return(dt.TextString);
            }
            if (ent is MLeader)
            {
                MLeader ml = (MLeader)ent;
                MText   aa = ml.MText.Clone() as MText;

                return(aa.Contents);
            }
            if (ent is Leader)
            {
                Leader ld = (Leader)ent;

                using (TransactionHelper th = new TransactionHelper())
                {
                    MText ann = th.ReadObject(ld.Annotation) as MText;

                    return(ann.Contents);
                }
            }
            return("");
        }
예제 #6
0
        static void DrawPage(Page pg, Point3d offset, bool cap = true)
        {
            //TODO: надо как-то понятнее организовать индексы, а то бардак дикий

            var acDoc   = App.DocumentManager.MdiActiveDocument;
            var acCurDb = acDoc.Database;
            var acEd    = acDoc.Editor;


            var drawdata = new List <Entity>();

            int rows  = pg.RowCount + 1;
            int lines = pg.RowCount + 2;

            var hls = hStyles(lines);
            var vls = vStyles(6);

            var column_coords = new double[] { 0, 15, 120, 135, 155, 185 };
            var rc            = RowCoords(lines);

            for (int line = 0; line < lines; line++)
            {
                double y = -rc[line];
                double x = column_coords[5];

                var h = new Line(new Point3d(offset.X, offset.Y + y, 0), new Point3d(offset.X + x, offset.Y + y, 0));

                h.SetPropertiesFrom(hls[line]);

                drawdata.Add(h);
            }
            for (int i = 0; i <= 5; i++)
            {
                double x = column_coords[i];
                double y = -rc.Last();
                var    v = new Line(new Point3d(offset.X + x, offset.Y, 0), new Point3d(offset.X + x, offset.Y + y, 0));
                v.SetPropertiesFrom(vls[i]);

                drawdata.Add(v);
            }

            //текст
            for (int i = 1; i <= 5; i++)
            {
                for (int j = pg.StartRow; j <= pg.EndRow; j++)
                {
                    var content = data[j, i];

                    var al = i == 2?XL.XlHAlign.xlHAlignCenter:align[j];

                    int r = j - pg.StartRow + 1;

                    if (content != null)
                    {
                        var content_string = content.ToString();
                        if (content_string != "")
                        {
                            var rect = new Rectangle3d(
                                upperLeft: new Point3d(offset.X + column_coords[i - 1], offset.Y - rc[r], 0),
                                lowerRight: new Point3d(offset.X + column_coords[i], offset.Y - rc[r + 1], 0),
                                upperRight: new Point3d(offset.X + column_coords[i], offset.Y - rc[r], 0),
                                lowerLeft: new Point3d(offset.X + column_coords[i - 1], offset.Y - rc[r + 1], 0));

                            var mt = PrepareText(rect, content_string, al);
                            drawdata.Add(mt);
                        }
                    }
                }
            }
            //нарисовать шапку
            if (cap)
            {
                for (int i = 1; i <= 5; i++)
                {
                    int j = 1;

                    var al = i == 2?XL.XlHAlign.xlHAlignCenter:align[j];

                    var content = data[j, i];
                    if (content != null)
                    {
                        var content_string = content.ToString();
                        if (content_string != "")
                        {
                            var rect = new Rectangle3d(
                                upperLeft: new Point3d(offset.X + column_coords[i - 1], offset.Y - rc[0], 0),
                                lowerRight: new Point3d(offset.X + column_coords[i], offset.Y - rc[1], 0),
                                upperRight: new Point3d(offset.X + column_coords[i], offset.Y - rc[0], 0),
                                lowerLeft: new Point3d(offset.X + column_coords[i - 1], offset.Y - rc[1], 0));

                            var mt = PrepareText(rect, content_string, al);
                            drawdata.Add(mt);
                        }
                    }
                }
            }



            using (var th = new TransactionHelper())
            {
                th.WriteObjects(drawdata);
            }
        }