Все знают, что где-то в недрах Rastrwin есть готовый макрос по перенумерации узлов. Находится он по умолчанию в меню Расчеты — Выполнить — Коррекция — Перенумерация узлов по списку. Что он делает? Пользователь указывает текстовый файл, где каждая строка представляет из себя следующий шаблон: существующий_номер_узла = новый_номер_узлы (лишние пробелы не страшны). Но большая часть проблем начинается после использования макроса, и связаны они с тем, что после переименования узлов в одном файле rg2 все связанные с ним файлы (например, графика grf) остаются со старыми номерами. Разберемся в этой статье, как можно избежать проблем и узнаем о некоторых полезных вещах в Rastrwin.
Описание работы макроса приведено в руководстве пользователя в пункте 3.4 Расчеты. При первом взгляде на текст макроса не сразу становится понятно, каким образом переименовываются номера узлов в таблице ветвей. Ведь многие много раз изменяли номера узлов вручную, добавляли новые, и всегда редактирование/добавление сводилось к правке двух таблиц: Узлов и Ветвей. Но в макросе нет ни одного похожего обращения к таблице ветви. Интерес вызывает строчка rastr.renumWP = false.
В руководстве пользователя написано следующее
RenumWP – включает (True) или выключает (False) режим изменения ссылок при изменении основного параметра (см. Ссылки).
Понятие ссылки можно продемонстрировать на таблице ветвей
На картинке видно, что столбцы ip и iq ссылаются на таблицу узлов, и когда пользователь манипулирует с номером ip, то автоматически получает доступ к узлу node[ip], и даже может получать данные типа ip.uhom = node[ip].uhom
К сожалению, это мало что нам дало в плане понимания. Можем пройтись по работе макроса: читается строка файла, в таблице узлов ищется старый узел, и заменяется на новый узел, дальше ищется следующий узел и так далее. То есть номера узлов в таблице ветвей изменяются автоматически. Мы знаем, что в таблице ветвей узел начала и конца ссылается на таблицу узлов, поэтому можно сделать вывод, что при использовании макроса перенумерация идет везде, где есть ссылка на таблицу узлов.
Приведем эксперимент. Есть загруженный файл режима rg2 и графики grf:
В редакторе макроса напишем следующее
И выполним макрос до тех пор, пока renumWP не станет true, что в нашем случае означает включение режима изменения ссылок (автообновление)
И теперь попробуем изменить номер узла 1 на 10 в таблице узлов, и увидим следующее
Автоматически номера узлов в таблице ветви, в таблицах графики изменились сами. Вывод получается следующий: при использовании макроса перенумерации узлов нужно подгрузить все файлы, чтобы в них тоже узлы изменились.
При чем использовать отдельно макрос с включением и отключением автообновления ссылок тоже оказывается удобно, так как это экономит кучу времени (не надо лезть в другие таблицы и менять номера узлов).
Выводы
- При использовании стандартного макроса Перенумерация узлов по списку необходимо загрузить все файлы, которые завязаны на номера узлов (например, rg2 и grf)
- Можно отдельно использовать режим автообновления ссылок, при котором при изменении значений в любой таблице, все остальные ссылки, ссылающиеся на столбец будут автоматически изменены. Узнать о таких ссылках можно в настройках Файлы — Настройки программы — Параметры — Данные — Таблицы
- Макрос для переименования любого численного столбца (целого) в любой таблице (списке таблиц).
Скачать макрос включения/отключения автообновления ссылок renumWP.rbs
Скачать RenumColInTab.rbs