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

ADN Club => VBA => Тема начата: Anatoly от 31-03-2021, 12:13:30

Название: Тормоза при обработке динамических блоков
Отправлено: Anatoly от 31-03-2021, 12:13:30
На поле чертежа есть много динамических блоков (больше 100) с 15 динамическими параметрами каждый.
При выполнении цикла по каждому блоку по изменению каждого параметра
Код - Visual Basic [Выбрать]
  1. dps = dblk.GetDynamicBlockProperties
  2. ...
  3. Set dynblprop = dps(j)
  4. dynblprop.Value = xx
начинает расти время на обработку.
Растет время выполнения выражения
Код - Visual Basic [Выбрать]
  1. dynblprop.Value = xx

Первые 50 блоков выполняются за 2мин, 100 за 7, 150 за 15, 200 за 27 и т.д.
Т.е. рост времени по экспоненте.
Есть ли какие-либо варианты?
Название: Re: Тормоза при обработке динамических блоков
Отправлено: Александр Ривилис от 31-03-2021, 13:10:29
Т.е. рост времени по экспоненте.
И по экспоненте растет количество блоков (Block - описаний блоков). Так что этого и следовало ожидать.
Название: Re: Тормоза при обработке динамических блоков
Отправлено: Anatoly от 31-03-2021, 14:27:22
Описание блока одно. Растет количество BlockReference.
Просто на одну и ту же операцию (изменение динамических параметров текущего вхождения блока),
в начале, когда их мало, тратится доли секунды, а потом доходит до минут (на один BlockReference).
Похоже у Autocad при работе с динамическими блоками что-то переполняется и начинаются тормоза.
Название: Re: Тормоза при обработке динамических блоков
Отправлено: Александр Ривилис от 31-03-2021, 14:37:20
Описание блока одно.
Это тебе кажется. Изменение какого-либо из динамических параметров динамического блока приводит к созданию нового (анонимного) описания блока.
Название: Re: Тормоза при обработке динамических блоков
Отправлено: Александр Ривилис от 31-03-2021, 14:56:18
Можешь проверить при помощи ARXDBG или MGDDBG: https://adn-cis.org/forum/index.php?topic=7274.0
Название: Re: Тормоза при обработке динамических блоков
Отправлено: Anatoly от 31-03-2021, 15:27:49
Спасибо, я так и думал, что не получиться ускорить.