模型代码行数自动统计
Plant Simulation 软件中提供了显示每个Method行数的选项,但是当一个复杂的项目中拥有许多Method时,想知道所有Method中总代码行数就变得十分麻烦。所以这里我提供了统计代码总行数的程序,供大家参考。
功能:统计Frame及其所有子Frame中所有Method的代码行数。在Console窗口中展示结果。
优点:可一键统计所有Method行数,简单易用。
缺点:如有加密的Method,程序会报错。无法统计自定义属性中的程序行数。SimTalk 1.0程序手动运行时会弹出Dubug界面,可继续运行,不影响结果。如果使用程序调用传入参数为需要统计的Frame对象时则不会出错。
程序如下:
//SimTalk 2.0
param FrameObj:object:=void
-> integer
if FrameObj=void
FrameObj:=current
end
var ObjectNum:=FrameObj.numNodes
var obj :object
var Code:string[]
var Num :integer
for var i:=1 to ObjectNum
obj:=FrameObj.Node(i)
switch obj.InternalClassName
case “Method”
Code:=splitString(obj.Program,chr(10))
Num+=Code.dim
case “Network”
Num+=self.execute(obj)
end
next
if ?=void
print Num
else
return Num
end
–SimTalk 1.0
(FrameObj:object):integer
is
do
if FrameObj=void then
FrameObj:=current;
end;
local ObjectNum:=FrameObj.numNodes;
local obj :object;
local Code:string[];
local Num :integer;
for local i:=1 to ObjectNum loop
obj:=FrameObj.Node(i);
inspect obj.InternalClassName
when “Method” then
Code:=splitString(obj.Program,chr(10));
Num:=Num+Code.dim;
when “Network” then
Num:=Num+self.execute(obj);
end;
next;
if ?=void then
print Num;
else
return Num;
end;
end;