Beispiel #1
0
 public Panel(BlockReference blRefPanel, MarkAr markAr)
 {
     _idBlRefSb = blRefPanel.ObjectId;
     _insPt     = blRefPanel.Position;
     _extents   = blRefPanel.GeometricExtents;
     _markAr    = markAr;
 }
Beispiel #2
0
        // Замена вхождения блока СБ на АР
        public void ReplaceBlockSbToAr(MarkAr markAr, Transaction t, BlockTableRecord ms)
        {
            var blRefMarkSb  = t.GetObject(_idBlRefSb, OpenMode.ForWrite, false, true) as BlockReference;
            var blRefPanelAr = new BlockReference(blRefMarkSb.Position, markAr.IdBtrAr);

            blRefPanelAr.SetDatabaseDefaults();
            blRefPanelAr.Layer = blRefMarkSb.Layer;
            _extents           = blRefPanelAr.GeometricExtents;
            //_insPt = blRefPanelAr.Position;
            blRefMarkSb.Erase(true);
            _idBlRefAr = ms.AppendEntity(blRefPanelAr);
            t.AddNewlyCreatedDBObject(blRefPanelAr, true);

            //Database db = HostApplicationServices.WorkingDatabase;
            //using (var t = db.TransactionManager.StartTransaction())
            //{
            //   var ms = t.GetObject(SymbolUtilityServices.GetBlockModelSpaceId(db), OpenMode.ForWrite) as BlockTableRecord;
            //   var blRefMarkSb = t.GetObject(_idBlRefSb, OpenMode.ForWrite, false, true) as BlockReference;
            //   var blRefPanelAr = new BlockReference(blRefMarkSb.Position, markAr.IdBtrAr);
            //   blRefPanelAr.SetDatabaseDefaults();
            //   blRefPanelAr.Layer = blRefMarkSb.Layer;
            //   _extents = blRefPanelAr.GeometricExtents;
            //   //_insPt = blRefPanelAr.Position;
            //   blRefMarkSb.Erase(true);
            //   _idBlRefAr = ms.AppendEntity(blRefPanelAr);
            //   t.AddNewlyCreatedDBObject(blRefPanelAr, true);
            //   t.Commit();
            //}
        }
Beispiel #3
0
        // Добавление панели АР по списку ее покраски
        private void AddPanelAR(List <Paint> paintAR, BlockReference blRefPanel, MarkSb markSb)
        {
            // Проверка нет ли уже такой марки покраси АР
            MarkAr panelAR = HasPanelAR(paintAR);

            if (panelAR == null)
            {
                panelAR = new MarkAr(paintAR, markSb, blRefPanel);
                _marksAR.Add(panelAR);
            }
            panelAR.AddBlockRefPanel(blRefPanel);
        }
Beispiel #4
0
        // Поиск покраски марки АР в списке _marksAR
        private MarkAr HasPanelAR(List <Paint> paintAR)
        {
            //Поиск панели АР по покраске
            MarkAr resPanelAR = null;

            //Сравнение списков покраски
            foreach (MarkAr panelAR in _marksAR)
            {
                if (panelAR.EqualPaint(paintAR))
                {
                    resPanelAR = panelAR;
                    break;
                }
            }
            return(resPanelAR);
        }
Beispiel #5
0
        // Определение покраски панелей текущего чертежа (в Модели)
        public static List <MarkSb> GetMarksSB(RTree <ColorArea> rtreeColorAreas, Album album, string progressMsg, List <ObjectId> idsBlRefPanels)
        {
            List <MarkSb> marksSb = new List <MarkSb>();
            Database      db      = HostApplicationServices.WorkingDatabase;

            using (var t = db.TransactionManager.StartTransaction())
            {
                // Перебор всех блоков в модели и составление списка блоков марок и панелей.
                var bt = db.BlockTableId.GetObject(OpenMode.ForRead) as BlockTable;
                var ms = bt[BlockTableRecord.ModelSpace].GetObject(OpenMode.ForRead) as BlockTableRecord;

                ProgressMeter progressMeter = new ProgressMeter();
                progressMeter.SetLimit(idsBlRefPanels.Count);
                progressMeter.Start(progressMsg);

                // Перебор вхожденй блоков Марки СБ
                foreach (ObjectId idBlRefPanelMarkSb in idsBlRefPanels)
                {
                    if (HostApplicationServices.Current.UserBreak())
                    {
                        throw new System.Exception("Отменено пользователем.");
                    }
                    progressMeter.MeterProgress();

                    var blRefPanel = idBlRefPanelMarkSb.GetObject(OpenMode.ForRead, false, true) as BlockReference;
                    // Определение Марки СБ панели. Если ее еще нет, то она создается и добавляется в список _marks.
                    MarkSb markSb = GetMarkSb(blRefPanel, marksSb, bt, album);
                    if (markSb == null)
                    {
                        // Значит это не блок панели. Пропускаем.
                        continue;
                    }
                    //Определение покраски панели (Марки АР)
                    List <Paint> paintAR = MarkAr.GetPanelMarkAR(markSb, blRefPanel, rtreeColorAreas);
                    // Добавление панели АР в список панелей для Марки СБ
                    markSb.AddPanelAR(paintAR, blRefPanel, markSb);
                }
                progressMeter.Stop();
                t.Commit();
            }
            return(marksSb);
        }