Beispiel #1
0
        public void DefinePanels(List <Facade> facades)
        {
            // определение экспортируемых панелей - в файле АКР
            Dictionary <ObjectId, PanelBtrExport> dictPanelsBtrExport = new Dictionary <ObjectId, PanelBtrExport>();

            //RTreeLib.RTree<Facade> treeFacades = new RTreeLib.RTree<Facade>();
            //facades.ForEach(f =>
            //               {
            //                  try
            //                  {
            //                     treeFacades.Add(ColorArea.GetRectangleRTree(f.Extents), f);
            //                  }
            //                  catch { }
            //               });

            ProgressMeter progress = new ProgressMeter();

            progress.SetLimit(Service.SelectPanels.IdsBlRefPanelAr.Count);
            progress.Start("Определение панелей в файле АКР");

            foreach (var idBlRefPanel in Service.SelectPanels.IdsBlRefPanelAr)
            {
                progress.MeterProgress();
                if (HostApplicationServices.Current.UserBreak())
                {
                    throw new System.Exception("Отменено пользователем.");
                }
                using (var blRef = idBlRefPanel.Open(OpenMode.ForRead, false, true) as BlockReference)
                {
                    // панель определения блока
                    PanelBtrExport panelBtrExport;
                    if (!dictPanelsBtrExport.TryGetValue(blRef.BlockTableRecord, out panelBtrExport))
                    {
                        panelBtrExport = new PanelBtrExport(blRef.BlockTableRecord, this);
                        dictPanelsBtrExport.Add(blRef.BlockTableRecord, panelBtrExport);
                    }
                    panelBtrExport.Def();

                    // панель вхождения блока
                    PanelBlRefExport panelBlRefExport = new PanelBlRefExport(blRef, panelBtrExport);
                    panelBtrExport.Panels.Add(panelBlRefExport);

                    //// определение фасада панели
                    //panelBlRefExport.Facade = defFacadeForPanel(treeFacades, blRef, panelBtrExport, panelBlRefExport);
                }
            }
            PanelsBtrExport = dictPanelsBtrExport.Values.ToList();
            progress.Stop();
        }
        public void DefinePanels(List<Facade> facades)
        {
            // определение экспортируемых панелей - в файле АКР
            Dictionary<ObjectId, PanelBtrExport> dictPanelsBtrExport = new Dictionary<ObjectId, PanelBtrExport>();

            //RTreeLib.RTree<Facade> treeFacades = new RTreeLib.RTree<Facade>();
            //facades.ForEach(f =>
            //               {
            //                  try
            //                  {
            //                     treeFacades.Add(ColorArea.GetRectangleRTree(f.Extents), f);
            //                  }
            //                  catch { }
            //               });

            ProgressMeter progress = new ProgressMeter();
            progress.SetLimit(Service.SelectPanels.IdsBlRefPanelAr.Count);
            progress.Start("Определение панелей в файле АКР");

            foreach (var idBlRefPanel in Service.SelectPanels.IdsBlRefPanelAr)
            {
                progress.MeterProgress();
                if (HostApplicationServices.Current.UserBreak())
                    throw new System.Exception("Отменено пользователем.");
                using (var blRef = idBlRefPanel.Open(OpenMode.ForRead, false, true) as BlockReference)
                {
                    // панель определения блока
                    PanelBtrExport panelBtrExport;
                    if (!dictPanelsBtrExport.TryGetValue(blRef.BlockTableRecord, out panelBtrExport))
                    {
                        panelBtrExport = new PanelBtrExport(blRef.BlockTableRecord, this);
                        dictPanelsBtrExport.Add(blRef.BlockTableRecord, panelBtrExport);
                    }
                    panelBtrExport.Def();

                    // панель вхождения блока
                    PanelBlRefExport panelBlRefExport = new PanelBlRefExport(blRef, panelBtrExport);
                    panelBtrExport.Panels.Add(panelBlRefExport);

                    //// определение фасада панели
                    //panelBlRefExport.Facade = defFacadeForPanel(treeFacades, blRef, panelBtrExport, panelBlRefExport);
                }
            }
            PanelsBtrExport = dictPanelsBtrExport.Values.ToList();
            progress.Stop();
        }