public void CreateBtrPanelFromBase(int i, string[] marks) { // Тест создания определения блока панели по описанию в xml базе. PanelBase panelBase; string testFile = @"c:\temp\test\АКР\Base\Tests\CreateBlockPanelTest\TestCreatePanels.dwg"; //File.Copy(@"c:\Autodesk\AutoCAD\Pik\Settings\Template\АР\АР.dwt", testFile, true); using (var db = new Database(false, true)) { db.ReadDwgFile(testFile, FileOpenMode.OpenForReadAndAllShare, false, ""); db.CloseInput(true); using (AcadLib.WorkingDatabaseSwitcher dbSwitcher = new AcadLib.WorkingDatabaseSwitcher(db)) { baseService.ClearPanelsAkrFromDrawing(db); baseService.InitToCreationPanels(db); Point3d pt = Point3d.Origin; List <ObjectId> idsBtrPanels = new List <ObjectId>(); // Создание определениц блоков панелей foreach (var mark in marks) { Panel panelXml = baseService.GetPanelXml(mark); panelBase = new PanelBase(panelXml, baseService); panelBase.CreateBlock(); if (!panelBase.IdBtrPanel.IsNull) { idsBtrPanels.Add(panelBase.IdBtrPanel); } } // Вставка вхождениц блоков панелей в модель using (var t = db.TransactionManager.StartTransaction()) { foreach (var idBtrPanel in idsBtrPanels) { var blRefPanel = new BlockReference(pt, idBtrPanel); var ms = db.CurrentSpaceId.GetObject(OpenMode.ForWrite) as BlockTableRecord; ms.AppendEntity(blRefPanel); t.AddNewlyCreatedDBObject(blRefPanel, true); pt = new Point3d(0, pt.Y + 10000, 0); } t.Commit(); } } db.SaveAs(testFile, DwgVersion.Current); } }
public void CreateFacadeTest() { Inspector.Clear(); var docTest = Application.DocumentManager.MdiActiveDocument; var db = docTest.Database; baseService.ClearPanelsAkrFromDrawing(db); // Подготовка - копирование блоков, слоев, стилей, и т.п. baseService.InitToCreationPanels(db); // Определение фасадов List <FacadeMounting> facadesMounting = FacadeMounting.GetFacadesFromMountingPlans(); List <FloorArchitect> floorsAr = FloorArchitect.GetAllPlanes(db, baseService); // Создание определений блоков панелей по базе baseService.CreateBtrPanels(facadesMounting, floorsAr); //Создание фасадов FacadeMounting.CreateFacades(facadesMounting); //Восстановление ассоциативной штриховки в дин блоках сечений using (var t = db.TransactionManager.StartTransaction()) { var secBlocks = baseService.Env.BlPanelSections; foreach (var item in secBlocks) { item.ReplaceAssociateHatch(); } t.Commit(); } if (Inspector.HasErrors) { Inspector.Show(); } }