Ошибка при использовании WblockCloneObjects

Автор Тема: Ошибка при использовании WblockCloneObjects  (Прочитано 23124 раз)

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

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Ошибка при использовании WblockCloneObjects
« Ответ #15 : 09-02-2016, 13:31:24 »
не обращайте внимание, она для пользователей.
Я и не обращаю внимания, но она мне мешает увидеть трассировку и код ошибки.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • **
  • Сообщений: 52
  • Карма: 0
Re: Ошибка при использовании WblockCloneObjects
« Ответ #16 : 09-02-2016, 13:37:56 »
Более полная ошибка выглядит так:
"************** Текст исключения **************
System.AccessViolationException: Попытка чтения или записи в защищенную память. Это часто свидетельствует о том, что другая память повреждена.
   в Autodesk.AutoCAD.DatabaseServices.Transaction.DeleteUnmanagedObject()
   в Autodesk.AutoCAD.Runtime.DisposableWrapper.!DisposableWrapper()
   в Autodesk.AutoCAD.Runtime.DisposableWrapper.Dispose(Boolean )
   в Autodesk.AutoCAD.Runtime.DisposableWrapper.Dispose()
   в Sb.Plugin.InsertBlockFromDataBaseJig.BlockJigCmd(SpecifficationDataObject BlockData, Form _Form)
   в Sb.Plugin.InsertBlkRefFromDataBase.ButtonInsertBlock_Click(Object sender, EventArgs e)
   в System.Windows.Forms.Control.OnClick(EventArgs e)
   в System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   в System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   в System.Windows.Forms.Control.WndProc(Message& m)
   в System.Windows.Forms.ButtonBase.WndProc(Message& m)
   в System.Windows.Forms.Button.WndProc(Message& m)
   в System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   в System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)"

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Ошибка при использовании WblockCloneObjects
« Ответ #17 : 09-02-2016, 13:41:56 »
1) Ты ни слова не сказал, что вызываешь это код из формы. Причем неясно это форма модальная или нет. В любом случае документ следует блокировать.
2) Ошибка возникает при освобождении транзакции.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • **
  • Сообщений: 52
  • Карма: 0
Re: Ошибка при использовании WblockCloneObjects
« Ответ #18 : 09-02-2016, 13:45:59 »
Извиняюсь форма модальная (WinForm, вызываю с помощью ShowModalDialog).
Еще entityJig используется, но до него не успевает доходить. Хотя опять же у меня на компе все работает без ошибок.

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

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: Ошибка при использовании WblockCloneObjects
« Ответ #19 : 09-02-2016, 13:47:49 »
в Sb.Plugin.InsertBlockFromDataBaseJig.BlockJigCmd(SpecifficationDataObject BlockData, Form _Form)
   в Sb.Plugin.InsertBlkRefFromDataBase.ButtonInsertBlock_Click(Object sender, EventArgs e)
Еще entityJig используется, но до него не успевает доходить
Эммммм... А ошибка вроде гласит об обратном)

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

  • ADN OPEN
  • **
  • Сообщений: 52
  • Карма: 0
Re: Ошибка при использовании WblockCloneObjects
« Ответ #20 : 09-02-2016, 13:50:02 »
Александр Пекшев aka Modis,
Класс с jig наз-ся JigBlock. До его вызова не доходит спотыкается при копировании блока. Т.е. если блок копируется успешно вот тогда JigBlock запускается, если нет то выходим из процедуры.

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

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: Ошибка при использовании WblockCloneObjects
« Ответ #21 : 09-02-2016, 13:51:35 »
Volody1983, покажите нам Sb.Plugin.InsertBlockFromDataBaseJig.BlockJigCmd(SpecifficationDataObject BlockData, Form _Form) и Sb.Plugin.InsertBlkRefFromDataBase.ButtonInsertBlock_Click(Object sender, EventArgs e)
Возможно ошибка даже в другом методе происходит

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Ошибка при использовании WblockCloneObjects
« Ответ #22 : 09-02-2016, 14:01:24 »
Хотя опять же у меня на компе все работает без ошибок.
1) Чертеж один и тот же на обоих PC?
2) Одна и таже версия AutoCAD (и какая?) и Windows?
3) Одна и таже версия .NET?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • **
  • Сообщений: 52
  • Карма: 0
Re: Ошибка при использовании WblockCloneObjects
« Ответ #23 : 09-02-2016, 14:06:07 »
Александр Пекшев aka Modis,
Там ничего нет. В ButtonInsertBlock_Click запускается BlockJigCmd. А BlockJigCmd хлопается на копировании блока.

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

  • ADN OPEN
  • **
  • Сообщений: 52
  • Карма: 0
Re: Ошибка при использовании WblockCloneObjects
« Ответ #24 : 09-02-2016, 14:06:36 »
Александр Ривилис,
1) Да.
2) Да. Autocad MEP 2011 64, Win 7 64
3) Как проверить версию .net на другом компе?

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Ошибка при использовании WblockCloneObjects
« Ответ #25 : 09-02-2016, 14:17:33 »
Повторюсь:
1) Поменяй SourceDb.WblockCloneObjects на ActiveDb.WblockCloneObjects
2) Поэкспериментируй с заменой DuplicateRecordCloning.Ignore на DuplicateRecordCloning.Replace
3) Поставь блокировку doc перед WblockCloneObjects
4) убери TRY/CATCH, чтобы увидеть системную ошибку. (сделано)
Если это не поможет - делай простейшую тестовую команду на основе этого: http://adndevblog.typepad.com/autocad/2012/05/insert-block-from-a-different-dwg-using-net-.html
Явно укажи в ней имя файла и имя блока. Проверь её работоспособность. Не забывай передавать dll-файл в конфигурации Release.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • **
  • Сообщений: 52
  • Карма: 0
Re: Ошибка при использовании WblockCloneObjects
« Ответ #26 : 09-02-2016, 14:34:03 »
Александр Ривилис,
Александр, а можно для понимания пояснить 1), 2). Т.к. опять же на моем компе работает и так и так.
Вообщем выяснилось следующее убрал файл с блоками с виртуального диска (который создается командой subst) на локальный и все заработало как часы.

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Ошибка при использовании WblockCloneObjects
« Ответ #27 : 09-02-2016, 14:39:22 »
Александр, а можно для понимания пояснить 1), 2). Т.к. опять же на моем компе работает и так и так.
1) Этот метод следует использовать с той базой, над которой будет выполняться модификация
2) DuplicateRecordCloning.Replace заменяет одноимённые записи (например, имя блока, имя слоя, имя типа линии и т.д.)
Вообщем выяснилось следующее убрал файл с блоками с виртуального диска на локальный и все заработало как часы.
Возможно это проблема виртуального диска, хотя...
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • **
  • Сообщений: 52
  • Карма: 0
Re: Ошибка при использовании WblockCloneObjects
« Ответ #28 : 09-02-2016, 14:43:46 »
Все-таки где-то сидит косяк. После вставки сотни блоков вылезла такая же ошибка. Но похоже ошибка все-таки где-то ниже.

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Ошибка при использовании WblockCloneObjects
« Ответ #29 : 09-02-2016, 14:46:52 »
Возможно это побочный эффект того, что это не чистый AutoCAD, а MEP. Тоже бывает.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение