• EPLAN API 入门系列PPE


    最近两个月,断断续续完成了一个PPE报表的开发,和各位分享一下:
    
    PPE API的开发主要涉及到Hookup、PctLoop、PctFunction、Specification、PctElement、Plant等对象。
    
    PPE Data:
    
    PpeData data = new PpeData(oProject);
    
    PctLoop:
    
    PctLoopFilter oPF = new PctLoopFilter(data);
    PctLoop[] oLoop = data.GetPctLoops(oPF);
    
    Hookup:
    Hookup[] oHookups = data.Hookups;
    
    pctElements:
    
    PctElement[] pctElements = oLoop[d].PctFunctions[t].PctElements;
    
    Specification:
    
    pctElements[v].Specification
    
    因为报表中涉及到数据的分组、排序、检索,所以我选择了Linq方式:  
    
    写入数据:
    
    arrDevicePiList.Add(new DevicePiList
    {
        groupNr = 10,
        pctLen = d,
        funLen = t,
        piCode = strPiCode,
        pctFunType = "其它",
        oPctFun = oLoop[d].PctFunctions[t],
        pctFunMeasurand = oLoop[d].PctFunctions[t].Measurand,
        pctFunFunction = oLoop[d].PctFunctions[t].Function,
        pctFunNumber = oLoop[d].PctFunctions[t].Number
     });
    
    分组、排序:
    
    var cc = from t in arrDevicePiList
                                 orderby t.piCode,t.pctFunMeasurand, t.pctFunMeasurand
                                 group t by t.piCode into g
                                 orderby g.First().piCode,g.First().pctFunMeasurand, g.First().pctFunFunction, g.First().pctFunNumber
                                 select g;
    
    Linq延迟检索:
    
    var ls5 = cc.AsEnumerable();
    
    ls5=ls5.Where(p => p.First().piCode.Split(new char[] { ' ' })[0].ToString() == strPiCode1);
    
    当然,Linq方式虽然在这种非数据库读取数据的处理中会相对比较方便,但效率的确实在不敢恭维,大家有什么更好的方式,共同探讨一下。
    
    其实,今年一直想做这么一个接口开放平台,通过WEB API的方式开放出来,但目前来看貌似有些困难,公司并不允许。。。
  • 相关阅读:
    pureftp 超时 mlsd
    安卓相机调用适配
    解决多个界面重复共用同一组数据导致数据同步改变(实现数据的完全深拷贝)
    PHP反射API的使用、体会、说明
    c冒泡排序
    iOS开发常用的第三方类库
    修改按钮上图片的大小-iOS
    获取手机通讯录--ios
    根据搜素的字符串改变label包含该字符串的文字
    cell点击按钮崩的一种情况
  • 原文地址:https://www.cnblogs.com/AriLee/p/2810286.html
Copyright © 2020-2023  润新知