| 作者 | 主题 |
|---|---|
|
szy868 侠客 经验值:619 发帖数:101 精华帖:6 |
楼主
主题:WINCC中制作管道流体流动动画的一种方法
采用自定义对象的方法制作,不需要使用全局变量及外部量。
以制作横向向右流动流动块为例: 1、画两个高度相等的矩形,分为是rec1和rec2,rec1的宽度小于rec2,rec2属性中的“显示”为否,将rec1和rec2放在一起,左对齐,rec1居前。rec1为实际要显示的流动块,rec2在实际运行中不显示,但需要其属性参数作为定值,以供程序使用,rec2-rec1的值即为流动块每次向右移的距离。 2、将rec1和rec2组合成自定义对象,需要加入属性rec1.Left、rec1.Width、rec1.Visible、rec2.Width这几个属性到自定义对象中去,其它属性可以根据需要添加。 3、在自定义块中的属性“位置X1”加入C脚本,触发器选“250ms”标准周期,代码如下: long Left,Left1,Width1,Width2; BOOL Visible1; long i,k; Visible1 = GetPropBOOL(lpszPictureName,lpszObjectName,"Visible1"); //Return-Type: BOOL Left1 = GetPropWord(lpszPictureName,lpszObjectName,lpszPropertyName); //Return-Type: long int if (Visible1) { Left = GetLeft(lpszPictureName,lpszObjectName); Width1 = GetPropWord(lpszPictureName,lpszObjectName,"Width1"); Width2 = GetPropWord(lpszPictureName,lpszObjectName,"Width2"); k = Width2 - Width1; i = Left + Width1; Left1 = Left1 + k; if (Left1 >= i) Left1 = Left; } return Left1; 4、将此自定义对象加入全局库中,以后可以在其它项目中直接使用。 5、在画面中使用直接拷贝,一个接一个连起来,可以形成管道流体动画效果。 其它方向的流动块按此方法一样可以,还可以制作起始流动块和结束流动块,实际使用中这两个块不要也行,用其它的东西把头尾盖起来就可以了。 自己测试了一下,在一个画面中放入200个左右的流体块,基本没有影响,但太多了,效果不好,应该够用了,使用外挂的OCX控制,也差不多是这样,控件多了也不行。 各位兄弟还有没有什么更好的建议,希望能够多交流。 |