private static void HandleTypeFolder(NodeHandler handler, PlcTypeUserGroup folder) { NodeHandler child_handler = handler.Enter(folder, folder.Name); if (child_handler != null) { iterType(child_handler, folder.Types); iterTypeFolder(child_handler, folder.Groups); } handler.Exit(folder); }
private static void EnumeratePlcDataTypeGroup(PlcTypeUserGroup typeGroup, PlcSoftware plcsoftware, string path) { if (typeGroup.Name.EndsWith("Test")) { return; } path += typeGroup.Name + "\\"; Directory.CreateDirectory(path); foreach (var plcType in typeGroup.Types) { plcsoftware.ExternalSourceGroup.GenerateSource(new List <PlcType> { plcType }, new FileInfo(path + plcType.Name + ".udt")); } foreach (PlcTypeUserGroup typeSubGroup in typeGroup.Groups) { EnumeratePlcDataTypeGroup(typeSubGroup, plcsoftware, path); } }
protected override void DoWork() { lock (portal) { try { Stack <string> group_names = new Stack <string>(); IEngineeringObject obj = fromType.Parent; while (obj is PlcTypeUserGroup) { group_names.Push(((PlcTypeGroup)obj).Name); obj = obj.Parent; } PlcTypeGroup group = toPlc.TypeGroup; foreach (string group_name in group_names) { PlcTypeUserGroup child = group.Groups.Find(group_name); if (child != null) { group = child; } else { group = group.Groups.Create(group_name); } } FileInfo file = TempFile.File("copy_type_", "xml"); fromType.Export(file, ExportOptions.None); group.Types.Import(file, overwrite ? ImportOptions.Override : ImportOptions.None); } catch (Exception ex) { LogMessage(MessageLog.Severity.Error, "Failed to copy from " + fromType.Name + " to " + toPlc.Name + ":\n" + ex.Message); return; } } }
internal void LoadSubPlcDatatypeFoldersViaOpennessDlls(TIAOpennessPlcDatatypeFolder parent, PlcTypeUserGroup p) { foreach (var e in p.Groups) { var fld = new TIAOpennessPlcDatatypeFolder(this, parent.ControllerFolder, e.Types) { //TiaPortalItem = e, Name = e.Name, Parent = parent, }; parent.SubItems.Add(fld); LoadSubPlcDatatypeFoldersViaOpennessDlls(fld, e); } }