Русский
English
Главная
RastrWin
Программа
Последние изменения
Часто задаваемые вопросы
Аннотация
Лицензирование и защита от копирования
Права Windows для пользователя RastrWin
Курсы
Компонентная архитектура
Интерфейс
Инструкция по установке
Документация, видео, презентации
Свидетельство о регистрации
RastrKZ
RastrMDP
RastrOS
ZamerSeti
Архив
Bars-Lincor
Расчетная модель
Система моделирования
Последние изменения
Программа
Инструкция пользователя
Инсталляция
RUStab
Загрузка
Последние изменения
Поддержка
Поддержка
Форум
Техподдержка
Персональная
Макро студия
Макро студия
Автоматизация
Работа с SQL
Оценка параметров ЛЭП и ТР
Эффективность размыкания сети
Анализ напряжений в Excel
Автоматизация с "AutoIt"
Создание графа сети из режима
Передача графики в SVG
Вариантные расчеты
Импортозамещение
О нас
О компании
Фотогалерея
Пользователи
Отчеты об использовании своего имущества
Реквизиты
Поддержка
Форум
Техподдержка
Персональная
Авторизация
Запомнить меня на этом компьютере
Забыли свой пароль?
Регистрация
Поиск по сайту
Подписка
Новости Bars- Lincor
Новости RastrWin
Общие новости
Новости RUStab
Изменение параметров
Hits
67418220
9570
Hosts
3608872
1909
Visitors
53570775
9245
90
Главная
/
Поддержка
/
Форумы
/
Макро
Форум «Макро»
Версия для печати
Список форумов
Новые темы
Список тем
Поиск по форумам
Помощь
Войти
Регистрация
Тема: «
Расширение функционала
» в форуме:
Макро
Просмотров: 10942
Михаил Реутов
Постоянный посетитель
Всего сообщений:
224
Дата регистрации:
21.11.2007
Создано:
01.11.2010 12:19:14
Приветствую.
Если в ваших расчетных моделях системы шин одного класса напряжения представлены не одним узлом (разделены на две части) и ветви соединены с данными узлами с учетом фиксации, то ниже приведенный скрипт, наверное, будет полезен.
Отключение/включение узла с учетом фиксации присоединений:
Код
Dim xmlParser, node, n, n_1, n_2, nodes, node_1,vetv,node_2, ss, x, arr, pos
Set xmlParser = CreateObject("MSXML2.DOMD
ocument")
xmlParser.async = False
xmlParser.load "C:\Temp\ficsa.xml"
Set node = Rastr.Tables("node")
Set vetv = Rastr.Tables("vetv")
n = Replace(node.Cols("ny").Z
(aRow), "ny=", "")
Set nodes = xmlParser.selectNodes("/m
ain/ss/node[@key='" & n & "']")
If nodes.length = 1 Then
Set ss = nodes(0).parentNode
For Each x In ss.childNodes
If x.getAttribute("key") = n Then
Set node_1 = x
n_1 = CLng(node_1.getAttribute(
"key"))
Else
Set node_2 = x
n_2 = CLng(node_2.getAttribute(
"key"))
End If
Next
If node.Cols("sta").Z(aRow) = 0 Then 'узел включен
node.Cols("sta").Z(aRow) = 1
For Each x In node_1.childNodes
arr = Split(x.getAttribute("key
"),"-")
vetv.SetSel "ip=" & Cstr(arr(0)) & "&iq=" & Cstr(arr(1)) & "&np=" & Cstr(arr(2))
pos = vetv.FindNextSel(-1)
If CLng(arr(0)) = n_1 Then vetv.Cols("ip").Z(pos) = n_2
If CLng(arr(1)) = n_1 Then vetv.Cols("iq").Z(pos) = n_2
Next
vetv.SetSel "ip=" & Cstr(n_1) & "&iq=" & Cstr(n_2)
pos = vetv.FindNextSel(-1)
if pos<>-1 then vetv.Cols("sta").Z(pos) = 1
vetv.SetSel "ip=" & Cstr(n_2) & "&iq=" & Cstr(n_1)
pos = vetv.FindNextSel(-1)
if pos<>-1 then vetv.Cols("sta").Z(pos) = 1
Else 'узел отключен
node.Cols("sta").Z(aRow) = 0
For Each x In node_1.childNodes
arr = Split(x.getAttribute("key
"),"-")
If CLng(arr(0)) = n_1 Then
vetv.SetSel "ip=" & Cstr(n_2) & "&iq=" & Cstr(arr(1)) & "&np=" & Cstr(arr(2))
pos = vetv.FindNextSel(-1)
vetv.Cols("ip").Z(pos) = n_1
End If
If CLng(arr(1)) = n_1 Then
vetv.SetSel "ip=" & Cstr(arr(0)) & "&iq=" & Cstr(n_2) & "&np=" & Cstr(arr(2))
pos = vetv.FindNextSel(-1)
vetv.Cols("iq").Z(pos) = n_1
End If
Next
vetv.SetSel "ip=" & Cstr(n_1) & "&iq=" & Cstr(n_2)
pos = vetv.FindNextSel(-1)
if pos<>-1 then vetv.Cols("sta").Z(pos) = 0
vetv.SetSel "ip=" & Cstr(n_2) & "&iq=" & Cstr(n_1)
pos = vetv.FindNextSel(-1)
if pos<>-1 then vetv.Cols("sta").Z(pos) = 0
End If
Else
MsgBox "!!!"
End If
XML-файл (в данном случае ficsa.xml) имеет следующий вид:
Код
<?xml version="1.0" encoding="windows-1251"?>
<main>
<ss>
<node key="7">
<vetv key="7-9-0"/>
<vetv key="7-12-1"/>
<vetv key="7-12-3"/>
<vetv key="5-7-1"/>
<vetv key="7-43-1"/>
</node>
<node key="8">
<vetv key="6-8-2"/>
<vetv key="8-13-2"/>
<vetv key="8-44-2"/>
</node>
</ss>
<ss>
<node key="5">
<vetv key="1-5-3"/>
<vetv key="5-7-1"/>
<vetv key="5-11-0"/>
<vetv key="5-36-0"/>
</node>
<node key="6">
<vetv key="2-6-4"/>
<vetv key="6-8-2"/>
<vetv key="6-21-0"/>
</node>
</ss>
</main>
В XML-файле описывается два узла и ветви, зафиксированные на них.
Макрос работает медленно и с графикой нет решений - перерисовка после перефиксации только вручную.
Времени пока нет на доработку и усовершенствование данного макроса...
Профиль
Наверх
Михаил Реутов
Постоянный посетитель
Всего сообщений:
224
Дата регистрации:
21.11.2007
Создано:
01.11.2010 12:23:43
Да, забыл.
Данный макрос записывается в файл *.rbs и копируется в папку C:\\Program Files\\RastrWin\\contextm
acro. Далее "привязываем" в контекстные макросы на графику к узлам и называем например "Откл/вкл с фиксацией".
Профиль
Наверх
Евгений Машалов
Администратор
Всего сообщений:
1059
Дата регистрации:
23.04.2007
Создано:
01.11.2010 23:37:18
Круто. Спасибо. Может быть это в Макростудию поместить ? Не возражаете ?
Профиль
Наверх
Михаил Реутов
Постоянный посетитель
Всего сообщений:
224
Дата регистрации:
21.11.2007
Создано:
02.11.2010 08:47:55
Цитата
Евгений Машалов пишет:
Круто. Спасибо. Может быть это в Макростудию поместить ? Не возражаете ?
Не возражаю, но данный макрос буду дорабатывать: необходимо повысить "скорость" выполнения и сделать автоматическую перерисовку графики. Предлагаю поместить в Макростудию следующую редакцию.
Срузу же вопрос по теме.
После выполнения данного макроса Графика автоматически перерисовывается ("коряво") и экран центрируется в другом месте (где-то по середине всей Графики) отличном от позиции узла, над которым вызывался данный макрос.
Как отключить позиционирование экрана? или задать координаты? необходимо чтобы после выполнения данного макроса изображение "не улетало куда попало, а оставалось на месте".
После изменения топологии сети происходит автоматическая перерисовка графики. Удаленные элементы на Графике исчезают (но данные в Графике о них остаются), а новые, добавленные элементы отображаются на Графике (с парамерами отображения по умолчанию). Визуально отключить перерисоку
Rastr.LockEvent=True
?
Профиль
Наверх
Андрей Крутенёв
Гость
Создано:
19.11.2010 11:01:22
время на посмотреть-на-работу-скри
пта отсутствует, поэтому не могли бы Вы подробней описать принцип действия сего чуда?
из представленного описания работы я ничего не понял, а листинг копать недосуг
Наверх
Михаил Реутов
Постоянный посетитель
Всего сообщений:
224
Дата регистрации:
21.11.2007
Создано:
19.11.2010 18:27:46
Цитата
Андрей Крутенёв пишет:
время на посмотреть-на-работу-скри
пта отсутствует, поэтому не могли бы Вы подробней описать принцип действия сего чуда?
из представленного описания работы я ничего не понял, а листинг копать недосуг
Для начала назначение XML-файла. В этом файле описываются пара узлов и ветви, зафиксированные за ними. Узел
<ss>
(типа система шин) включает в себя только два дочерних узла
<node>
(типа 1 и 2 СШ). Узел
<node>
имеет атрибут
key
- это номер узла. Узел
<node>
имеет дочерние узлы
<vetv>
- это зафиксированные за СШ присоединения. Узел
<vetv>
имеют атрибут
key
- номера начала, конца и параллельности ветви через "черточку".
Макрос в соответствии с XML-файлом будет отключать (или включать) узел. При этом ветви зафиксированные за ним будут изменять ?привязку? к узлам.
Например.
Два узла
ny=1
и
ny=2
(1СШ и 2СШ ), оба включены (
sta = 0
) и ветви
ip1&iq=2&np=0
- секционный выключатель
ip1&iq=3&np=0
? присоединение ?1 к 1СШ
ip1&iq=4&np=0
? присоединение ?2 к 1СШ
ip2&iq=5&np=0
? присоединение ?3 к 2СШ
ip2&iq=6&np=0
? присоединение ?4 к 2СШ
XML-файл следующий
Код
<?xml version="1.0" encoding="windows-1251"?>
?
<main>
<ss>
<node key="1">
<vetv key="1-3-0"/>
<vetv key="1-4-0"/>
</node>
<node key="2">
<vetv key="2-5-0"/>
<vetv key="2-6-0"/>
</node>
</ss>
</main>
После работы макроса над узлом
ny=1
будет слудющее:
Узел
ny=1
будет отключен (
sta = 1
),
ny=2
останется включенным (
sta = 0
)
ip1&iq=2&np=0
- секционный выключатель будет отключен (
sta = 1
)
Ветви изменят ?привязку? к 2СШ
ip2&iq=3&np=0
? присоединение ?1 к 2СШ
ip2&iq=4&np=0
? присоединение ?2 к 2СШ
ip2&iq=5&np=0
? присоединение ?3 к 2СШ
ip2&iq=6&np=0
? присоединение ?4 к 2СШ
Если бы узел
ny=1
был отключен то макрос бы выполнил обратные действия.
Профиль
Наверх
Андрей Крутенёв
Гость
Создано:
22.11.2010 14:49:06
Хм, а для чего это нужно?
Практической ценности не узрел что-то...
Наверх
Михаил Реутов
Постоянный посетитель
Всего сообщений:
224
Дата регистрации:
21.11.2007
Создано:
22.11.2010 16:30:40
Цитата
Андрей Крутенёв пишет:
Хм, а для чего это нужно?
Из первого сообщения: "Если в ваших расчетных моделях системы шин одного класса напряжения представлены не одним узлом (разделены на две части) и ветви соединены с данными узлами с учетом фиксации, то ниже приведенный скрипт, наверное, будет полезен. Отключение/включение узла с учетом фиксации присоединений".
Цитата
Андрей Крутенёв пишет:
Практической ценности не узрел что-то
Возможно. Смотря какая расчетная модель у Вас: если СШ одного класса представлены одним узлом, то макрос не применим к данным узлам.
Профиль
Наверх
Андрей Крутенёв
Гость
Создано:
24.11.2010 19:51:53
Нет, у нас есть шины, представленные двумя узлами расчётной модели, и фиксация линий на них, скажем, жёсткая.
Если я отключаю узел, то стандартно отключаются все ветви, подключённые к данному узлу.
Если я хочу включить узел с ветвями, подключёнными к нему я использую контекстный макрос.
Внимание вопрос: какова цель, зачем перекоммутировать ветви на другой узел?
П.С.: в представленном контексте фраза "Отключение/включение узла с учетом фиксации присоединений" не несёт никакой смысловой нагрузки.
Наверх
Михаил Реутов
Постоянный посетитель
Всего сообщений:
224
Дата регистрации:
21.11.2007
Создано:
24.11.2010 23:47:28
Цитата
какова цель, зачем перекоммутировать ветви на другой узел?
Как правило вывод в ремонт одной СШ сопровождается переводом всех присоединений на оставшуюся в работе СШ.
Цитата
П.С.: в представленном контексте фраза "Отключение/включение узла с учетом фиксации присоединений" не несёт никакой смысловой нагрузки.
Это некое короткое наименование, которое отображается в контекстном меню. Согласен, что "бредятина". Вы в праве назвать хоть как.
Профиль
Наверх
Олег Ишмяков
Заглянувший
Всего сообщений:
9
Дата регистрации:
12.07.2008
Создано:
25.11.2010 12:19:00
Если все присоединения переводятся на остающуюся в работе СШ с нарушением фиксации, то может просто в Растре включить ШСВ ??
на расчеты это не повлияет. Только на отображение.
Профиль
Наверх
Андрей Крутенёв
Гость
Создано:
25.11.2010 14:57:43
Вот и я о том же.
Зачем отключать ШСВ в модели и перефиксировать присоединения, если можно просто ничего не делать и оставить ШСВ включённым?
Наверх
Читают тему
гостей:
1
, пользователей:
0
, из них скрытых:
0
Список форумов
Новые темы
Список тем
Поиск по форумам
Помощь
Войти
Регистрация
Программный комплекс «RastrWin»
© «RastrWin», 1988-2019