Exemple #1
0
        /// <summary>
        /// Нумерация свай
        /// </summary>
        public void Numbering()
        {
            // Форма настроек нумерации свай - порядок нумерации, имя блока сваи, имя атрибута номера сваи.
            PileOptions = PileOptions.Load();
            Options     = new PileNumberingOptions();
            Options.LoadDefault();
            Options = Options.PromptOptions();

            // Выбор свай для нумерации
            var selblocks = Ed.SelectBlRefs("Выбор блоков свай для нумерации");

            // фильтр блоков свай
            var piles = PileFilter.Filter(selblocks, PileOptions, false);

            // Сброс положения атрибута номера сваи если задано в настройках
            ResetPos(ref piles);

            // Определения стороны сваи и проверка ее одинаковости
            Options.PileSide = GetPileSides(ref piles);

            // Проверка дубликатов
            AcadLib.Blocks.Dublicate.CheckDublicateBlocks.Check(piles.Select(p => p.IdBlRef));

            // Проверка сваи и расстояний между ними.
            CheckPiles(piles);

            // Сортировка
            var pilesSort = Sort(piles);

            // Перенумерация
            Num(pilesSort);
        }
Exemple #2
0
 public HightMarkTable(List <HightMarkRow> hmRows)
 {
     doc          = Application.DocumentManager.MdiActiveDocument;
     db           = doc.Database;
     ed           = doc.Editor;
     this.options = PileCalcService.PileOptions;
     this.hmRows  = hmRows;
 }
Exemple #3
0
 public SpecTable(List <SpecRow> specRows)
 {
     doc           = Application.DocumentManager.MdiActiveDocument;
     db            = doc.Database;
     ed            = doc.Editor;
     this.options  = PileCalcService.PileOptions;
     this.specRows = specRows;
 }
Exemple #4
0
        public void Calc(List <Pile> piles, PileOptions pileOpt = null)
        {
            if (pileOpt == null)
            {
                PileOptions = PileOptions.Load();
            }
            else
            {
                PileOptions = pileOpt;
            }

            piles = piles.OrderBy(p => p.Pos).ToList();

            // проверка номеров свай
            CheckNums(piles);

            Inspector.ShowDialog();
            Inspector.Clear();

            // Подсчет отметок в каждой сваи
            foreach (var p in piles)
            {
                p.CalcHightMarks();
            }

            // Назначение Вида сваям по уникальности параметров
            SetPileViews(piles);

            // Строки таблицы отметок свай
            var hmRows = getHightMarkRows(piles);

            // Строки спецификации свай
            var specRows = getSpecRows(piles);

            // Форма дерева свай
            FormPiles formPiles = new FormPiles(hmRows, specRows);

            if (Application.ShowModalDialog(formPiles) != System.Windows.Forms.DialogResult.OK)
            {
                formPiles.ButtonDialogVisible(false);
                Application.ShowModelessDialog(formPiles);
                throw new Exception(AcadLib.General.CanceledByUser);
            }

            // Вставка таблицы отметок
            HightMarkTable hmTable = new HightMarkTable(hmRows);

            hmTable.CreateTable();

            // Вставка спец
            SpecTable specTable = new SpecTable(specRows);

            specTable.CreateTable();
        }