public static void SpTop(Entity ent) { Autocad.Init(); var sset = SSGet(); var table = new Specification(); Action <BlockReference> ProcessBref = null; ProcessBref = (bref) => { List <BlockReference> innerBlocks = new List <BlockReference>(); Record r = GetContent(bref, innerBlocks); if (r["block_name"].StringValue.StartsWith("__")) { table.Add(r); return; } if (!r["block_name"].StringValue.StartsWith("_")) { table.Add(r); } foreach (BlockReference b in innerBlocks) { ProcessBref(b); } }; SSForeach <BlockReference>(sset, ProcessBref); var report = new DwgTableReport(table); report.Save(); Ed.WriteMessage("OK"); }
private void DrawPoint(Point3d a) { DBPoint b = new DBPoint(a); Ed.WriteMessage("selamın aleyküm"); AppendEntity(Db.BlockTableId, b); }
public static void SpAllF(Entity ent) { Autocad.Init(); var sset = SSGet(); var spec = new Specification(); Action <BlockReference> ProcessBref = null; ProcessBref = (bref) => { List <BlockReference> innerBlocks = new List <BlockReference>(); Record r = GetContent(bref, innerBlocks); if (!r["block_name"].StringValue.StartsWith("_") && !r["art"].StringValue.StartsWith("REF")) { spec.Add(r); } foreach (BlockReference b in innerBlocks) { ProcessBref(b); } }; SSForeach <BlockReference>(sset, ProcessBref); var report = new CsvReport(spec); report.Save(); Ed.WriteMessage("OK"); }
public string[] OpenFiles() { OpenFileDialog ofd = new OpenFileDialog("XML dosyasını seçiniz..", "xml", "xml", "dialog", OpenFileDialog.OpenFileDialogFlags.AllowMultiple); if (ofd.ShowDialog() != System.Windows.Forms.DialogResult.OK) { return(null); } Ed.WriteMessage("\nFile selected was \"{0}\".", ofd.Filename ); return(ofd.GetFilenames()); }
public static void Paste() { Init(); if (ToCopy == null || ToCopy.Count == 0) { Ed.WriteMessage("\nБуфер пустой! Сначала нужно скопировать зоны покраски!"); return; } Base = Ed.GetPointWCS("Базовая точка"); // Группировка зон покраски по параметрам длины и высоты var sizeGroups = ToCopy.GroupBy(c => new { c.Length, c.Height }); using (var t = Db.TransactionManager.StartTransaction()) { // Получение определения блока зоны в текущем чертеже. ObjectId idBtrColorArea = GetColorAreaIdBtr(); var cs = Db.CurrentSpaceId.GetObject(OpenMode.ForWrite) as BlockTableRecord; // Создание всех слоев для зон покраски checkLayers(); // Создание блока шаблона для каждого типоразмера зон покраски foreach (var size in sizeGroups) { var idBlRefTemplate = GetBlRefTemplate(size.Key.Length, size.Key.Height, idBtrColorArea, cs, t); var idColToCopy = new ObjectIdCollection(new[] { idBlRefTemplate }); foreach (var item in size) { copyItem(item, idColToCopy, cs.Id, t); } // Удаление блока шаблона var blRefTemplate = idBlRefTemplate.GetObject(OpenMode.ForWrite) as BlockReference; blRefTemplate.Erase(); } t.Commit(); } Ed.WriteMessage($"\nВставлено {ToCopy.Count} блоков зон покраски."); }
public void CreateLayer(string layerName) { using (Transaction ts = Db.TransactionManager.StartTransaction()) { LayerTable lt = ts.GetObject(Db.LayerTableId, OpenMode.ForWrite) as LayerTable; try { // Validate the provided symbol table name SymbolUtilityServices.ValidateSymbolName(layerName, false); // Only set the layer name if it isn't in use if (lt.Has(layerName)) { Ed.WriteMessage( "\nA layer with this name already exists." ); } else { LayerTableRecord ltr = new LayerTableRecord(); ltr.Name = layerName; lt.UpgradeOpen(); ObjectId ltId = lt.Add(ltr); ts.AddNewlyCreatedDBObject(ltr, true); ts.Commit(); } } catch { // An exception has been thrown, indicating the // name is invalid Ed.WriteMessage( "\nInvalid layer name." ); } } }
public static void Copy() { Init(); ToCopy = new List <ColorArea>(); // Выбор блоков зон покраски. var idsSelect = GetSelection(); Base = Ed.GetPointWCS("Базовая точка"); Layers = new Dictionary <string, LayerInfo>(); // Фильтр зон покраски using (var t = Db.TransactionManager.StartTransaction()) { foreach (var idBlRef in idsSelect) { var blRef = idBlRef.GetObject(OpenMode.ForRead, false, true) as BlockReference; if (blRef == null) { continue; } var blName = blRef.GetEffectiveName(); if (blName.Equals(Settings.Default.BlockColorAreaName, StringComparison.OrdinalIgnoreCase)) { ColorArea ca = new ColorArea(blRef); ToCopy.Add(ca); // добавление слоя в словарь if (!Layers.ContainsKey(blRef.Layer)) { LayerInfo li = new LayerInfo(blRef.LayerId); Layers.Add(li.Name, li); } } } t.Commit(); } Ed.WriteMessage($"\nСкопировано {ToCopy.Count} блоков зон покраски."); }
public List <BaseC3dObject> GetObjects(string question) { Ed.WriteMessage(question); //Objeleri Seçmece ve Listeye Atmaca PromptSelectionOptions opt = new PromptSelectionOptions(); PromptSelectionResult res = Ed.GetSelection(opt); SelectionSet SS = res.Value; List <BaseC3dObject> oList = new List <BaseC3dObject>(); ////////////////////////////////////////----OBJE SEÇMECE ----- /////////////////////////////// // seçilmiş objeleri BASEC3D objesine çevir if (res.Status == PromptStatus.OK) { foreach (SelectedObject item in SS) { BaseC3dObject bobject = new BaseC3dObject(); bobject.Id = item.ObjectId; bobject.Name = item.ObjectId.ObjectClass.DxfName; oList.Add(bobject); } } return(oList); }
public static void BBox() { SSForeach <Entity>(SSGet(), ent => Ed.WriteMessage(GetBoundingBox(ent))); }
/// <summary> /// Расчет машиномест выбранных блоков линейных парковок /// </summary> public void CalcAndTable() { Doc = Application.DocumentManager.MdiActiveDocument; Db = Doc.Database; Ed = Doc.Editor; var parkings = Select(); if (parkings.Count == 0) { Ed.WriteMessage($"\nБлоки парковок не найдены."); return; } // Расчет машиномест для каждой парковки foreach (var parking in parkings) { parking.Calc(); } // Суммирование парковок Data = new ParkingData(parkings); Data.Calc(); if (Data.Places == 0 && Data.InvalidPlaces == 0) { Ed.WriteMessage("\nНет парковочных мест"); return; } // Вставка таблицы if (IsTableOrText) { ParkingTable table = new ParkingTable(this); table.CreateTable(); } else { using (var t = Db.TransactionManager.StartTransaction()) { // Вставка текста DBText text = new DBText(); text.SetDatabaseDefaults(); text.Height = 2.5 * AcadLib.Scale.ScaleHelper.GetCurrentAnnoScale(Db); // стиль текста text.TextStyleId = Db.GetTextStylePIK(); string mm = string.Empty; if (Data.Places != 0) { mm = $"{Data.Places} м/м "; } if (Data.InvalidPlaces != 0) { mm += $"({Data.InvalidPlaces} ММГН)"; } text.TextString = mm; Point3d ptText = Point3d.Origin; text.Position = ptText; text.LayerId = ParkingHelper.LayerTextId; var ms = Db.CurrentSpaceId.GetObject(OpenMode.ForWrite) as BlockTableRecord; ms.AppendEntity(text); t.AddNewlyCreatedDBObject(text, true); PromptSelectionResult prs = Ed.SelectLast(); if (prs.Status == PromptStatus.OK) { PromptPointResult ppr = Ed.Drag(prs.Value, "\nТочка вставки текста:", (Point3d pt, ref Matrix3d mat) => { pt = pt.TransformBy(Ed.CurrentUserCoordinateSystem); if (ptText == pt) { return(SamplerStatus.NoChange); } mat = Matrix3d.Displacement(ptText.GetVectorTo(pt)); text.TransformBy(mat); ptText = pt; return(SamplerStatus.OK); }); if (ppr.Status != PromptStatus.OK) { text.Erase(); } } t.Commit(); } } }