コード例 #1
0
ファイル: GetTiaProgramItem.cs プロジェクト: hothing/tia-ps
 private void SelectInUserGroups(string path, PlcBlockUserGroupComposition ugc)
 {
     WriteDebug($"[SelectInUserGroups] for {path}");
     if (filter != null)
     {
         var npath = path + pathDelimeter;
         foreach (var ug in ugc)
         {
             if (ug != null)
             {
                 var opath = npath + ug.Name;
                 WriteDebug($"[SelectInUserGroups] select from the {opath}");
                 {
                     if (!contentIsGroup)
                     {
                         WriteBlockList(opath, ug.Blocks);
                     }
                     else
                     {
                         WriteObject(ug);
                         //WriteGroupList(opath, ug);
                     }
                 }
                 if (recursive)
                 {
                     SelectInUserGroups(opath, ug.Groups);
                 }
             }
         }
     }
     else
     {
         TraverseUserGroups(ugc);
     }
 }
コード例 #2
0
ファイル: Form1.cs プロジェクト: RonniePonnyTail/TiaOpeness
 private static void CreateBlockGroup(PlcSoftware plcsoftware, string nameofgroup)
 //Creates a block group
 {
     PlcBlockSystemGroup          systemGroup      = plcsoftware.BlockGroup;
     PlcBlockUserGroupComposition groupComposition = systemGroup.Groups;
     PlcBlockUserGroup            myCreatedGroup   = groupComposition.Create(nameofgroup);
 }
コード例 #3
0
 private void IterBlockFolder(PlcBlockUserGroupComposition folders)
 {
     foreach (PlcBlockUserGroup folder in folders)
     {
         HandleBlockFolder(folder);
     }
 }
コード例 #4
0
ファイル: TIATree.cs プロジェクト: fluffware/TIAEKtool
 private static void iterBlockFolder(NodeHandler handler, PlcBlockUserGroupComposition folders)
 {
     foreach (PlcBlockUserGroup folder in folders)
     {
         HandleBlockFolder(handler, folder);
     }
 }
コード例 #5
0
ファイル: GetTiaProgramItem.cs プロジェクト: hothing/tia-ps
 private void TraverseUserGroups(PlcBlockUserGroupComposition ugc)
 {
     WriteDebug("[TraverseUserGroups]");
     foreach (var ug in ugc)
     {
         if (ug != null)
         {
             if (!contentIsGroup)
             {
                 WriteBlockList(ug.Blocks);
             }
             else
             {
                 WriteObject(ug);
             }
             if (recursive)
             {
                 TraverseUserGroups(ug.Groups);
             }
         }
     }
 }
コード例 #6
0
ファイル: GetTiaProgramItem.cs プロジェクト: hothing/tia-ps
        private PlcBlockGroup GetUserGroup(string path, PlcBlockUserGroupComposition root)
        {
            PlcBlockUserGroupComposition ugc = root;
            PlcBlockGroup grp = null;

            char[]   sep     = { pathDelimeter };
            string[] ugnames = path.Split(sep, StringSplitOptions.RemoveEmptyEntries);
            WriteDebug($"[GetUserGroup] path is {path}");
            if (ugnames.Length > 0)
            {
                WriteDebug($"[GetUserGroup] root group is {ugnames[0]}");
                foreach (String gn in ugnames)
                {
                    if (ugc != null)
                    {
                        WriteDebug($"[GetUserGroup] the group {gn} is finding");
                        grp = ugc.Find(gn);
                        if (grp != null)
                        {
                            ugc = grp.Groups;
                            WriteDebug($"[GetUserGroup] the group {gn} is found");
                        }
                        else
                        {
                            WriteDebug($"[GetUserGroup] the group {gn} is not found");
                            break;
                        }
                    }
                    else
                    {
                        grp = null;
                        break;
                    }
                }
                return(grp);
            }
            return(null);
        }
コード例 #7
0
ファイル: GetTiaProgramItem.cs プロジェクト: hothing/tia-ps
        protected override void ProcessRecord()
        {
            base.ProcessRecord();
            var           root_path = pathDelimeter.ToString();
            bool          useRoot   = true;
            PlcBlockGroup ug;
            // NB: path is absolute, any level or object can be selected
            PlcBlockComposition          ublocks = blocks;
            PlcBlockUserGroupComposition ugc     = groups;

            if ((path == null) || (path.Equals(pathDelimeter.ToString())))
            {
                path = "";
            }
            else
            {
                useRoot = false;
            }
            if (useRoot)
            {
                if (!contentIsGroup)
                {
                    WriteBlockList(path, ublocks);
                    if (recursive)
                    {
                        SelectInUserGroups(path, ugc);
                    }
                }
                else
                {
                    SelectInUserGroups(path, ugc);
                }
            }
            else
            {
                ug = GetUserGroup(path, ugc);
                if (ug != null)
                {
                    if (!contentIsGroup)
                    {
                        WriteBlockList(path, ug.Blocks);
                        if (recursive)
                        {
                            SelectInUserGroups(path, ug.Groups);
                        }
                    }
                    else
                    {
                        SelectInUserGroups(path, ug.Groups);
                    }
                }
                else
                {
                    WriteDebug($"The path '{path}' is not found in the user program");
                }
            }
            if (sysGroups != null)
            {
                if (useRoot)
                {
                    path = "";
                    SelectInSysGroups(path, sysGroups);
                }
                else
                {
                    PlcSystemBlockGroup sg;
                    sg = GetSysGroup(path, sysGroups);
                    if (sg != null)
                    {
                        if (!contentIsGroup)
                        {
                            WriteBlockList(path, sg.Blocks);
                            if (recursive)
                            {
                                SelectInSysGroups(path, sg.Groups);
                            }
                        }
                        else
                        {
                            SelectInSysGroups(path, sg.Groups);
                        }
                    }
                    else
                    {
                        WriteDebug($"The path '{path}' is not found in the system resources");
                    }
                }
            }
        }