Код C# для вставки блока или текста
Я пытаюсь написать программу на языке C#, которая вставит блок или текст в чертеж, не открывая приложение Autocad. Я в порядке, чтобы запустить приложение Autocad в фоновом режиме.
Что я уже пробовал:
На самом деле я получаю ошибку
Система.Исключении invalidprogramexception произошло
HResult= 0x8013153A Common Language Runtime обнаружила недопустимую программу.
Source=<не может оценить="" the="" exception="" source="">
StackTrace: в Autodesk.AutoCAD.DatabaseServices.Базы данных.get_TransactionManager()
Во время выполнения этого нижеприведенного фрагмента кода
Database sourceDb = новая база данных(false, true); //временная база данных для хранения данных для блока, который мы хотим импортировать
пробовать
{
sourceDb.ReadDwgFile(dwgPath, System.IO.FileShare.Read, true, ""); //считывание DWG в боковую базу данных
ObjectIdCollection blockIds = new ObjectIdCollection(); // создайте переменную для хранения списка идентификаторов блоков
Autodesk.AutoCAD.DatabaseServices.Вопросы ТМ = sourceDb.Вопросы; используя (сделки мыт = ТМ.Starttransaction тогда())
{
// Откройте таблицу блоков
BlockTable bt = (BlockTable)tm.Функция getobject(sourceDb.BlockTableId, Параметр Openmode.ForRead, false);
// Проверьте каждый блок в таблице блоков
foreach (ObjectId btrId в bt)
{
BlockTableRecord btr = (BlockTableRecord)tm.GetObject(btrId, OpenMode.ForRead, false);
// Только добавляйте именованные блоки & non-layout в список копирования
если (!btr.IsAnonymous & & amp; !БТР.IsLayout)
{
blockIds.Add(btrId);
}
БТР.Располагать();
}
}
// Копирование блоков из исходной базы данных в целевую
//IdMapping mapping = new IdMapping(); sourceDb.WblockCloneObjects(blockIds, _database.BlockTableId, mapping, DuplicateRecordCloning.Заменить, ложь); _editor.WriteMessage ("\nCopied " + blockIds.Рассчитывать.ToString() + "определения блоков из" + blockToImport + " в текущий чертеж.");
}