예제 #1
0
        public void Copy(Database dbDest, string sourceFile, TemplateItemEnum copyItems)
        {
            using (var dbSrc = new Database(false, false))
            {
                dbSrc.ReadDwgFile(sourceFile, FileOpenMode.OpenForReadAndAllShare, false, string.Empty);
                dbSrc.CloseInput(true);
                using (var t = dbSrc.TransactionManager.StartTransaction())
                {
                    // Слои
                    try
                    {
                        if (copyItems.HasFlag(TemplateItemEnum.LayerFilters))
                        {
                            ImportLayerFilter.ImportLayerFilterTree(dbSrc, dbDest);
                        }
                        else if (copyItems.HasFlag(TemplateItemEnum.Layers))
                        {
                            ImportLayerFilter.CopyLayers(dbSrc, dbDest);
                        }
                        if (copyItems.HasFlag(TemplateItemEnum.LayerStates))
                        {
                            ImportLayerState.ImportLayerStates(dbDest, dbSrc);
                        }
                    }
                    catch (Exception ex)
                    {
                        Logger.Log.Error(ex, "CopyFromTemplate слои");
                        $"Ошибка копирования слоев - {ex.Message}".WriteToCommandLine();
                    }

                    if (copyItems.HasFlag(TemplateItemEnum.TextStyles))
                    {
                        CopySymbolTableItems(dbSrc.TextStyleTableId, dbDest.TextStyleTableId, "Текстовые стили");
                    }
                    if (copyItems.HasFlag(TemplateItemEnum.DimStyles))
                    {
                        CopySymbolTableItems(dbSrc.DimStyleTableId, dbDest.DimStyleTableId, "Размерные стили");
                    }
                    if (copyItems.HasFlag(TemplateItemEnum.TableStyles))
                    {
                        CopyDbDictItems(dbSrc.TableStyleDictionaryId, dbDest.TableStyleDictionaryId, "Табличные стили");
                    }
                    if (copyItems.HasFlag(TemplateItemEnum.MLeaderStyles))
                    {
                        CopyDbDictItems(dbSrc.MLeaderStyleDictionaryId, dbDest.MLeaderStyleDictionaryId, "Стили мультивыноски");
                    }
                    t.Commit();
                }
            }
        }
예제 #2
0
 public static void ImportLayerFilterAndState([NotNull] this Database dbDest, string sourceFile)
 {
     try
     {
         using (var dbSrc = new Database(false, false))
         {
             dbSrc.ReadDwgFile(sourceFile, FileOpenMode.OpenForReadAndAllShare, false, string.Empty);
             dbSrc.CloseInput(true);
             using (var t = dbSrc.TransactionManager.StartTransaction())
             {
                 ImportLayerFilterTree(dbSrc, dbDest);
                 ImportLayerState.ImportLayerStates(dbDest, dbSrc);
                 t.Commit();
             }
         }
     }
     catch (Exception ex)
     {
         Inspector.AddError($"Ошибка имполра фильтра слоев из из файла '{sourceFile}' - {ex.Message}");
     }
 }