为了更好的追溯产品,以及批次管控,线路板上通常会加上生产周期,而往往因为资料中周期没有及时更新导致客户投诉。

    Genesis,InCAM软件均带有周期变量,如$$YYWW,$$WWYY,实际应用的时候灵活性不够。不同版本支持的变量设置不同,如不能单双周,提前两周,推迟两周等等。本文以Genesis软件10.0版本为基础,探讨动态周期的实现。

01 实现原理

    以ODB++格式存储的Genesis软件中,增加一个userattr属性设置,配合line hooks 在打开料号时更新userattr属性值,实现动态周期的效果。编辑/genesis/fw/lib/misc/userattr,增加自定义周期变量,建议变量前面加上工厂标识,如CD。如下所示:

TEXT {
  NAME=CD_YYWW
  PROMPT=CanDo Date YYWW 
  MIN_LEN=0
  MAX_LEN=4
  ENTITY=JOB
  DEF=8888
}
​
TEXT {
  NAME=CD_WWYY
  PROMPT=CanDo Date WWYY 
  MIN_LEN=0
  MAX_LEN=4
  ENTITY=JOB
  DEF=8888
}

注:

1,TEXT 表示变量类型是文本

2,NAME是变量的名称

3,PROMPT是变量的描述

4,MIN_LEN表示变量最短位数

5,MIN_MAX表示变量最长位数

6,ENTITY表示变量宿主

7,DEF表示默认变量

02 修改流程

03 设置Hooks

进入/genesis/sys/hooks/line_hooks/目录,查看是否有open_job.post文件,没有创建一个,有的话加上如下代码。

#!/bin/csh
echo "AutoCAM Change Date"
​
#获取系统传递的参数,并按传递的参数名赋值变量
source $1
@ i=1
while($i <= $#lnVAL)
  set $lnPARAM[$i] = $lnVAL[$i]
  @ i++
end
​
#获取当前系统周期
set cdYY = `date +%y`
set cdWW = `date +%U`
set cdMM = `date +%m`
​
#周增加1
@ cdWW++
​
#检测周期大于53周到时候,进入下一年第一周
if($cdWW > 53) then
  @ cdYY++
  set cdWW = 1
endif
​
#赋值周期变量
set cdyyww = "${cdYY}${cdWW}"
set cdwwyy = "${cdWW}${cdYY}"
​
#设置cdyyww周期变量到Job
COM set_attribute,type=job,job=$job,name1=,name2=,name3=,attribute=cd_yyww,value=$cdyyww,units=inch
​
#设置cdwwyy周期变量到Job
COM set_attribute,type=job,job=$job,name1=,name2=,name3=,attribute=cd_wwyy,value=$cdwwyy,units=inch

04 效果演示

进入任意料号,打开一层资料,添加一个字符,字符大小,字体任意设置,Text栏输入$$cd_yyww是自定义的年周变量。如下图所示

欢迎关于微信公众号进一步交流。