Просмотр полной версии : Просмотр сообщения события с помощью скрипта C#
Здравствуйте. Пытаюсь перебрать все события в проекте и вытащить из них формулы и сообщения. С формулами проблем нет, предусмотрено специальное свойство Formula, а вот сообщения не могу понять как вытащить. Вот мой код:
public partial class ФБ : ScriptBase
{
const string FilePathName = "D:\\report.csv";
public override void DoAction()
{
using (var file = new StreamWriter(FilePathName, false, Encoding.GetEncoding("windows-1251")))
{
//перебор всех значений данного объекта
HostFB.TreeItemHlp.Project.ObjectTreeRootItem.Navi gateChilds(delegate(ITreeObjectHlp e)
{
if(e.TypeName == "Событие" || e.TypeName == "Расчет")
{
var action = e as ParserHlp;
if(action.Formula != null)
{
string frm = action.Formula.Replace("\n", "");
frm = frm.Replace("\r", "");
file.WriteLine(string.Format("{0};{1}", action.FullName, frm));
}
}
return true;
}, TreeItemMask.All, NavigateItemsFlags.CurrentComputer);
}
}
}
Может кто-нибудь знает как получить сообщение, заранее благодарен:)
SCADAMaster
17.03.2017, 09:06
Пример проставления связей и сообщений:
HostFB.TreeItemHlp.Parent.NavigateChilds(delegate( ITreeObjectHlp item)
{
var parser=(EventHlp)item;
var innerPin=parser.AddInput("НоваяСвязь");
var targetPin=item.ParentObject.GetPin("Значение 1");
innerPin.Connect(targetPin); //pout - выход с которым надо связать
innerPin.DesignType = typeof(double);
//innerPin.pi
parser.Formula="НоваяСвязь=0";
parser.Pattern="Новое сообщение";
parser.ApplyChange();
return true;
}, TreeItemMask.Event, 0);
Ничего себе, спасибо огромное!!! И как я не заметил, что у события не такой тип как у расчёта:confused:
А вы не знаете, можно ли что-то похожее сделать с ФБ "Обработка аналогового параметра", там есть префикс сообщений, можно ли его тоже изменить из скрипта?:)
SCADAMaster
18.03.2017, 08:18
Чтение:
item.Properties.GetProperty(CatID.General, (int)PropID.General.EventMessagePrefix, false, "")
Запись через метод SetProperty, а затем применить методом ApplyChanges
Все работает отлично, спасибо!
Я по той же схеме пытался получить доступ к полю "Сокращённое наименование" в настройках ФБ "Обработка аналогового параметра", перепробовал вроде все варианты PropID, но у меня ничего не вышло... Подскажите это можно как-нибудь сделать? И может вы посоветуете какую-нибудь инструкцию по всем этим классам и методам, а то в стандартной справке MasterSCADA маловато информации.
SCADAMaster
20.03.2017, 14:24
Пример в приложении
Спасибо, это как раз то что нужно!
У меня ещё такой вопрос. Есть мнемосхема с большим количеством элементов, основные из которых это Текст и Изображение ФБ, можно ли как-то через скрипт перебрать все элементы мнемосхемы, и просмотреть для каждого свойство Имя, для Текста также хотелось бы получить свойство Текст, а для Изображения ФБ - Наименование исполнительного механизма.
Заранее спасибо:)
SCADAMaster
21.03.2017, 08:33
В приложении пример скрипта, который производит замену текста в контролах "значеие" и "Кнопка".
В нем происходит обращение по ID, имя - свойство Name
Здравствуйте. Пытаюсь перебрать все события в проекте и вытащить из них формулы и сообщения. С формулами проблем нет, предусмотрено специальное свойство Formula, а вот сообщения не могу понять как вытащить. Вот мой код:
public partial class ФБ : ScriptBase
{
const string FilePathName = "D:\\report.csv";
public override void DoAction()
{
using (var file = new StreamWriter(FilePathName, false, Encoding.GetEncoding("windows-1251")))
{
//перебор всех значений данного объекта
HostFB.TreeItemHlp.Project.ObjectTreeRootItem.Navi gateChilds(delegate(ITreeObjectHlp e)
{
if(e.TypeName == "Событие" || e.TypeName == "Расчет")
{
var action = e as ParserHlp;
if(action.Formula != null)
{
string frm = action.Formula.Replace("\n", "");
frm = frm.Replace("\r", "");
file.WriteLine(string.Format("{0};{1}", action.FullName, frm));
}
}
return true;
}, TreeItemMask.All, NavigateItemsFlags.CurrentComputer);
}
}
}
Может кто-нибудь знает как получить сообщение, заранее благодарен:)
Можешь поделиться итоговым скриптом?
В приложении пример скрипта, который производит замену текста в контролах "значеие" и "Кнопка".
В нем происходит обращение по ID, имя - свойство Name
Спасибо! Все заработало как и хотел.
Можешь поделиться итоговым скриптом?
Получилось так:
using System;
using MasterSCADA.Script.FB;
using MasterSCADA.Hlp;
using FB;
using System.Linq;
using System.Windows.Forms;
using MasterSCADALib;
using System.IO;
using MasterSCADA.Documents;
using System.Collections.Generic;
using System.Text;
using MasterSCADA.Common;
using FB.FBAttributes;
using System.ComponentModel;
using InSAT.Library;
public partial class ФБ : ScriptBase
{
const string FilePathNameFormls = "D:\\formuls.csv"; // Файл для формул
const string FilePathNameEvnts = "D:\\events.csv"; // Файл для событий
public override void DoAction()
{
//Поиск События или Расчёта с заданными формулами
using (var file = new StreamWriter(FilePathNameFormls, false, Encoding.GetEncoding("windows-1251")))
{
//перебор всех значений данного объекта
HostFB.TreeItemHlp.Project.ObjectTreeRootItem.Navi gateChilds(delegate(ITreeObjectHlp e)
{
if(e.TypeName == "Событие" || e.TypeName == "Расчет")
{
var action = e as ParserHlp;
if(action.Formula != null && (true/*Ещё какие-то условия, смторя что вы ищите*/))
{
string frm = action.Formula.Replace("\n", "");
frm = frm.Replace("\r", "");
file.WriteLine(string.Format("{0};{1}", action.FullName, frm));
}
}
return true;
}, TreeItemMask.All, NavigateItemsFlags.CurrentComputer);
}
//Поиск события с заданным текстом сообщения
using (var file = new StreamWriter(FilePathNameEvnts, false, Encoding.GetEncoding("windows-1251")))
{
//перебор всех значений данного объекта
HostFB.TreeItemHlp.Project.ObjectTreeRootItem.Navi gateChilds(delegate(ITreeObjectHlp e)
{
if(e.TypeName == "Событие")
{
var action = e as EventHlp;
if(action.Pattern != null && (true/*Ещё какие-то условия, смторя что вы ищите*/))
{
string frm = action.Pattern.Replace("\n", "");
frm = frm.Replace("\r", "");
file.WriteLine(string.Format("{0};{1}", action.FullName, frm));
}
}
return true;
}, TreeItemMask.All, NavigateItemsFlags.CurrentComputer);
}
}
}
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot