Ejemplo n.º 1
0
        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);
            }
        }