Ошибка eWrongDataBase

Автор Тема: Ошибка eWrongDataBase  (Прочитано 11529 раз)

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

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Ошибка eWrongDataBase
« : 10-11-2016, 19:21:12 »
В цикле добавляю примитивы в базу данных из массива.
Для сокращения вопроса даю не полный код.
Надеюсь для понимания проблемы этого шаблона
кода будет достаточно.

Код - vb.net [Выбрать]
  1. Dim arr() as Entity ' массив примитивов
  2. ...
  3. Dim tr as Transaction ...
  4. Using tr
  5. Dim btr as BlockTableRecord ...
  6. ...
  7. For i as iteger =0 to arr.Length - 1
  8. try
  9.    dim id as ObjectID =  btr.AppendEntity(arr(i))
  10.    tr.addNewlyCreatedDBObjectt(arr(i), true)
  11. Catch ex as Exception
  12. '  тут дает ошибку eWrongDataBase
  13. End try
  14.    ' tr.Commit ???
  15. Next
  16.    ' tr.Commit ???
  17. End Using

Вопросы: 
1) Что не так с базой?
2) Где правильнее делать tr.commit в теле цикла for..Next или в конце блока Using?





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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Ошибка eWrongDataBase
« Ответ #1 : 10-11-2016, 19:25:22 »
Для сокращения вопроса даю не полный код.
Зря.
Надеюсь для понимания проблемы этого шаблона
кода будет достаточно.
Нет.
Откуда берутся примитивы, которые ты добавляешь?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: Ошибка eWrongDataBase
« Ответ #2 : 10-11-2016, 19:28:05 »
не хватает tr.AddNewlyCreatedDBObject(ent, true);
2) Где правильнее делать tr.commit в теле цикла for..Next или в конце блока Using?
в конце блока Using конечно-же

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Re: Ошибка eWrongDataBase
« Ответ #3 : 10-11-2016, 19:28:51 »
Откуда берутся примитивы, которые ты добавляешь?
Примитивы я создаю динамическим выделением памяти в других подпрограммах

к примеру так
arr(i) = new line(...)

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Re: Ошибка eWrongDataBase
« Ответ #4 : 10-11-2016, 19:29:52 »
в конце блока Using конечно-же
Ну вообщем-то у меня и было сделано  в конце блока Using,
т.к. по каждой итерации мне показалось будет не правильно.

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Re: Ошибка eWrongDataBase
« Ответ #5 : 10-11-2016, 19:32:05 »
Когда генерирую массив arr
все типы элементов прокатывают, только для типа элемента MLeader такая ошибка (использую acad 2012)
Значит что-то не так делаю в подпрограммах где создаю выноски

Можно как-то проверить элемент arr(i) MLeader
 что с ним что-то не так и почему его база не хочет принимать?

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: Ошибка eWrongDataBase
« Ответ #6 : 10-11-2016, 19:37:40 »
не хватает tr.AddNewlyCreatedDBObject(ent, true);

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Re: Ошибка eWrongDataBase
« Ответ #7 : 10-11-2016, 19:39:46 »
не хватает tr.AddNewlyCreatedDBObject(ent, true);
В полной версии кода это строка есть.
Я позднее добавил эту строку в вопрос.
Думал она не важна, а потом проверил без нее вообще фатальная ошибка.


Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Re: Ошибка eWrongDataBase
« Ответ #8 : 10-11-2016, 19:42:41 »
Все же позднее положу полный код функции и подпрограмму создания
объекта MLeader, а то так действительно не разобраться.


Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: Ошибка eWrongDataBase
« Ответ #9 : 10-11-2016, 19:42:58 »
Возможно не хватает этого:
MLeader leader = new MLeader();
leader.SetDatabaseDefaults();
но без кода - никуда))

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Ошибка eWrongDataBase
« Ответ #10 : 10-11-2016, 19:45:20 »
все типы элементов прокатывают, только для типа элемента MLeader такая ошибка (использую acad 2012)
Ну например добавляешь не в текущую базу. Или в нём есть какие-то ссылки на посторонние базы.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Ошибка eWrongDataBase
« Ответ #11 : 10-11-2016, 19:59:27 »
Возможно не хватает этого:
MLeader leader = new MLeader();
leader.SetDatabaseDefaults();
но без кода - никуда))
Скорее даже вот такого:
Код - C# [Выбрать]
  1. leader.SetDatabaseDefaults(db);
где db - база, в которую будет добавляться MLeader.
Кстати, а стиль MLeader ты используешь из какой базы?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Re: Ошибка eWrongDataBase
« Ответ #12 : 10-11-2016, 20:00:26 »
MLeader leader = new MLeader();
leader.SetDatabaseDefaults();

Эти строки есть
Мультивыноска это же составной объект

у меня так написано

Код - vb.net [Выбрать]
  1. Public function CreateMLeader(...) as MLeader
  2. dim Leader = New MLeader
  3. dim mt = New Mtext
  4. ...
  5. Leader.Mtext = mt
  6. Leader.AddLeaderLine(...)
  7. ...
  8. Return Leader
  9.  
  10. End function
  11.  
  12.  
  13. arr(i) = CreateMLeader(...)


Может нужно соблюдать очередность добавления
сначала
Leader в базу
затем leader.MText
или  наоборот

или достаточно как у меня написано просто добавить только элемент arr(i)

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Re: Ошибка eWrongDataBase
« Ответ #13 : 10-11-2016, 20:04:04 »
leader.SetDatabaseDefaults(db);
Блин а вот такой строки у меня нет
У меня просто без db
leader.SetDatabaseDefaults()

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Ошибка eWrongDataBase
« Ответ #14 : 10-11-2016, 20:07:49 »
Блин а вот такой строки у меня нет
У меня просто без db
leader.SetDatabaseDefaults()
Ты добавляешь в текущую базу?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение