Почему возникают исключения у ViewTableRecord.CategoryName и .LayerState?

Автор Тема: Почему возникают исключения у ViewTableRecord.CategoryName и .LayerState?  (Прочитано 4888 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн pavka_97Автор темы

  • ADN OPEN
  • ***
  • Сообщений: 150
  • Карма: 3
Добрый день. Возникает исключения eNotDatabase на строках 28 и 29 (.CategoryName и .LayerState).В чем может быть причина?
Код - C# [Выбрать]
  1. using Autodesk.AutoCAD.ApplicationServices;
  2. using Autodesk.AutoCAD.DatabaseServices;
  3. using Autodesk.AutoCAD.EditorInput;
  4. using Autodesk.AutoCAD.Runtime;
  5. namespace ClassLibrary30
  6. {
  7.     public class Class1
  8.     {
  9.         [CommandMethod("TESTVIEW")]
  10.         public static void TESTVIEW()
  11.         {
  12.             Document acDoc = Application.DocumentManager.MdiActiveDocument;
  13.             Database acCurDb = acDoc.Database;
  14.             Editor ed = acDoc.Editor;
  15.             LayerStateManager lm = acCurDb.LayerStateManager;
  16.             ViewTableRecord acViewTblRec = new ViewTableRecord();
  17.             string name;
  18.             PromptStringOptions pStrOpts = new PromptStringOptions("\nEnter your name: ");
  19.             pStrOpts.AllowSpaces = true;
  20.             PromptResult pStrRes = acDoc.Editor.GetString(pStrOpts);
  21.             if (pStrRes.Status != PromptStatus.OK) return;
  22.             name = pStrRes.StringResult;
  23.             string lstname = lm.LastRestoredLayerState;
  24.             using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction())
  25.             {
  26.                 ViewTable acViewTbl = acTrans.GetObject(acCurDb.ViewTableId, OpenMode.ForWrite) as ViewTable;
  27.                 acViewTblRec.Name = name;
  28.                 acViewTblRec.CategoryName = "test";
  29.                 //acViewTblRec.LayerState = lstname;
  30.                 acViewTbl.Add(acViewTblRec);
  31.                 acTrans.AddNewlyCreatedDBObject(acViewTblRec, true);
  32.                 acTrans.Commit();
  33.             }
  34.         }
  35.     }
  36. }

Отмечено как Решение pavka_97 18-11-2018, 16:23:11

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Добрый день. Возникает исключения eNotDatabase на строках 28 и 29 (.CategoryName и .LayerState).В чем может быть причина?
Причина в том, что ViewTableRecord еще не добавлена в базу данных. Поэтому сначала нужно вызвать:
Код - C# [Выбрать]
  1.  acViewTbl.Add(acViewTblRec);
а потом уже:
Код - C# [Выбрать]
  1.  acViewTblRec.CategoryName = "test";
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение