CAM动态周期
“ 为了更好的追溯产品,以及批次管控,线路板上通常会加上生产周期,而往往因为资料中周期没有及时更新导致客户投诉。”
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是自定义的年周变量。如下图所示


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