发表于:2008-03-21 00:36:00
楼主
图文并茂的原文章地址http://www.kipway.com/makecell.php
基本图形的绘制都很简单,下面讲述子图的制作,子图是重要的与工程无关的可重用图形元素。以一个罐体为例:
第一步:制作罐体
第二步:组装罐体,全部选中打成子图。
第3部:定义宏参数,定义一个液位高度宏参数,参数类型为FLOAT。
第四步:定义动作,我们需要百分比填充,来表示目前罐体类液位高度。因此需要定义第一步定义为液位的矩形脚本动作,选择直接连接即可。进入内部细节->选择液位对象->点击动作标签->选在百分比填充动作->选择直接连接方式。
第5步:定义动作属性。注意选择宏才能做到与工程无关。
这样罐体子图就制作好了。
上面采用直接连接,其中最大值和最小值还是无法做到与工程无关,这是您可换种方式,采用自定义脚本方式。这是需要定义5个宏参数,分别是
然后用脚本函数:
void PercentFill(char *objName,float v,int dir,long color)
objName char * 图形名称,NULL表示图形自己
v 填充百分比,0 - 1.0
dir 填充方向,值如下
-1 取消填充
0 向上填充
1 向下填充
2 向右填充
3 向左填充
color long 百分比填充的颜色
然后编写如下脚本:
int main(){
float fltval,fltmin,fltmax,fltpercent;
long ldir,lclr;
GetData("fltVal",&fltval);
GetData("ldir",&ldir);
GetData("lColor",&lclr);
GetData("fltMinVal",&fltmin);
GetData("fltMaxVal",&fltmax);
fltpercent = (fltval - fltmin) / (fltmax - fltmin);
if(fltpercent < 0.0) fltpercent = 0.0;
if(fltpercent > 1.0) fltpercent = 1.0;
PercentFill(NULL,fltpercent,ldir,lclr);
return 0;
}
以上是将脚本写在子图内部的液位图形中的,当然也可直接写在子图级别上,但脚本要稍作修改。修改如下;
int main(){
float fltval,fltmin,fltmax,fltpercent;
long ldir,lclr;
GetData("fltVal",&fltval);
GetData("ldir",&ldir);
GetData("lColor",&lclr);
GetData("fltMinVal",&fltmin);
GetData("fltMaxVal",&fltmax);
fltpercent = (fltval - fltmin) / (fltmax - fltmin);
if(fltpercent < 0.0) fltpercent = 0.0;
if(fltpercent > 1.0) fltpercent = 1.0;
PercentFill("液位",fltpercent,ldir,lclr);
return 0;
}
子图制作好测试无错后,即可存入子图库中被备用。
从子图库中读入子图,调整大小满足工程要求。将子图内的宏参数用实际变量替换即可。
注意:宏参数在9.51版本必须用变量表中的变量替换,不能用立即数替换,比如ldir=0是错误的。而在9.52版本开始即可用变量替换也可用立即数替换,比如lColor=0X00FF0000