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

ADN Club => AutoCAD .NET API => Тема начата: Александр Пекшев aka Modis от 02-06-2017, 19:01:03

Название: Регенерация прервана - что это значит и почему происходит?
Отправлено: Александр Пекшев aka Modis от 02-06-2017, 19:01:03
Ну в общем-то почти весь вопрос в названии. При работе функции, а точнее при работе Jig, в командную строку при каждом движении мышкой пишется "Регенерация прервана".
Что это значит и почему происходит? Для начала хочу узнать в теории
Название: Re: Регенерация прервана - что это значит и почему происходит?
Отправлено: Александр Ривилис от 02-06-2017, 19:41:15
Ну в общем-то почти весь вопрос в названии. При работе функции, а точнее при работе Jig, в командную строку при каждом движении мышкой пишется "Регенерация прервана".
Что это значит и почему происходит? Для начала хочу узнать в теории
В теории при очередном передвижении мышки AutoCAD хочет перерисовать примитив, а в это время еще не закончена предыдущая регенерация чертежа. Ты случаем в этом Jig не используешь Editor.Regen или что-то подобное???
Название: Re: Регенерация прервана - что это значит и почему происходит?
Отправлено: Александр Пекшев aka Modis от 02-06-2017, 19:57:24
Ну в общем-то почти весь вопрос в названии. При работе функции, а точнее при работе Jig, в командную строку при каждом движении мышкой пишется "Регенерация прервана".
Что это значит и почему происходит? Для начала хочу узнать в теории
В теории при очередном передвижении мышки AutoCAD хочет перерисовать примитив, а в это время еще не закончена предыдущая регенерация чертежа. Ты случаем в этом Jig не используешь Editor.Regen или что-то подобное???
Я везде перепроверил и нигде не использую Editor.Regen. Этот метод у меня стоял только по завершению команды и тот пока убрал. Был еще CommandFlags.Redraw - это конечно не оно, но тоже убрал на всякий случай.
При работе Jig происходит перерисовка блока путем удаления и повторного добавления содержимого. По сути, я вручную регенерацию нигде не задаю. Значит регенерация происходит при каких-то определенных условиях? При transaction.Commit() происходит?
Название: Re: Регенерация прервана - что это значит и почему происходит?
Отправлено: Александр Ривилис от 02-06-2017, 20:02:34
Значит просто не успевает перерисоваться новое содержимое блока. Кстати, в разных версиях AutoCAD это происходит по-разному.
Название: Re: Регенерация прервана - что это значит и почему происходит?
Отправлено: Александр Пекшев aka Modis от 02-06-2017, 21:00:08
Значит просто не успевает перерисоваться новое содержимое блока.
Вот, кстати, про "не успевает" я подумывал. Причем забавный факт - в блоке один примитив. Полилиния. Вот если полилиния состоит только из линейных сегментов, то такого не происходит. А если вариант с дуговыми - проскакивает это сообщение. Можно конечно отключить CMDECHO, но мне интересно разобраться. Я могу как-то повлиять на этот процесс? Может это быть из-за того, что в момент перерисовки происходит открытие и закрытие двух транзакций?
Кстати, в разных версиях AutoCAD это происходит по-разному.
З.Ы. Я пока все тестирую только на 2010. Вероятна возможность, что в более поздних версиях этого не будет?
Название: Re: Регенерация прервана - что это значит и почему происходит?
Отправлено: Александр Ривилис от 02-06-2017, 21:40:29
Можно конечно отключить CMDECHO,
Не поможет.
Я могу как-то повлиять на этот процесс?
Не уверен. Как минимум попробуй увеличить шаг (расстояние между предыдущей и новой точкой, после которой происходит обновление).
Может это быть из-за того, что в момент перерисовки происходит открытие и закрытие двух транзакций?
Может. Нужно проверять.

З.Ы. Я пока все тестирую только на 2010. Вероятна возможность, что в более поздних версиях этого не будет?
Да. И бросай тестировать в этой версии если тебе нужна помощь. У меня этой версии нет, так что проверить не смогу. Да и ADN DevHelp тебе помогать не будет.