Сообщество программистов Autodesk в СНГ

ADN Club => AutoCAD .NET API => Тема начата: sash-2007 от 26-07-2017, 09:37:27

Название: вставить примитив в базу данных
Отправлено: sash-2007 от 26-07-2017, 09:37:27
Приветствую :)
пример кода:

Код - C# [Выбрать]
  1.                     Database db = new Database(false, false);
  2.                     db.DxfIn(pathDXF, null);
  3.  
  4.                     using (Transaction Tr = db.TransactionManager.StartTransaction())
  5.                     {
  6.  
  7.                         BlockTable BT = Tr.GetObject(db.BlockTableId, OpenMode.ForWrite) as BlockTable;
  8.                         BlockTableRecord BTR = Tr.GetObject(BT[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;
  9.  
  10.                         DBText text = new DBText();
  11.                         text.SetDatabaseDefaults();
  12.                         text.TextString = "TEXT";
  13.                         text.Height = 20;
  14.                         BTR.AppendEntity(text);                                  // вылетает исключение eWrongDatabase
  15.                         Tr.AddNewlyCreatedDBObject(text, true);
  16.  
  17.                         Tr.Commit();
  18.                     }
  19.              
  20.                  
  21.                     db.DxfOut(pathDXF+"123", 16, false);
  22.                     db.Dispose();
  23.  

Вопрос: можно ли добавить примитив в базу чертежа таким образом и сохранить?
Название: Re: вставить примитив в базу данных
Отправлено: Александр Ривилис от 26-07-2017, 09:50:25
Замени
Код - C# [Выбрать]
  1. BlockTable BT = Tr.GetObject(db.BlockTableId, OpenMode.ForWrite) as BlockTable;
на
Код - C# [Выбрать]
  1. BlockTable BT = Tr.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
и
Код - C# [Выбрать]
  1. text.SetDatabaseDefaults();
на
Код - C# [Выбрать]
  1. text.SetDatabaseDefaults(db);
Название: Re: вставить примитив в базу данных
Отправлено: sash-2007 от 26-07-2017, 11:17:28
Работает :)
Сенкю, вэри мач :)