在做一个矩形时,在其属性-几何中,对X/Y宽度、高度做了动态,用的C脚本,问如何触发这些动作。谢谢。
最佳答案
如何动态化图形对象的大小和位置?
描述:
图形对象的“动态填充”属性只允许从底部到顶部填充对象,即使该对象被旋转。本条目描述了如何动态化一个矩形,以达到棒图从右到左增长的效果。对象的大小和位置也可以通过同样的方法实现动态化。
在WinCC实例中有以下对象被引用:
描述 对象名称 属性
填充变量 "Level" 无符号8位数值, 下限: 0, 上限: 100
边界矩形 "Border" 几何: X=19, Y=39, 宽度=402, 高度=32
填充矩形 "LevelRect" 几何: X=20, Y=40, 宽度=400, 高度=30
颜色: 线颜色 = 背景颜色
注意:
对所有的动态都使用变量触发:
变量: "Level"
更新: "一旦改变"
选择1:动态值的范围
为下面的填充矩形设置动态效果。
图 01
位置X: 公式: 420 - (400/100 * 'Level')
宽度: 公式: 400/100 * 'Level'
图 02: 动态位置X
选择2:用C脚本作动态化
编号 描述:
1 属性"位置 X"的C脚本
#include "apdefap.h"
long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
int level;
level = GetTagByte("Level");
return 420 - ( orgWidth / 100 * level );
}
2 属性"宽度"的C脚本
#include "apdefap.h"
long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
int level;
level = GetTagByte("Level");
return 400 / 100 * level;
}
选择3: 用VB脚本作动态化
编 号 描述:
1 属性"位置 X"的VB脚本
Function Left_Trigger(Byval Item)
Dim level
Set level = HMIRuntime.Tags("Level")
Item.Left = 420-(400/100 * level.Read)
End Function
2 属性"宽度"的VB脚本
Function Width_Trigger(Byval Item)
Dim level
Set level = HMIRuntime.Tags("Level")
Item.Width = 400/100 * level.Read
End Function
结果:
图 03
条目号:12730269 日期:2008-05-15
http://support.automation.siemens.com/CN/llisapi.dll?func=cslib.csinfo&lang=zh&siteid=cseus&objid=12730269
提问者对于答案的评价:
很详细,谢谢了,对下楼的,也表示感谢!
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc273309.html