当前位置: 首页>>代码示例>>C#>>正文


C# Database.CloseInput方法代码示例

本文整理汇总了C#中Database.CloseInput方法的典型用法代码示例。如果您正苦于以下问题:C# Database.CloseInput方法的具体用法?C# Database.CloseInput怎么用?C# Database.CloseInput使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Database的用法示例。


在下文中一共展示了Database.CloseInput方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: PlotFiles

        private void PlotFiles()
        {
            DsdEntryCollection dsdCol = new DsdEntryCollection();

            int indexfile = 0;

            title = $"Печать {filesDwg.Length} файлов dwg...";

            foreach (var fileDwg in filesDwg)
            {
                if (HostApplicationServices.Current.UserBreak())
                    throw new Exception(General.CanceledByUser);

                indexfile++;
                using (var dbTemp = new Database(false, true))
                {
                    dbTemp.ReadDwgFile(fileDwg, FileOpenMode.OpenForReadAndAllShare, false, "");
                    dbTemp.CloseInput(true);
                    using (var t = dbTemp.TransactionManager.StartTransaction())
                    {
                        DBDictionary layoutDict = (DBDictionary)dbTemp.LayoutDictionaryId.GetObject(OpenMode.ForRead);

                        List<Layout> layouts = new List<Layout>();
                        foreach (DBDictionaryEntry entry in layoutDict)
                        {
                            if (entry.Key != "Model")
                            {
                                if (!entry.Value.IsErased)
                                {
                                    var layout = entry.Value.GetObject(OpenMode.ForRead) as Layout;
                                    layouts.Add(layout);
                                }
                            }
                        }
                        // Фильтр листов
                        if (Options.FilterState)
                        {
                            layouts = FilterLayouts(layouts, Options);
                        }

                        List<Tuple<Layout, DsdEntry>> layoutsDsd = new List<Tuple<Layout, DsdEntry>>();
                        foreach (var layout in layouts)
                        {
                            DsdEntry dsdEntry = new DsdEntry();
                            dsdEntry.Layout = layout.LayoutName;
                            dsdEntry.DwgName = fileDwg;
                            //dsdEntry.Nps = "Setup1";
                            dsdEntry.NpsSourceDwg = fileDwg;
                            dsdEntry.Title = indexfile + "-" + layout.LayoutName;
                            layoutsDsd.Add(new Tuple<Layout, DsdEntry>(layout, dsdEntry));
                            //dsdCol.Add(dsdEntry);
                        }

                        if (Options.SortTabOrName)
                        {
                            layoutsDsd.Sort((l1, l2) => l1.Item1.TabOrder.CompareTo(l2.Item1.TabOrder));
                        }
                        else
                        {
                            layoutsDsd.Sort((l1, l2) => l1.Item1.LayoutName.CompareTo(l2.Item1.LayoutName));
                        }
                        layoutsDsd.ForEach(l => dsdCol.Add(l.Item2));
                        t.Commit();
                    }
                }
            }
            PublisherDSD(dsdCol);
        }
开发者ID:vildar82,项目名称:AcadLib,代码行数:68,代码来源:PlotDirToPdf.cs

示例2: copyFlat

 private static void copyFlat(string fileFlat, ObjectId idBt)
 {
     using (var dbFlat = new Database(false, true))
     {
         dbFlat.ReadDwgFile(fileFlat, FileOpenMode.OpenForReadAndAllShare, false, "");
         dbFlat.CloseInput(true);
         using (var bt = dbFlat.BlockTableId.Open( OpenMode.ForRead) as BlockTable)
         {
             foreach (var idBtr in bt)
             {
                 using (var btr = idBtr.Open( OpenMode.ForRead) as BlockTableRecord)
                 {
                     if (Revit.Apartment.IsBlockNameApartment(btr.Name))
                     {
                         using (var map = new IdMapping())
                         {
                             ObjectIdCollection ids = new ObjectIdCollection(new[] { idBtr });
                             dbFlat.WblockCloneObjects(ids, idBt, map, DuplicateRecordCloning.Ignore, false);
                         }
                         return;
                     }
                 }
             }
         }
     }
 }
开发者ID:vildar82,项目名称:AR_ApartmentsBase,代码行数:26,代码来源:ApartmentPlacement.cs

示例3: CloseAndDelete

        public void CloseAndDelete(List<PanelAKR> panelsToDelete)
        {
            string file = dbLib.Filename;
            try
            {
                dbLib.Dispose();
            }
            catch { }
            File.Delete(file);

            // Удаление блоков
            if (panelsToDelete != null && panelsToDelete.Count > 0)
            {
                // Сделать копию библиотеки
                PanelLibrarySaveService.BackUpLibPanelsFile();

                using (ProgressMeter progress = new ProgressMeter())
                {
                    progress.SetLimit(panelsToDelete.Count);
                    progress.Start($"Удаление {panelsToDelete.Count} панелей из библиотеки...");

                    using (var db = new Database(false, true))
                    {
                        db.ReadDwgFile(PanelLibrarySaveService.LibPanelsFilePath, FileShare.None, true, "");
                        db.CloseInput(true);

                        using (var t = db.TransactionManager.StartTransaction())
                        {
                            var bt = db.BlockTableId.GetObject(OpenMode.ForRead) as BlockTable;

                            foreach (var item in panelsToDelete)
                            {
                                if (bt.Has(item.BlName))
                                {
                                    var idPanelAkr = bt[item.BlName];
                                    var dbo = idPanelAkr.GetObject(OpenMode.ForWrite);
                                    try
                                    {
                                        dbo.Erase();
                                        progress.MeterProgress();
                                    }
                                    catch { };
                                }
                            }
                            t.Commit();
                        }
                        db.SaveAs(PanelLibrarySaveService.LibPanelsFilePath, DwgVersion.Current);
                    }
                    Logger.Log.Error ($"Удалены панели АКР из библиотеки - {panelsToDelete.Count}шт.: {string.Join(", ",panelsToDelete)}");
                    progress.Stop();
                }
            }
        }
开发者ID:vildar82,项目名称:PanelColorAlbum,代码行数:53,代码来源:LibraryEditor.cs

示例4: PlotDir

        // Открытие и печать всех файлов в папке
        public void PlotDir(string dir)
        {
            var dirInfo = new DirectoryInfo(dir);
             var filesDwg = dirInfo.GetFiles("*.dwg", SearchOption.TopDirectoryOnly);

             Database dbOrig = HostApplicationServices.WorkingDatabase;

             foreach (var fileDwg in filesDwg)
             {
            // Открыть файл, сделать его текущим
            using (var db = new Database(false, true))
            {
               db.ReadDwgFile(fileDwg.FullName, FileShare.ReadWrite, false, "");
               db.CloseInput(true);
               HostApplicationServices.WorkingDatabase = db;
               db.CloseInput(true);
               multiSheetPlot(db);
               HostApplicationServices.WorkingDatabase = dbOrig;
            }
             }
        }
开发者ID:vildar82,项目名称:PanelColorAlbum,代码行数:22,代码来源:PlotMultiPdfReadDwg.cs

示例5: CreateBtrPanelFromBase

        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);
             }
        }
开发者ID:vildar82,项目名称:PanelColorAlbum,代码行数:50,代码来源:BaseServiceTests.cs

示例6: Edit

        public void Edit()
        {
            var panelsFile = GetPanelsFile();
            List<PanelAKR> panelsInLib;
            dbLib = new Database(false, true);
            dbLib.ReadDwgFile(panelsFile, FileShare.ReadWrite, true, "");
            dbLib.CloseInput(true);
            // список блоков АКР-Панелей в библиотеке (полные имена блоков).
            panelsInLib = PanelAKR.GetAkrPanelLib(dbLib, true);

            UI.PanelsAkrView panelsView = new UI.PanelsAkrView(panelsInLib, this);
            UI.PanelsWindow panelsWindow = new UI.PanelsWindow(panelsView);
            Application.ShowModelessWindow(panelsWindow);
        }
开发者ID:vildar82,项目名称:PanelColorAlbum,代码行数:14,代码来源:LibraryEditor.cs

示例7: GetAllPlanesTest

        public void GetAllPlanesTest()
        {
            List<FloorArchitect> floorsAr;
             string testFile = @"c:\temp\test\АКР\Base\Tests\Тест-ПостроениеФасада.dwg";

             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 baseService = new BaseService();
               baseService.InitToCreationPanels(db);

               floorsAr = FloorArchitect.GetAllPlanes(db, baseService);
            }
            db.SaveAs(@"c:\temp\test\АКР\Base\Tests\Тест-ПостроениеФасада-WindowMarks.dwg", DwgVersion.Current);
             }

             Assert.AreEqual(floorsAr.Count, 2);
        }
开发者ID:vildar82,项目名称:PanelColorAlbum,代码行数:21,代码来源:FloorArchitectTests.cs

示例8: Autograder

        public static void Autograder()
        {
            const string systemVar_DwgCheck = "DWGCHECK";
            Int16 dwgCheckPrevious = (Int16)Application.GetSystemVariable(systemVar_DwgCheck);
            Application.SetSystemVariable(systemVar_DwgCheck, 2);
            Document acDoc = Application.DocumentManager.MdiActiveDocument;
            PromptStringOptions pStrOpts = new PromptStringOptions("\nEnter entire path to the folder containing all the submissions");
            pStrOpts.AllowSpaces = true;
            PromptResult pStrRes = acDoc.Editor.GetString(pStrOpts);
            /*string[] folderpaths = Directory.GetDirectories(@"C:\Users\Vaibhav\Desktop\2D\2D Cad project\");*/
            string[] folderpaths = Directory.GetDirectories(pStrRes.StringResult);
            int i = 0;
            foreach (string strFolderStudname in folderpaths)
            {
                i = i + 1;
                //define dictionary for storing data.
                Dictionary<string, string> dict1 = new Dictionary<string, string>();
                dict1["auxinfodim"] = "";
                dict1["blocksinlastlayout"] = "";
                dict1["filename"] = i.ToString() + ": " + strFolderStudname;
                //writestuff(strwrite,i.ToString()+": "+strFolderStudname,1);
                Directory.SetCurrentDirectory(strFolderStudname + "/Submission attachment(s)/");
                string[] filepaths = Directory.GetFiles(Directory.GetCurrentDirectory());
                bool checkfilepass = false;
                bool checkfilepdf = false;
                bool checkfilepdfmulti = false;
                int checkblockexistance = 0;
                foreach (string strFileName in filepaths)
                {
                    string newStr = strFileName.Substring(strFileName.Length - 3, 3);
                    if (newStr.Equals("dwg"))
                    {
                        /*Application.DocumentManager.Open(strFileName,false); //the boolean is for read only
                        Document acDoc = Application.DocumentManager.MdiActiveDocument;
                        Database acCurDb = acDoc.Database;*/
                        Database acCurDb = new Database(false, true);
                        acCurDb.ReadDwgFile(strFileName, FileOpenMode.OpenForReadAndAllShare, false, null);
                        acCurDb.CloseInput(true);
                        checkfilepass = true;
                        Layout taborderlayout = null;
                        int vp2 = 0;
                        string[] Layerlist = { };

                        using (Transaction acTrans2 = acCurDb.TransactionManager.StartTransaction())
                        {
                            DBDictionary lays = acTrans2.GetObject(acCurDb.LayoutDictionaryId, OpenMode.ForRead) as DBDictionary;
                            LayoutManager Lm = LayoutManager.Current;
                            string currentLayout = Lm.CurrentLayout;
                            int layoutnum = 0;
                            string slayouts = "NA";
                            int tabordercheck = 0;
                            int tabviewports = 0;
                            bool tabcheck = false;
                            Viewport taborderviewport=null;
                            Viewport tempviewport = null;
                            Layout firsttaborderlayout=null;
                            Viewport firsttaporderviewport=null;
                            int firsttabviewports = 0;
                            foreach (DBDictionaryEntry de in lays)
                            {
                                layoutnum += 1;
                                Layout layout = de.Value.GetObject(OpenMode.ForRead) as Layout;
                                string layoutName = layout.LayoutName;
                                if (layoutName != "Model")
                                {
                                    if (slayouts.Equals("NA"))
                                    {
                                        slayouts = layoutName;
                                    }
                                    else
                                    {
                                        slayouts = layoutName + " , " + slayouts;
                                    }
                                    ObjectIdCollection vpIdCol = layout.GetViewports();
                                    if (tabordercheck < layout.TabOrder)
                                    {
                                        tabordercheck = layout.TabOrder;
                                        taborderlayout = layout;
                                        tabcheck = true;
                                    }
                                    else
                                    {
                                        tabcheck = false;
                                    }

                                    int nviewports = -1;
                                    foreach (ObjectId vpId in vpIdCol)
                                    {
                                        Viewport vp = vpId.GetObject(OpenMode.ForRead) as Viewport;
                                        nviewports += 1;
                                        tempviewport = vp;
                                        if (tabcheck == true)
                                        {
                                            tabviewports = nviewports;
                                        }
                                        if (layout.TabOrder == 2)
                                        {
                                            firsttaborderlayout = layout;
                                            firsttaporderviewport = vp;
                                            firsttabviewports = nviewports;
//.........这里部分代码省略.........
开发者ID:vaibhav-kumar,项目名称:Autograder-Version1,代码行数:101,代码来源:Class1.cs

示例9: copyObjectFromTemplate

 // Копирование стиля таблиц ПИК из файла шаблона
 private static ObjectId copyObjectFromTemplate(Database db, Func<Database, string, ObjectId> getObjectId, string styleName, ObjectId ownerIdTable)
 {
     ObjectId idStyleDest = ObjectId.Null;
     // файл шаблона
     var userGroup = PikSettings.UserGroupsCombined.First();
     string fileTemplate = Path.Combine(PikSettings.LocalSettingsFolder, "Template", userGroup,
         userGroup + ".dwt");
     if (File.Exists(fileTemplate))
     {
         using (Database dbTemplate = new Database(false, true))
         {
             dbTemplate.ReadDwgFile(fileTemplate, FileOpenMode.OpenForReadAndAllShare, false, "");
             dbTemplate.CloseInput(true);
             ObjectId idStyleInTemplate = getObjectId(dbTemplate, styleName);
             if (!idStyleInTemplate.IsNull)
             {
                 using (IdMapping map = new IdMapping())
                 {
                     using (var ids = (new ObjectIdCollection(new ObjectId[] { idStyleInTemplate })))
                     {
                         db.WblockCloneObjects(ids, ownerIdTable, map, DuplicateRecordCloning.Replace, false);
                         idStyleDest = map[idStyleInTemplate].Value;
                     }
                 }
             }
         }
     }
     return idStyleDest;
 }
开发者ID:vildar82,项目名称:AcadLib,代码行数:30,代码来源:DbExtensions.cs

示例10: RedefineBlockInFile

        private void RedefineBlockInFile(Editor ed, Database db, List<RedefineBlock> blocksRedefine,
                                    List<RedefineBlock> renameBlocks, FileInfo file, 
                                    ref int countFilesRedefined, ref int countFilesWithoutBlock)
        {
            List<Error> errors = new List<Error>();
            using (Database dbExt = new Database(false, true))
            {
                dbExt.ReadDwgFile(file.FullName, FileShare.ReadWrite, false, "");
                dbExt.CloseInput(true);

                countFilesRedefined = renameAndRedefBlocksInDb(blocksRedefine, renameBlocks, file, countFilesRedefined, errors, dbExt);

                dbExt.SaveAs(file.FullName, DwgVersion.Current);
            }
            if (errors.Count != 0)
                Inspector.Errors.AddRange(errors);
        }
开发者ID:vildar82,项目名称:RedefineBlockInFolder,代码行数:17,代码来源:Commands.cs

示例11: CopyBlockFromExternalDrawing

        /// <summary>
        /// Копирование определенич блока из внешнего чертежа
        /// </summary>
        /// <param name="blNames">Имена блоков</param>
        /// <param name="fileDrawing">Полный путь к чертежу из которого копируется блок</param>
        /// <param name="destDb">База чертежа в который копируетсяя блок</param>
        /// <exception cref="Exception">Если нет блока в файле fileDrawing.</exception>
        /// <returns>Список пар значений имени блока и idBtr</returns>        
        public static Dictionary<string, ObjectId> CopyBlockFromExternalDrawing(IList<string> blNames, string fileDrawing, Database destDb,
                                                DuplicateRecordCloning mode = DuplicateRecordCloning.Ignore)
        {
            var resVal = new Dictionary<string, ObjectId>();
            var uniqBlNames = blNames.Distinct(StringComparer.OrdinalIgnoreCase);

            using (var extDb = new Database(false, true))
            {
                extDb.ReadDwgFile(fileDrawing, System.IO.FileShare.ReadWrite, true, "");
                extDb.CloseInput(true);

                var valToCopy = new Dictionary<ObjectId, string>();

                using (var bt = (BlockTable)extDb.BlockTableId.Open(OpenMode.ForRead))
                {
                    foreach (var blName in uniqBlNames)
                    {
                        ObjectId id;
                        if (bt.Has(blName))
                        {
                            id = bt[blName];
                            valToCopy.Add(id, blName);
                        }
                    }
                }
                // Копир
                if (valToCopy.Count > 0)
                {
                    // Получаем текущую базу чертежа
                    using (IdMapping map = new IdMapping())
                    {
                        using (var ids = new ObjectIdCollection(valToCopy.Keys.ToArray()))
                        {
                            destDb.WblockCloneObjects(ids, destDb.BlockTableId, map, mode, false);
                            foreach (var item in valToCopy)
                            {
                                resVal.Add(item.Value, map[item.Key].Value);
                            }
                        }
                    }
                }
            }

            // Если задан режим переопределения - то перерисовка геометрии динамических блоков
            if (mode == DuplicateRecordCloning.Replace)
            {
                using (var t = destDb.TransactionManager.StartTransaction())
                {
                    var bt = destDb.BlockTableId.GetObject(OpenMode.ForRead) as BlockTable;
                    foreach (var item in resVal)
                    {
                        if (item.Value.IsValidEx())
                        {
                            var btr = item.Value.GetObject(OpenMode.ForRead) as BlockTableRecord;
                            if (btr.IsDynamicBlock)
                            {
                                try
                                {
                                    btr.UpgradeOpen();
                                    btr.UpdateAnonymousBlocks();
                                }
                                catch { }
                            }
                        }
                    }
                    t.Commit();
                }
            }

            return resVal;
        }
开发者ID:vildar82,项目名称:AcadLib,代码行数:79,代码来源:Block.cs

示例12: Contents

        // Содержание тома (Общие данные. Ведомость комплекта чертежей.)
        public void Contents()
        {
            // Создание файла содержания и титульных листов
             string fileContent = Path.Combine(_album.AlbumDir, "00_Содержание" + _album.StartOptions.Abbr + ".dwg");
             File.Copy(_sheetsSet.SheetTemplateFileContent, fileContent);

             // Кол листов содержания = Суммарное кол лисчтов панелей / на кол строк в таблице на одном листе
             // Но на первом листе содержания первые 5 строк заняты (обложка, тит, общие данные, наруж стен панели, том1).
             //_dbFacade = HostApplicationServices.WorkingDatabase;
             using (_dbContent = new Database(false, true))
             {
            _dbContent.ReadDwgFile(fileContent, FileShare.ReadWrite, false, "");
            _dbContent.CloseInput(true);

            using (new AcadLib.WorkingDatabaseSwitcher(_dbContent))
            {
               // Замена блока рамки из чертежа фасада, если он есть
               _album.AlbumInfo?.Frame?.ChangeBlockFrame(_dbContent, false);
               _album?.AlbumInfo?.CoverTitle?.ChangeCoverAndTitle(_dbContent);

               using (var t = _dbContent.TransactionManager.StartTransaction())
               {
                  int curContentLayoutNum = _countSheetsBeforContent+1;
                  Table tableContent;
                  BlockReference blRefStamp;
                  CopyContentSheet(t, curContentLayoutNum, out tableContent, out blRefStamp);
                  // Определение кол-ва марок АР
                  int countMarkArs = CalcMarksArNumber(_sheetsMarkSB);
                  // Определение кол-ва листов содержания (только для панелей без учета лтстов обложек и тп.)
                  _countContentSheets = CalcSheetsContentNumber(tableContent.Rows.Count, countMarkArs) + _album.StartOptions.NumberAddSheetContent;
                  // Заполнение штампа на первом листе содержания
                  FillingStampContent(blRefStamp, curContentLayoutNum- _countSheetsBeforContent, t);
                  // текущая строка для записи листа
                  int row = _firstRowInTableForSheets;

                  // На первом листе содержания заполняем строки для Обложки, Тит, Общ дан, НСП, Том1.
                  tableContent.Cells[row, 2].TextString = 1.ToString();
                  tableContent.Cells[row, 2].Alignment = CellAlignment.MiddleCenter;
                  tableContent.Cells[row++, 1].TextString = "Обложка";

                  tableContent.Cells[row, 2].TextString = 2.ToString();
                  tableContent.Cells[row, 2].Alignment = CellAlignment.MiddleCenter;
                  tableContent.Cells[row++, 1].TextString = "Титульный лист";

                  tableContent.Cells[row, 1].TextString = "Общие данные. Ведомость комплекта чертежей";
                  tableContent.Cells[row, 2].TextString = _countContentSheets > 1 ? "3-" + (3 + _countContentSheets - 1).ToString() : "3";
                  tableContent.Cells[row, 2].Alignment = CellAlignment.MiddleCenter;
                  row++;
                  tableContent.Cells[row++, 1].TextString = "Наружные стеновые панели";
                  tableContent.Cells[row++, 1].TextString = "ТОМ";

                  int curSheetArNum;
                  if (_album.StartOptions.NumberFirstSheet == 0)
                  {
                     curSheetArNum = _countContentSheets + _countSheetsBeforContent;// номер для первого листа Марки АР
                  }
                  else
                  {
                     curSheetArNum = _album.StartOptions.NumberFirstSheet - 1;
                  }

                  ProgressMeter progressMeter = new ProgressMeter();
                  progressMeter.SetLimit(_sheetsMarkSB.Count);
                  progressMeter.Start("Создание содержания ");

                  foreach (var sheetMarkSB in _sheetsMarkSB)
                  {
                     progressMeter.MeterProgress();
                     foreach (var sheetMarkAR in sheetMarkSB.SheetsMarkAR)
                     {
                        tableContent.Cells[row, 1].TextString = sheetMarkAR.MarkArFullName + ". Раскладка плитки на фасаде";
                        sheetMarkAR.SheetNumber = ++curSheetArNum;
                        tableContent.Cells[row, 2].TextString = curSheetArNum.ToString();
                        tableContent.Cells[row, 2].Alignment = CellAlignment.MiddleCenter;
                        row++;
                        CheckEndOfTable(t, ref curContentLayoutNum, ref tableContent, ref blRefStamp, ref row);

                        tableContent.Cells[row, 1].TextString = sheetMarkAR.MarkArFullName + ". Раскладка плитки в форме";
                        tableContent.Cells[row, 2].TextString = curSheetArNum.ToString() + ".1";
                        sheetMarkAR.SheetNumberInForm = curSheetArNum.ToString() + ".1";
                        tableContent.Cells[row, 2].Alignment = CellAlignment.MiddleCenter;
                        row++;
                        CheckEndOfTable(t, ref curContentLayoutNum, ref tableContent, ref blRefStamp, ref row);
                     }
                  }
                  progressMeter.Stop();

                  //Удаление пустых строк в таблице содержания
                  if (tableContent.Rows.Count > row + 1)
                  {
                     tableContent.DeleteRows(row, tableContent.Rows.Count - row);
                  }

                  // Удаление последнего листа содержания (пустой копии)
                  HostApplicationServices.WorkingDatabase = _dbContent;
                  LayoutManager lm = LayoutManager.Current;
                  //lm.CurrentLayout = getLayoutContentName(_countSheetsBeforContent + 1);
                  //string layoutNameToDel = (_countSheetsBeforContent + (++_countContentSheets)).ToString("00") + "_" + Settings.Default.SheetTemplateLayoutNameForContent;
                  lm.DeleteLayout(Settings.Default.SheetTemplateLayoutNameForContent);
//.........这里部分代码省略.........
开发者ID:vildar82,项目名称:PanelColorAlbum,代码行数:101,代码来源:SheetsContent.cs

示例13: Export

        /// <summary>
        /// Экспорт фасада для АР
        /// </summary>
        public void Export()
        {
            // Список панелей для экспорта
            SelectPanels = new SelectionBlocks();
            SelectPanels.SelectBlRefsInModel(false);
            if (SelectPanels.IdsBlRefPanelSb.Count > 0)
            {
                Inspector.AddError("В текущем чертеже в Модели не должно быть панелей Марки СБ (только Марки АР).", icon: System.Drawing.SystemIcons.Error);
                return;
            }
            if (SelectPanels.IdsBlRefPanelAr.Count == 0)
            {
                Inspector.AddError("Не найдены панели Марки АР в Моделе текущего чертежа.", icon: System.Drawing.SystemIcons.Error);
                return;
            }

            // Определить файл в который экспортировать фасад
            _fileExport = new FileExport();
            _fileExport.DefineFile();

            // определение фасадов (вокруг панелей АКР)
            var facades = Facade.GetFacades(SelectPanels.FacadeBlRefs);

            // Определение экспортируемых панелей и фасадов
            CPS = new ConvertPanelService(this);
            CPS.DefinePanels(facades);

            using (var dbExport = new Database(!_fileExport.IsExistsFileExport, true))
            {
                if (_fileExport.IsExistsFileExport)
                {
                    // удалить старые панели из файла экспорта
                    try
                    {
                        dbExport.ReadDwgFile(_fileExport.FileExportFacade.FullName, FileShare.Read, true, "");
                    }
                    catch (Exception ex)
                    {
                        // файл занят.
                        warningMessageBusyFileExportFacade(ex, _fileExport.FileExportFacade.FullName);
                        throw;
                    }
                    // сделать копию файла
                    _fileExport.Backup();
                    dbExport.CloseInput(true);
                    deletePanels(dbExport);
                }
                dbExport.CloseInput(true);
                CPS.DbExport = dbExport;

                // Копирование панелей АР в экспортный файл
                copyPanelToExportFile(dbExport);

                // Переопределение блока плитки из файла шаблона блоков для Экспорта фасадов.
                redefineBlockTile(dbExport);

                using (AcadLib.WorkingDatabaseSwitcher switchDb = new AcadLib.WorkingDatabaseSwitcher(dbExport))
                {
                    using (var t = dbExport.TransactionManager.StartTransaction())
                    {
                        // Преобразования определений блоков
                        CPS.ConvertBtr();

                        // Преобразования торцов фасадов
                        CPS.ConvertEnds();

                        t.Commit();
                    }
                }
                CPS.Purge();

                dbExport.SaveAs(_fileExport.FileExportFacade.FullName, DwgVersion.Current);
            }
        }
开发者ID:vildar82,项目名称:PanelColorAlbum,代码行数:77,代码来源:ExportFacadeService.cs

示例14: LoadSections

      /// <summary>
      /// Копирование блоков сечений из шаблона блоков и доп списка блоков blNames
      /// </summary>
      /// <param name="fileBlocksTemplate"></param>
      /// <param name="service"></param>
      /// <param name="blNames"></param>
      /// <returns></returns>
      public static List<BlockSectionAbstract> LoadSections(string fileBlocksTemplate, BaseService service, List<string> blNames, 
            out Dictionary<string, ObjectId> blNamesCopy)
      {
         blNamesCopy = new Dictionary<string, ObjectId>();
         Dictionary<ObjectId, BlockSectionAbstract> blSecToCopy = new Dictionary<ObjectId, BlockSectionAbstract>();         
         using (var dbBlocks = new Database(false, true))
         {
            dbBlocks.ReadDwgFile(fileBlocksTemplate, FileOpenMode.OpenForReadAndAllShare, false, "");
            dbBlocks.CloseInput(true);
            using (var bt = dbBlocks.BlockTableId.Open(OpenMode.ForRead) as BlockTable)
            {
               foreach (ObjectId idBtr in bt)
               {
                  using (var btr = idBtr.Open(OpenMode.ForRead) as BlockTableRecord)
                  {
                     var blNameToCopy = blNames.Find(n => n.Equals(btr.Name, StringComparison.OrdinalIgnoreCase));
                     if (!string.IsNullOrEmpty(blNameToCopy))
                     {
                        blNamesCopy.Add(blNameToCopy, btr.Id);
                        continue;
                     }                     

                    BlockSectionAbstract blSec = null;
                     if (btr.Name.StartsWith(Settings.Default.BlockPanelSectionVerticalPrefixName, StringComparison.OrdinalIgnoreCase))
                     {
                        blSec = new BlockSectionVertical(btr.Name, service);
                     }
                     else if (btr.Name.StartsWith(Settings.Default.BlockPanelSectionHorizontalPrefixName, StringComparison.OrdinalIgnoreCase))
                     {
                        blSec = new BlockSectionHorizontal(btr.Name, service);
                     }

                     if (blSec != null)
                     {
                        var resParse = blSec.ParseBlName();
                        if (resParse.Success)
                        {
                           blSecToCopy.Add(idBtr, blSec);
                           //Определение ассоциативных штриховок и объектов с которыми они связаны
                           blSec.getHatchAssociateIds(btr);                           
                        }
                        else
                        {
                           Inspector.AddError($"Не определены параметры блока сечения в файле шаблона блоков. {btr.Name}. {resParse.Error}",
                              icon: System.Drawing.SystemIcons.Error);
                        }
                     }
                  }
               }
            }
            if (blSecToCopy.Count > 0)
            {
               using (ObjectIdCollection ids = new ObjectIdCollection(blSecToCopy.Keys.ToArray()))
               {
                  foreach (var item in blNamesCopy.Values)
                  {
                     ids.Add(item);
                  }

                  using (IdMapping map = new IdMapping())
                  {
                     service.Db.WblockCloneObjects(ids, service.Db.BlockTableId, map, DuplicateRecordCloning.Replace, false);
                     foreach (var item in blSecToCopy)
                     {
                        item.Value.IdBtr = map[item.Key].Value;
                        if (item.Value._hatchsAssociatedIdsDictInTemplate != null)
                        {
                           item.Value.setHatchIdsMapping(map);
                           //item.Value.ReplaceAssociateHatch();
                        }
                     }
                     foreach (var name in blNames)
                     {
                        ObjectId idBl;
                        if (blNamesCopy.TryGetValue(name, out idBl))
                        {
                           blNamesCopy[name] = map[idBl].Value;
                        }
                     }
                  }
               }              
            }
            else
            {
               Inspector.AddError("Не найдены блоки сечений панелей в файле шаблона блоков АКР. " +
                  $"Файл шаблона {fileBlocksTemplate}. Префикс блоков {Settings.Default.BlockPanelSectionVerticalPrefixName} " +
                  $"и {Settings.Default.BlockPanelSectionHorizontalPrefixName}", icon: System.Drawing.SystemIcons.Error);
            }
         }
         return blSecToCopy.Values.ToList();         
      }
开发者ID:vildar82,项目名称:PanelColorAlbum,代码行数:98,代码来源:BlockSectionAbstract.cs

示例15: TestDynBlSec

        public void TestDynBlSec()
        {
            string testFile = @"c:\temp\test\АКР\Base\Tests\TestDynBlSec.dwg";

             using (var db = new Database(false, true))
             {
            db.ReadDwgFile(testFile, FileOpenMode.OpenForReadAndAllShare, false, "");
            db.CloseInput(true);
            using (AcadLib.WorkingDatabaseSwitcher dbSwitcher = new AcadLib.WorkingDatabaseSwitcher(db))
            {
               ObjectId idBtrPanel;
               ObjectId idBtrMs;

               using (var t = db.TransactionManager.StartTransaction())
               {
                  BlockTableRecord ms;
                  BlockTableRecord btrPanel;
                  ObjectId idBtrSec;
                  BlockTableRecord btrDim;

                  using (var bt = db.BlockTableId.GetObject(OpenMode.ForWrite) as BlockTable)
                  {
                     ms = bt[BlockTableRecord.ModelSpace].GetObject(OpenMode.ForWrite) as BlockTableRecord;
                     idBtrMs = ms.Id;
                     idBtrSec = bt["Test"];

                     btrPanel = new BlockTableRecord();
                     btrPanel.Name = "Panel";
                     idBtrPanel = bt.Add(btrPanel);
                     t.AddNewlyCreatedDBObject(btrPanel, true);

                     btrDim = new BlockTableRecord();
                     btrDim.Name = "Dim";
                     bt.Add(btrDim);
                     t.AddNewlyCreatedDBObject(btrDim, true);
                  }

                  BlockReference blRefDim = new BlockReference(Point3d.Origin, btrDim.Id);
                  btrPanel.AppendEntity(blRefDim);
                  t.AddNewlyCreatedDBObject(blRefDim, true);

                  BlockReference blRef = new BlockReference(Point3d.Origin, idBtrSec);
                  btrDim.AppendEntity(blRef);
                  t.AddNewlyCreatedDBObject(blRef, true);
                  setDynParam(blRef);

                  t.Commit();
               }
               using (var t = db.TransactionManager.StartTransaction())
               {
                  var ms = idBtrMs.GetObject(OpenMode.ForWrite) as BlockTableRecord;
                  BlockReference blRefPanel = new BlockReference(Point3d.Origin, idBtrPanel);
                  ms.AppendEntity(blRefPanel);
                  t.AddNewlyCreatedDBObject(blRefPanel, true);

                  t.Commit();
               }
            }
            string saveFile = @"c:\temp\test\АКР\Base\Tests\TestDynBlSec-TestSaved.dwg";
            db.SaveAs(saveFile, DwgVersion.Current);
             }
        }
开发者ID:vildar82,项目名称:PanelColorAlbum,代码行数:62,代码来源:TestDynBlockSec.cs


注:本文中的Database.CloseInput方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。