예제 #1
0
        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);
        }
예제 #2
0
        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);
            }
        }
예제 #3
0
 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;
         }
     }
 }
예제 #4
0
 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);
     }
 }