首页 > 编程语言 >C# AVEVA MARINE 二次开发 读取分段

C# AVEVA MARINE 二次开发 读取分段

时间:2023-10-15 19:56:45浏览次数:32  
标签:resDbElements 分段 C# AVEVA dll var ui 二次开发 new

快速读取和筛选分段元素

[MyAmFunctionAtt(nameof(测试功能), nameof(读取分段))]
        public void 读取分段(WindowManager wm)
        {
            try
            {
                foreach (var item in wm.Windows)
                {
                    if (item is DockedWindow)
                    {
                        var w = item as DockedWindow;
                        if (w.Title.ToLower() == "messages")
                        {
                            if (!w.Visible)
                            {
                                w.Show();
                                wm.MainForm.Refresh();
                            }
                        }
                    }
                }
                //提取全部分段信息
                var flType = new TypeFilter(DbElementTypeInstance.BLOCK);//只筛选分段,添加引用的dll==> C:\AVEVA\Marine\OH12.1.SP4\PDMSFilters.dll
                var searchStr = "ER*";
                var nameLikeStr = new AttributeLikeFilter(DbAttributeInstance.NAMN, searchStr);//根据名称筛选,添加引用 C:\AVEVA\Marine\OH12.1.SP4\Aveva.Pdms.Database.dll
                var andFl = new AndFilter(flType, nameLikeStr);//两个条件同时满足
                var blkeles = FindElements(DbType.Design, andFl);
                var ui = new MarUi(); //添加引用 C:\AVEVA\Marine\OH12.1.SP4\marAPI.dll
                if (!blkeles.Any())
                {
                    ui.MessageConfirm($"找不到名称类似‘{searchStr}’的分段!");//发送文本到message window窗口
                    ui.Dispose();
                    return;
                }
                blkeles.ForEach(c => ui.MessageNoConfirm(c.GetAsString(DbAttributeInstance.NAMN)));
                ui.Dispose();
            }
            catch (System.Exception ex)
            {
                Interaction.MsgBox(ex.Message, MsgBoxStyle.Exclamation);// 添加引用C:\Windows\Microsoft.NET\Framework64\v2.0.50727\Microsoft.VisualBasic.dll
            }
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="dbType">数据类型</param>
        /// <param name="filter">筛选器</param>
        /// <param name="condtion">对dbelement需要筛选的条件</param>
        /// <returns></returns>
        public static List<DbElement> FindElements(DbType dbType, BaseFilter filter, Func<DbElement, bool> condtion = null)
        {
            List<DbElement> resDbElements = new List<DbElement>();
            DBElementCollection dbeEleCol = new DBElementCollection(dbType, filter);
            var res = dbeEleCol.Cast<DbElement>();
            if (!res.Any()) return resDbElements;
            res.ToList().ForEach(c =>
            {
                if (condtion != null)
                {
                    if (condtion.Invoke(c)) resDbElements.Add(c);
                }
                resDbElements.Add(c);
            });
            return resDbElements;
        }

测试结果

标签:resDbElements,分段,C#,AVEVA,dll,var,ui,二次开发,new
From: https://www.cnblogs.com/NanShengBlogs/p/17766066.html

相关文章

  • PyTorch之线性回归模型
    1简介1.1线性回归模型简介线性回归是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法,运用十分广泛。其表达形式为y=wx+e,e为误差服从均值为0的正态分布。其中只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,称为一元......
  • WINCCV7.5SP2VBS+复选框做趋势曲线显示隐藏功能
    这是我在新浪博客发表过的一篇学习笔记,在这里也记录一遍。新浪博客地址是WINCCV7.5SP2VBS+复选框做趋势曲线显示隐藏功能_来自金沙江的小鱼_新浪博客(sina.com.cn) 新建一个WINCC项目,新建3个内u浮点数变量,2个BOOL变量,设置初始值。设置变量记录,关联这5个变量,启动变量记录。新建......
  • 【gdb】让catchpoint只触发一次
    让catchpoint只触发一次1.例子:#include<stdio.h>#include<stdlib.h>#include<sys/types.h>#include<unistd.h>intmain(void){pid_tpid;inti=0;for(i=0;i<2;i++){ pid=fork(); if(pid<0)......
  • 模拟集成电路设计系列博客——2.4.2 全差分折叠Cascode放大器
    2.4.2全差分折叠Cascode放大器下图展示了一个简化的全差分折叠Cascode放大器。使用两个Cascode电流源来取代之前介绍的结构中的n沟道电流镜,并增加了一个共模反馈电路。这些电流源的驱动晶体管的栅压由共模反馈电路的输出电压\(V_{cntrl}\)决定。共模反馈电路的输入是全差分放大......
  • Pycharm 2023版安装教程(附激活码,亲测有效)
    PyCharm是一种PythonIDE(集成开发环境),带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、项目管理、代码跳转、智能提示、自动完成、单元测试、版本控制。此外,该IDE提供了一些高级功能,以用于支持Django框架下的专业Web开发。第一步:下载Pycharm安......
  • leetcode2845. 统计趣味子数组的数目
    题解classSolution{public:longlongcountInterestingSubarrays(vector<int>&nums,intmodulo,intk){inta[100010];unordered_map<int,int>mp;mp[0]=1;longlongans=0;intpre=0;......
  • LeetCode Day04 24&19&02.07&142
    24. 两两交换链表中的节点这题使用虚拟头结点会更好做,因为有虚拟头结点我们交换结点的时候步骤会更加清晰。操作此类有指针类型的题目要注意:1.画图避免混乱2.注意指针先后顺序classSolution{publicListNodeswapPairs(ListNodehead){ListNodedumyhea......
  • 绕过preg_match函数并使用本地命令RCE
    来自[FBCTF2019]RCEService:题目本身不难,但这个知识点值得一提。首先打开是一个输入JSON格式的cmd执行,随便输了输看看回显:我输了个{"cmd":"ls"}嗯?直接出目录了?按道理来说应该有过滤吧。果然输入ls/就:显然把斜杠过滤了,试了试其他的语句,发现cat啥的常规的全给ban了,就只有l......
  • JS操作增加Class属性和移除删除Class属性
    直接上代码functiongo(a){if(a=='shifu'){//移除属性varshop=document.getElementsByClassName("shop")[0];shop.classList.remove("ns-border-color");//增加属性......
  • 【gdb】打印ASCII和宽字符字符串
    打印ASCII和宽字符字符串1.例子:#include<stdio.h>#include<wchar.h>intmain(void){charstr1[]="abcd";wchar_tstr2[]=L"abcd";return0;}用gdb调试程序时,可以使用“x/s”命令打印ASCII字符串。以上面程序为例:[root@node0......