Rastr3: О перенумерации узлов

Все знают, что где-то в недрах 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 в таблице узлов, и увидим следующее

Результат изменения номера узла

Автоматически номера узлов в таблице ветви, в таблицах графики изменились сами. Вывод получается следующий: при использовании макроса перенумерации узлов нужно подгрузить все файлы, чтобы в них тоже узлы изменились.

При чем использовать отдельно макрос с включением и отключением автообновления ссылок тоже оказывается удобно, так как это экономит кучу времени (не надо лезть в другие таблицы и менять номера узлов).

Выводы

  1. При использовании стандартного макроса Перенумерация узлов по списку необходимо загрузить все файлы, которые завязаны на номера узлов (например, rg2 и grf)
  2. Можно отдельно использовать режим автообновления ссылок, при котором при изменении значений в любой таблице, все остальные ссылки, ссылающиеся на столбец будут автоматически изменены. Узнать о таких ссылках можно в настройках Файлы — Настройки программы — Параметры — Данные — Таблицы
  3. Скачать макрос включения/отключения автообновления ссылок renumWP.rbs

  4. Макрос для переименования любого численного столбца (целого) в любой таблице (списке таблиц).
  5. Скачать RenumColInTab.rbs

Оцените статью
В коробке инженера
Добавить комментарий

Нажимая на кнопку "Добавить комментарий", я даю согласие на обработку персональных данных и принимаю политику конфиденциальности

Введите буквы на русском языке : *

Reload Image