На главнуюКонтактыКарта сайта
В коробке инженера
В коробке инженера
Обзоры программ, интересных блогов и программирование
Заметки о Rastrwin, Matlab
  • Twitter Colee

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

Автор: colee | Рубрика: Программы » Rastrwin
Суббота, 19 сентября 2015 г.
Теги: , , , Просмотров: 1795

Все знают, что где-то в недрах 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

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


Поделиться с друзьями:
twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru digg.com blogger.com livejournal.ru google.com yandex.ru del.icio.us
Оставьте комментарий!

Используйте нормальные имена

Ваш E-mail не публикуется, используется для обратной связи и для выбора аватара с сайта gravatar.com

Публикуется вместе с комментарием

усмешка LOL сыр улыбка подмигнуть ухмылка глаза в сторону в тупике удивление большое удивление малинка пустое лицо сдвинутая бровь Оо гррр ох ох неудачник смущенный больной Тау хммм бешенный злой клевый поцелуй шок крутой недовольный

Запрещается оскорблять окружающих и использовать ненормативную лексику

Вы должны включить JavaScript, чтобы оставить сообщение