/// <summary> /// Сохранить Prg.lua как таблицу Lua /// </summary> /// <param name="prefix">Отступ</param> /// <returns>Возвращает файл в виде строки</returns> public static string Save(string prefix) { var attachedObjects = new Dictionary <int, string>(); deviceManager = DeviceManager.GetInstance(); techObjectManager = TechObjectManager.GetInstance(); var res = ""; res += "local prg =\n\t{\n"; res += SaveDevicesToPrgLua(prefix); res += SaveVariablesToPrgLua(prefix, out attachedObjects); res += "\t}\n"; if (attachedObjects.Count > 0) { res += SaveObjectsBindingToPrgLua(attachedObjects); } res += SaveObjectsInformationToPrgLua(prefix); res += SaveFunctionalityToPrgLua(); res += "return prg"; res = res.Replace("\t", " "); return(res); }
/// <summary> /// Приватный конструктор /// </summary> private TechObjectsImporter() { importedObjects = new Dictionary <int, ITreeViewItem>(); techObjectManager = TechObjectManager.GetInstance(); objectTree = new List <ITreeViewItem>(); InitLuaScripts(); }
/// <summary> /// Сохранить Prg.lua как таблицу Lua /// </summary> /// <param name="prefix">Отступ</param> /// <returns>Возвращает файл в виде строки</returns> public static string Save(string prefix) { var attachedObjects = new Dictionary <int, string>(); deviceManager = DeviceManager.GetInstance(); techObjectManager = TechObjectManager.GetInstance(); string res = GenerateRequireModules(); res += "\n"; res += "-- Основные объекты проекта " + "(объекты, описанные в Eplan).\n"; res += "local prg =\n\t{\n"; res += SaveDevicesToPrgLua(prefix); res += SaveVariablesToPrgLua(prefix, out attachedObjects); res += "\t}\n"; if (attachedObjects.Count > 0) { res += SaveObjectsBindingToPrgLua(attachedObjects); } res += SaveObjectsInformationToPrgLua(prefix); res += SaveFunctionalityToPrgLua(); res += "return prg"; res = res.Replace("\t", " "); return(res); }
/// <summary> /// Экспорт описания проекта в файл. /// </summary> /// <param name="path">Место сохранения</param> /// <param name="objectsNums">Список (номера) экспортируемых /// объектов</param> public void Export(string path, List <int> objectsNums) { string objectsDescription = ""; string objectsRestriction = ""; var techObjManager = TechObjectManager.GetInstance(); var objects = techObjManager.Objects; foreach (var obj in objects) { bool needExporting = objectsNums.Contains(obj.GlobalNumber); if (needExporting) { var exportingObject = obj.Clone( techObjManager.GetTechObjectN, obj.TechNumber, obj.GlobalNumber, obj.GlobalNumber); // Убираем привязку при экспорте. exportingObject.AttachedObjects.SetValue(""); // Обходим нулевое значение т.к объект ни находится ни в // каком списке объектов. string description = exportingObject.SaveAsLuaTable("\t\t"); description = description.Replace("[ 0 ]", $"[ {obj.GlobalNumber} ]"); string restriction = exportingObject .SaveRestrictionAsLua("\t"); restriction = restriction .Replace("[ 0 ]", $"[ {obj.GlobalNumber} ]"); objectsDescription += description; objectsRestriction += restriction; } else { objectsDescription += $"\t[ {obj.GlobalNumber} ] = {{0}},\n"; } } try { var fileWriter = new StreamWriter(path, false, Encoding.UTF8); WriteObjectsDescription(fileWriter, objectsDescription); fileWriter.WriteLine("\n"); WriteObjectsRestriction(fileWriter, objectsRestriction); fileWriter.Flush(); fileWriter.Close(); } catch { throw new Exception("Ошибка записи в файл при экспорте"); } }
/// <summary> /// Инициализация. /// </summary> public void Init() { this.editor = Editor.Editor.GetInstance(); this.techObjectManager = TechObjectManager.GetInstance(); Logs.Init(new LogFrm()); this.IOManager = IOManager.GetInstance(); DeviceManager.GetInstance(); this.projectConfiguration = ProjectConfiguration.GetInstance(); EProjectManager.GetInstance(); BaseTechObjectManager.GetInstance(); }
/// <summary> /// Импортировать объекты в редактор /// </summary> /// <param name="checkedItems">Выбранные на дереве объекты</param> public void Import(List <int> checkedItems) { ITreeViewItem techObjectsManager = TechObjectManager.GetInstance(); foreach (var num in checkedItems) { var importingItem = importedObjects[num] as TechObject .TechObject; var importedItem = techObjectsManager.InsertCopy(importingItem); importedItem.AddParent(techObjectsManager); } }
/// <summary> /// Инициализация. /// </summary> public void Init() { CheckLibsAndFiles(); editor = Editor.Editor.GetInstance(); techObjectManager = TechObjectManager.GetInstance(); Logs.Init(new LogFrm()); IOManager = IOManager.GetInstance(); DeviceManager.GetInstance(); projectConfiguration = ProjectConfiguration.GetInstance(); EProjectManager.GetInstance(); BaseTechObjectManager.GetInstance(); }
/// <summary> /// Получить корректные номера технологических объектов из /// входной строки /// </summary> /// <param name="value">Входная строка</param> /// <param name="selectedObjNum">Номер редактируемого объекта /// <returns></returns> public List <int> GetValidTechObjNums(string value, int selectedObjNum) { var numbers = new List <int>(); string[] numbersAsStringArray = value.Split(' ').ToArray(); List <int> allowedObjectsNums = AllowedObjects? .Select(x => (int)x).ToList(); foreach (var numAsString in numbersAsStringArray) { int.TryParse(numAsString, out int number); if (number <= 0) { continue; } TechObject obj = TechObjectManager.GetInstance() .GetTObject(number); if (obj.BaseTechObject == null) { return(new List <int>()); } var objValues = obj?.AttachedObjects.Value.Split(' ') .Where(x => int.TryParse(x, out _)) .Select(x => int.Parse(x)).ToList(); if (objValues?.Contains(selectedObjNum) == true) { continue; } bool correctBaseObject = allowedObjectsNums .Contains(obj.BaseTechObject.S88Level); if (correctBaseObject) { numbers.Add(number); } } numbers = numbers.Distinct().ToList(); return(numbers); }
public DeviceSynchronizer() { deviceReader = new DeviceReader(); techObjectManager = TechObjectManager.GetInstance(); }
private TechObjectsExporter() { techObjectManager = TechObjectManager.GetInstance(); }
private void InsertNewObject(string baseObjectLuaName) { ITechObjectManager techObjectManager = TechObjectManager .GetInstance(); techObjectManager.InsertBaseObject(baseObjectLuaName); }