/// <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); }
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); }
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); } } }
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); }
/// <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(""); }
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); } }