/// <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(); } }
/// <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(); } }