예제 #1
0
        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();
            }
        }
예제 #3
0
        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();
                }
            }
        }