子图的制作和使用 点击:271 | 回复:1



蒋勇

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:17帖 | 62回
  • 年度积分:0
  • 历史总积分:311
  • 注册:2006年2月08日
发表于: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




工控FC

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 137回
  • 年度积分:0
  • 历史总积分:136
  • 注册:2008年3月28日
发表于:2008-03-31 13:31:00
1楼

了解更多知识可以上我的博客看看
http://blog.sina.com.cn/salesmen

热门招聘
相关主题

官方公众号

智造工程师