public void ImportSheets(string dwgFile, string commonNamePart, ref double maxX)
{
// Открытие чертежа с импортируемыми листами
using (var importDb = new Database(false, true))
{
importDb.CloseInput(true);
importDb.ReadDwgFile(dwgFile, FileShare.ReadWrite, true, string.Empty);
using (var importTr = importDb.TransactionManager.StartTransaction())
{
// Копирование модели импортируемого чертежа в текущий со сдвигом в стартовую точку
_copyModelSpaceService.Copy(importDb, importTr, ref maxX, out var move, out var isEmptyModelSpace);
// Копирование импортируемых листов
using var layoutDic = (DBDictionary)importTr.GetObject(importDb.LayoutDictionaryId, OpenMode.ForRead);
foreach (var importLayoutItem in layoutDic)
{
using (var importLayout = (Layout)importTr.GetObject(importLayoutItem.Value, OpenMode.ForRead))
{
if (importLayout.ModelType)
continue;
using (var importLayoutBtr = (BlockTableRecord)importTr.GetObject(importLayout.BlockTableRecordId, OpenMode.ForRead))
{
var newLayoutName = Path.GetFileNameWithoutExtension(dwgFile);
if (!string.IsNullOrEmpty(commonNamePart))
newLayoutName = newLayoutName.Replace(commonNamePart, string.Empty);
if (string.IsNullOrEmpty(newLayoutName))
newLayoutName = Path.GetFileNameWithoutExtension(dwgFile);
_copyLayoutService.Copy(importLayout, importLayoutBtr, importTr, newLayoutName, move, isEmptyModelSpace);
break;
}
}
}
importTr.Commit();
}
}
}