В созданной мной программе AutoCAD VBA программа ищет динамические блоки с определенным именем и извлекает некоторые динамические свойства - ширину и высоту.
Пока у меня есть список всех блоков и их свойств, но они не отсортированы - если блок имеет одинаковую ширину и высоту с другим, он просто перечисляет их по отдельности. Информация о блоке представлена в виде многомерного массива, например:
PANEL (j, 0) = Panel_ref
ПАНЕЛЬ (j, 1) = ширина
ПАНЕЛЬ (j, 2) = высота
(j - просто счетчик при циклическом переключении каждого блока в наборе выбора.)
Что я хотел бы сделать, так это уметь сортировать все эти блоки по группам (не по группам autocad) одинакового размера, поэтому, если, например, есть несколько блоков размером 595x455 (ширина х высота), они должны быть сгруппированы так что их число X (скажем, Panel_ref # 1) и не представлено в отдельности. Надеюсь, я достаточно ясен.
Итак, в принципе, это будет выглядеть так:
Ref | Ширина | Высота | Количество
1 | 600 | 800 | 3
2 | 700 | 900 | 1
3 | 650 | 1000 | 2
вместо ......
Ref | Ширина | Высота
1 | 600 | 800
2 | 600 | 800
3 | 600 | 800
4 | 700 | 900
5 | 650 | 1000
6 | 650 | 1000
... как сейчас. (извините, я не могу лучше отформатировать этот пост)
Каков наилучший способ сортировки этих данных? Я видел код сортировки массивов в Интернете, но только для не многомерных массивов.
Полагаю, мне нужно было бы циклически перемещаться по массиву, находить разные "размеры" (ширина и высота), хранить их где-то и сравнивать каждый блок с этими? Я думал о преобразовании ширины и высоты в строку («800 x 600»), сравнивая их таким образом, но я уверен, что это можно сделать в их числовом (двойном) формате.
При необходимости я могу опубликовать некоторый код, но подумал, что сейчас без него может быть проще.
Спасибо
Paul.