Фатальная ошибка при работе DrawJig

Автор Тема: Фатальная ошибка при работе DrawJig  (Прочитано 21490 раз)

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

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

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: Фатальная ошибка при работе DrawJig
« Ответ #15 : 04-04-2016, 14:33:14 »
У тебя сразу после 1ого запуска команды ошибки или после 2-3 ого?
Сразу после первого и только в 2016 автокаде, и только в определенных файлах
Dispose тоже протестирую на всякий случай

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

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: Фатальная ошибка при работе DrawJig
« Ответ #16 : 05-04-2016, 21:31:40 »
Александр Ривилис, Вы прям волшебник зоркости! С ходу предложили несколько вариантов, включая тот, который помог!
Добавил перед jig tbl.SuppressRegenerateTable(true); и после соответственно tbl.SuppressRegenerateTable(false);  и все заработало!
Остальные замечания так-же учту и подправлю

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Фатальная ошибка при работе DrawJig
« Ответ #17 : 05-04-2016, 21:36:44 »
Добавил перед jig tbl.SuppressRegenerateTable(true); и после соответственно tbl.SuppressRegenerateTable(false);  и все заработало!
Догадываешься почему?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: Фатальная ошибка при работе DrawJig
« Ответ #18 : 05-04-2016, 21:41:57 »
Добавил перед jig tbl.SuppressRegenerateTable(true); и после соответственно tbl.SuppressRegenerateTable(false);  и все заработало!
Догадываешься почему?
Я про этот метод первый раз услышал, если честно) Но из простого перевода метода все понятно - подавление регенерации таблицы. Т.е. при jig не происходит ее постоянной перерисовки (это в моем случае). Думаю, что полезно этот метод включать перед всеми действиями с таблицой и отключать в конце работы функции, перед tr.Commit()

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Фатальная ошибка при работе DrawJig
« Ответ #19 : 05-04-2016, 22:19:59 »
Всё еще интереснее. Класс Table наследник класса BlockReference:

Изменения в таблице приводят к генерации новых BlockTableRecord, на которые таблица ссылается также, как и обычный BlockReference.
По какой-то причине изменение точки вставки таблицы в твоём случае приводит к генерации новой BlockTableRecord, которая она добавляется в базу данных, и на которую таблица ссылается. Возможно это особенность конкретной таблицы (например, со вставленными динамическими блоками). И это происходит многократно, десятки или даже сотни раз в секунду. Плюс вполне вероятно происходит утечка памяти...
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение