Дима сразу вырезает ячейки-прямоугольники размером [dx,dy], а ты сначала режешь строками, а потом их уже делишь на ячейки. Наверное разница в этом.
А по другому никак: иначе я буду получать неправильные результаты, что и происходит в ряде случаев с использованием кода Дима_. Ниже прилагается дополнительный чертёж с тестовыми регионами. Берём первый "Ш"-образный регион и вызываем команду NAREZ, указывая следующие параметры:
Command: NAREZ
Select objects: 1 found
Select objects:
РЁРёСЂРёРЅР° 135
Высота 20
Затраченное время: 00:00:00.0595703
nil
На выходе визуально всё вроде выглядит правильно, однако это не так: выделяем верхний левый кусок и видим, что выделилась вся "строка". Возможно для Дима_ такой результат является именно тем, что нужно, однако моим пользователям для каждого из нарезанных кусков нужно получать центр масс. Соответственно в данном случае будет показан центр масс, общий для трёх кусков, а это не то, что требовалось моим юзерам. Именно поэтому у меня в коде две итерации: сначала строки, затем колонки. Собственно эти нюансы я и показывал
здесь, выполняя различные логические операции над регионами.
UPD. Александр Наумович, собственно именно эту ситуацию мы и обсуждали с вами по скайпу 28 мая, в результате чего вы согласились, что обозначенная вами ранее оптимизация в данном случае не будет работать. Я как раз на примере буквы "Ш" и показывал вариант, который оптимизация не сможет корректно обработать.
P.S. Теперь мне понятно, за счёт чего код Дима_ работал быстрее, однако данный вариант решения мне не подойдёт.