예제 #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);
            }
        }
예제 #2
0
        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();
            }
        }