Русский
English
Главная
RastrWin
Программа
Последние изменения
Часто задаваемые вопросы
Аннотация
Лицензирование и защита от копирования
Права Windows для пользователя RastrWin
Курсы
Компонентная архитектура
Интерфейс
Инструкция по установке
Документация, видео, презентации
Свидетельство о регистрации
RastrKZ
RastrMDP
RastrOS
ZamerSeti
Архив
Bars-Lincor
Расчетная модель
Система моделирования
Последние изменения
Программа
Инструкция пользователя
Инсталляция
RUStab
Загрузка
Последние изменения
Поддержка
Поддержка
Форум
Техподдержка
Персональная
Макро студия
Макро студия
Автоматизация
Работа с SQL
Оценка параметров ЛЭП и ТР
Эффективность размыкания сети
Анализ напряжений в Excel
Автоматизация с "AutoIt"
Создание графа сети из режима
Передача графики в SVG
Вариантные расчеты
Импортозамещение
О нас
О компании
Фотогалерея
Пользователи
Отчеты об использовании своего имущества
Реквизиты
Поддержка
Форум
Техподдержка
Персональная
Авторизация
Запомнить меня на этом компьютере
Забыли свой пароль?
Регистрация
Поиск по сайту
Подписка
Новости Bars- Lincor
Новости RastrWin
Общие новости
Новости RUStab
Изменение параметров
Hits
67419368
10718
Hosts
3609232
2269
Visitors
53571845
10315
99
Главная
/
Поддержка
/
Форумы
/
Макро
Форум «Макро»
Версия для печати
Список форумов
Новые темы
Список тем
Поиск по форумам
Помощь
Войти
Регистрация
Тема: «
Получение данных из таблицы "Районы"
, при значении rastr.LockEvent=True » в форуме:
Макро
Просмотров: 6880
Евгений
Посетитель
Всего сообщений:
14
Дата регистрации:
01.06.2017
Создано:
10.10.2018 05:55:54
Здравствуйте, нужна помощь, не могу разобраться.
Всегда при написании макросов отключаю обновление таблиц и протокола для ускорения расчетов:
Код
rastr.LockEvent=True
rastr.LogEnable=False
в конце макроса включаю обратно
Код
rastr.LogEnable=True
rastr.LockEvent=False
Заметил, что при заблокированных событиях не удается получать значения потребления из таблицы Районы или Территории.
Например:
Код
rastr.LockEvent=True
rastr.LogEnable=False
node=12345
rayon=111
For i=1 to 10
rastr.printp " Шаг ? " & i
rastr.printp "Нагрузка в узле: " & rastr.calc("val","node","
pn","ny="&node)
rastr.printp "Потребление: "& rastr.calc("val","area","
pn","na="&rayon)
GrCor "node","pn","ny="&node,"p
n+10"
Next
rastr.LogEnable=True
rastr.LockEvent=False
Sub GrCor(tabl,param,viborka,
formula)
Set ptabl=Rastr.Tables(tabl)
Set pparam=ptabl.Cols(param)
ptabl.SetSel(viborka)
pparam.Calc(formula)
End Sub
- выводится актуальная нагрузка в узле на каждом шаге, а потребление не обновляется.
Можно как-то обновлять и получать значение потребление? Без блокировки событий расчеты с вариантыми расчетами займут вечность. Спасибо заранее.
Профиль
Наверх
Евгений
Посетитель
Всего сообщений:
14
Дата регистрации:
01.06.2017
Создано:
11.10.2018 11:31:41
Неужели нет никакого решения? Пожалуйста, прошу помочь разобраться.
Профиль
Наверх
Евгений Машалов
Администратор
Всего сообщений:
1059
Дата регистрации:
23.04.2007
Создано:
11.10.2018 16:02:16
Здравствуйте. А если сравнить две вечности: при расчете с открытыми и закрытыми окнами с таблицами и графиками ?
Профиль
Наверх
Евгений
Посетитель
Всего сообщений:
14
Дата регистрации:
01.06.2017
Создано:
12.10.2018 04:52:56
Цитата
Здравствуйте. А если сравнить две вечности: при расчете с открытыми и закрытыми окнами с таблицами и графиками ?
Протестировал на отдельном интересующем меня модуле. Цель модуля - отключить 2 элемента (по сути только одно сочетание) и в случае, если режим не сходится - подобрать такое потребление, при котором режим сойдется. Для задания потребления использовал стандартный (но немного облегченный) макрос корректировки потребления района.
Окна и графики открыты: 28 секунд
Окна и графики закрыты: 23 секунды
При включенной блокировке обновления результат (хоть и с некорректными данными) - менее 1 секунды.
Поэтому, если иного способа нет - придется изобретать "сборку" цифры потребления, используя только "Узлы" и "Ветви"))
Профиль
Наверх
Евгений Машалов
Администратор
Всего сообщений:
1059
Дата регистрации:
23.04.2007
Создано:
12.10.2018 18:52:03
Можно и поизобретать. Но вот этот скрипт не подтверждает ни мысль о том, что локинг меняет результаты ни мысль об ускорении за счет локинга. Исполнено с двумя открытыми таблицами: районы и узлы+ветви.
И уж если Вы взыщите ускорения, избавьтесь от calc - он использует выборку, которую Ваш вариант исполняет для каждого значения.
Код
CmdPath = Rastr.SendCommandMain(COM
M_CMDPATH,"","",0)
Rastr.Load RG_REPL, CmdPath & "test-rastrcx195.rg2", CmdPath & "Shablonрежим.rg2"
Rastr.Tables("com_regim")
.Cols("neb_p").Z(0) = 1E-3
Sub CollectAreas(RoundsCount)
StartTime = Timer
Set spAreas = Rastr.Tables("area")
Set spAreaPg = spAreas.Cols("pg")
Set spAreaPn = spAreas.Cols("pn")
Set spNodePn = Rastr.Tables("node").Cols
("pn")
InitialNodePn = spNodePn.Z(1)
TotalPn = 0
TotalPg = 0
for i = 0 to RoundsCount
spNodePn.Z(1) = InitialNodePn + i
rastr.rgm("p")
for j = 0 to spAreas.Size - 1
TotalPn = TotalPn + spAreaPn.Z(j)
TotalPg = TotalPg + spAreaPg.Z(j)
next
next
spNodePn.Z(1) = InitialNodePn
Rastr.PrintP "Elapsed " & Timer - StartTime & " TotalPn " & Round(TotalPn) & " TotalPg " & Round(TotalPg)
End Sub
Rounds = 100
rastr.LockEvent=True
rastr.LogEnable=False
CollectAreas(Rounds)
rastr.LockEvent=False
rastr.LogEnable=True
CollectAreas(Rounds)
Нам бы в техподдержку Вас определить. Сообщите, кто Вы и откуда, раз уж из СО.
Профиль
Наверх
Евгений
Посетитель
Всего сообщений:
14
Дата регистрации:
01.06.2017
Создано:
15.10.2018 11:49:35
Цитата
Но вот этот скрипт не подтверждает ни мысль о том, что локинг меняет результаты ни мысль об ускорении за счет локинга. Исполнено с двумя открытыми таблицами: районы и узлы+ветви.
Ну вот Ваши результаты мне нравятся. А вот что получилось у меня с Вашим кодом:
Цитата
Elapsed 2,746094 TotalPn 726647 TotalPg 756516
Elapsed 55,48828 TotalPn 731546 TotalPg 761823
Цитата
Нам бы в техподдержку Вас определить. Сообщите, кто Вы и откуда, раз уж из СО.
Сообщу конечно, но можно как-то по почте с Вами связаться или иным способом? Личное сообщение не получается Вам отправить.
Профиль
Наверх
Евгений Машалов
Администратор
Всего сообщений:
1059
Дата регистрации:
23.04.2007
Создано:
15.10.2018 14:12:20
Иным способом и нужно связываться, если Вы надеетесь получить помощь не только от участников форума, но и от разработчиков, тем более в рамках действующего договора на техподдержку:
http://www.rastrwin.ru/su
pport/ticket_list.php
. Там желательно указать в профиле организацию и настоящее имя, ибо это пойдет в отчет СО.
Возвращаясь к теме замедления и искажения: нужно узнать что у Вас за версия, и если есть время на эксперименты попробовать эту
бету
. Я свой пример делал на билде из разработки. Может он и улучшился с той версии, которая у Вас.
Профиль
Наверх
Евгений
Посетитель
Всего сообщений:
14
Дата регистрации:
01.06.2017
Создано:
23.10.2018 11:56:28
Спасибо за ответ, пока не было времени попробовать. У меня версия 1.79.0.1380, попробую версию по Вашей ссылке.
Профиль
Наверх
Читают тему
гостей:
1
, пользователей:
0
, из них скрытых:
0
Список форумов
Новые темы
Список тем
Поиск по форумам
Помощь
Войти
Регистрация
Программный комплекс «RastrWin»
© «RastrWin», 1988-2019