public void ConvertBtr() { using (var btr = IdBtrExport.GetObject(OpenMode.ForWrite) as BlockTableRecord) { // Итерация по объектам в блоке и выполнение различных операций к элементам iterateEntInBlock(btr); // Контур панели (так же определяется граница панели без торцов) var contourPanel = new ContourPanel(this); contourPanel.CreateContour2(btr); // Определение торцевых объектов (плитки и полилинии контура торца) defineEnds(contourPanel); // Удаление объектов торцов из блока панели, если это ОЛ if (CaptionMarkSb.StartsWith("ОЛ", StringComparison.CurrentCultureIgnoreCase)) { deleteEnds(IdsEndsTopEntity); IdsEndsTopEntity = new List <ObjectId>(); } // Повортот подписи марки (Марки СБ и Марки Покраски) и добавление фоновой штриховки var caption = new ConvertCaption(this); caption.Convert(btr); //Если есть ошибки при конвертации, то подпись заголовка этих ошибок if (!string.IsNullOrEmpty(ErrMsg)) { ErrMsg = string.Format("Ошибки в блоке панели {0}: {1}", BlName, ErrMsg); } } }
public static void Check() { Album album = new Album(); Document doc = Application.DocumentManager.MdiActiveDocument; Database db = doc.Database; using (t = db.TransactionManager.StartTransaction()) { var bt = db.BlockTableId.GetObject(OpenMode.ForRead) as BlockTable; var ms = db.CurrentSpaceId.GetObject(OpenMode.ForWrite) as BlockTableRecord; idBtrDesc = bt["Примечание"]; Point3d pt = Point3d.Origin; foreach (var idBtr in bt) { var btr = idBtr.GetObject(OpenMode.ForWrite) as BlockTableRecord; if (Panels.MarkSb.IsBlockNamePanel(btr.Name)) { var blRefObr = findOBR(btr); if (blRefObr == null) continue; //var blRef = new BlockReference(pt, blRefObr.BlockTableRecord); //ms.AppendEntity(blRef); //t.AddNewlyCreatedDBObject(blRef, true); //pt = new Point3d(pt.X, pt.Y-7000,0); PanelBtrExport btrPanel = new PanelBtrExport(idBtr, null); btrPanel.iterateEntInBlock(btr, false); ContourPanel contour = new ContourPanel(btrPanel); var pl3dId = contour.CreateContour2(btr); var pl3d = pl3dId.GetObject(OpenMode.ForWrite); pl3d.Erase(); var ptDesc = btrPanel.ExtentsNoEnd.Center(); int shiftEnd = getShiftEnds(btr.Name); ptDesc = new Point3d(ptDesc.X + 313+shiftEnd, -2218, 0); insertDesc(blRefObr, ptDesc); } } t.Commit(); } }
private void defineEnds(ContourPanel contourPanel) { // условие наличия торцов if (ExtentsByTile.Diagonal() < 1000 || ExtentsNoEnd.Diagonal() < 1000 || ExtentsByTile.Diagonal() - ExtentsNoEnd.Diagonal() < 100) { return; } // Определение торцевых объектов в блоке // Торец слева if ((ExtentsNoEnd.MinPoint.X - ExtentsByTile.MinPoint.X) > 400) { // поиск объектов с координатой близкой к ExtentsByTile.MinPoint.X var endTiles = GetEndTiles(new Extents3d(ExtentsByTile.MinPoint, new Point3d(ExtentsByTile.MinPoint.X + 300, ExtentsByTile.MaxPoint.Y, ExtentsByTile.MaxPoint.Z)), contourPanel.TreeTiles); //var idsEndEntsTemp = getEndEntsInCoord(ExtentsByTile.MinPoint.X, true); if (endTiles.Count > 0) { HashSet <ObjectId> idsEndLeftEntsHash = new HashSet <ObjectId>(); endTiles.ForEach(t => idsEndLeftEntsHash.Add(t)); IdsEndsLeftEntity = idsEndLeftEntsHash.ToList(); } } // Торец справа if ((ExtentsByTile.MaxPoint.X - ExtentsNoEnd.MaxPoint.X) > 400) { var endTiles = GetEndTiles(new Extents3d( new Point3d(ExtentsByTile.MaxPoint.X - 300, ExtentsByTile.MinPoint.Y, ExtentsByTile.MinPoint.Z), ExtentsByTile.MaxPoint), contourPanel.TreeTiles); //var idsEndEntsTemp = getEndEntsInCoord(ExtentsByTile.MaxPoint.X, true); if (endTiles.Count > 0) { var idsEndRightEntsHash = new HashSet <ObjectId>(); endTiles.ForEach(t => idsEndRightEntsHash.Add(t)); IdsEndsRightEntity = idsEndRightEntsHash.ToList(); } } // Торец сверху if ((ExtentsByTile.MaxPoint.Y - ExtentsNoEnd.MaxPoint.Y) > 400) { var endTiles = GetEndTiles(new Extents3d( new Point3d(ExtentsByTile.MinPoint.X, ExtentsByTile.MaxPoint.Y - 300, ExtentsByTile.MaxPoint.Z), ExtentsByTile.MaxPoint), contourPanel.TreeTiles); //var idsEndEntsTemp = getEndEntsInCoord(ExtentsByTile.MaxPoint.Y, false); if (endTiles.Count > 0) { var idsEndTopEntsHash = new HashSet <ObjectId>(); endTiles.ForEach(t => idsEndTopEntsHash.Add(t)); IdsEndsTopEntity = idsEndTopEntsHash.ToList(); } } // Торец снизу if ((ExtentsNoEnd.MinPoint.Y - ExtentsByTile.MinPoint.Y) > 400) { var endTiles = GetEndTiles(new Extents3d(ExtentsByTile.MinPoint, new Point3d(ExtentsByTile.MaxPoint.X, ExtentsByTile.MinPoint.Y + 300, ExtentsByTile.MinPoint.Z)), contourPanel.TreeTiles); //var idsEndEntsTemp = getEndEntsInCoord(ExtentsByTile.MinPoint.Y, false); if (endTiles.Count > 0) { HashSet <ObjectId> idsEndBotEntsHash = new HashSet <ObjectId>(); endTiles.ForEach(t => idsEndBotEntsHash.Add(t)); IdsEndsBottomEntity = idsEndBotEntsHash.ToList(); } } }