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的方式开放出来,但目前来看貌似有些困难,公司并不允许。。。

 

posted @ 2012-12-09 18:35  AriLee  Views(2040)  Comments(0Edit  收藏  举报