Esempio n. 1
0
        /// <summary>
        /// Создание определения блока панели по описанию из базы XML от конструкторов.
        /// Должна быть открыта транзакция.
        /// </summary>
        /// <exception cref="Autodesk.AutoCAD.Runtime.Exception">DuplicateBlockName</exception>
        /// <returns>ObjectId созданного определения блока в текущей базе.</returns>
        public void CreateBlock()
        {
            // Имя для блока панели АКР
            BlNameAkr = defineBlockPanelAkrName();

            Openings = new List <Extents3d>();

            Database db = Service.Db;

            //Transaction t = db.TransactionManager.TopTransaction;
            using (var t = db.TransactionManager.StartTransaction())
            {
                BlockTable bt = db.BlockTableId.GetObject(OpenMode.ForRead) as BlockTable;
                // Ошибка если блок с таким именем уже есть
                if (bt.Has(BlNameAkr))
                {
                    IdBtrPanel = bt[BlNameAkr];
                    Inspector.AddError($"Блок панели с именем {BlNameAkr} уже определен в чертеже.", icon: System.Drawing.SystemIcons.Error);
                    return;
                }
                BlockTableRecord btrPanel = new BlockTableRecord();
                btrPanel.Name = BlNameAkr;
                bt.UpgradeOpen();
                IdBtrPanel = bt.Add(btrPanel);
                bt.DowngradeOpen();
                t.AddNewlyCreatedDBObject(btrPanel, true);

                //корректировка точки отсчета панели
                correctStartPointCoordinatesPanel();

                // Добавление полилинии контура
                createContour(btrPanel, t);

                // Добавление окон
                addWindows(btrPanel, t);

                // заполнение плиткой
                addTiles(btrPanel, t);

                // Добавление торцов (Cheek)
                addCheek(btrPanel, t);

                // Образмеривание (на Фасаде)
                DimensionFacade dimFacade = new DimensionFacade(btrPanel, t, this);
                dimFacade.Create();

                // Образмеривание (в Форме)
                DimensionForm dimForm = new DimensionForm(btrPanel, t, this);
                dimForm.Create();

                t.Commit();
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Создание определения блока панели по описанию из базы XML от конструкторов.
        /// Должна быть открыта транзакция.
        /// </summary>
        /// <exception cref="Autodesk.AutoCAD.Runtime.Exception">DuplicateBlockName</exception>
        /// <returns>ObjectId созданного определения блока в текущей базе.</returns>            
        public void CreateBlock()
        {
            // Имя для блока панели АКР
             BlNameAkr = defineBlockPanelAkrName();

             Openings = new List<Extents3d>();

             Database db = Service.Db;
             //Transaction t = db.TransactionManager.TopTransaction;
             using (var t = db.TransactionManager.StartTransaction())
             {
            BlockTable bt = db.BlockTableId.GetObject(OpenMode.ForRead) as BlockTable;
            // Ошибка если блок с таким именем уже есть
            if (bt.Has(BlNameAkr))
            {
               IdBtrPanel = bt[BlNameAkr];
               Inspector.AddError($"Блок панели с именем {BlNameAkr} уже определен в чертеже.", icon: System.Drawing.SystemIcons.Error);
               return;
            }
            BlockTableRecord btrPanel = new BlockTableRecord();
            btrPanel.Name = BlNameAkr;
            bt.UpgradeOpen();
            IdBtrPanel = bt.Add(btrPanel);
            bt.DowngradeOpen();
            t.AddNewlyCreatedDBObject(btrPanel, true);

            //корректировка точки отсчета панели
            correctStartPointCoordinatesPanel();

            // Добавление полилинии контура
            createContour(btrPanel, t);

            // Добавление окон
            addWindows(btrPanel, t);

            // заполнение плиткой
            addTiles(btrPanel, t);

            // Добавление торцов (Cheek)
            addCheek(btrPanel, t);

            // Образмеривание (на Фасаде)
            DimensionFacade dimFacade = new DimensionFacade(btrPanel, t, this);
            dimFacade.Create();

            // Образмеривание (в Форме)
            DimensionForm dimForm = new DimensionForm(btrPanel, t, this);
            dimForm.Create();

            t.Commit();
             }
        }