CAM资料钻孔系数设置

CAM在制作工具中,因生产工艺需要考虑物理特性,需要提前预设涨缩系数。其中钻孔为了减少钻孔数量,需要以万分之几的描述

CAM在作业中,经常遇到忘记修改板边系数,换算错误等烦恼,本文以解决此烦恼探讨如何解决这些需求。

01 实现原理

        以ODB++格式存储的Genesis软件中,使用.comment属性(可以自行添加自定义的属性),配合line hooks 在output时计算钻孔格式系数并更新.comment属性值,实现动态的效果。

02 修改流程

03 设置hooks

        这里以设置output_layer_set.pre输出钻孔为例说明,其他的实现方式可以扩展。

#!/bin/csh
#File Name: output_layer_set.pre
#Written  : Alex(wangge@nengxingtech.com)
#Date     : Jun26.2021
#Ver      : 1.0
#程序用于修改输出时相关到变量
​
#获取系统传递的参数
source $1
​
#根据层名判断是否为钻孔层
if($lnVAL[1] == 'drl') then
  
  #计算x涨缩值
  set inputscalex = `echo "scale=0; $lnVAL[4] * 100000" | bc | awk -F '.' '{print $1}'`
  if ($inputscalex > 100000 ) then
    set scalex = `echo "scale=3; ($inputscalex - 100000) * 0.1" | bc`
  else if ($inputscalex < 100000 ) then
    set scalex = `echo "scale=3; (100000 - $inputscalex) * 0.1" | bc`
    set scalex = -${scalex}
  else
    set scalex = 0
  endif
  
  #计算y涨缩值
  set inputscaley = `echo "scale=0; $lnVAL[5] * 100000" | bc | awk -F '.' '{print $1}'`
  if ($inputscaley > 100000 ) then
    set scaley = `echo "scale=3; ($inputscaley - 100000) * 0.1" | bc`
  else if ($inputscaley < 100000 ) then
    set scaley = `echo "scale=3; (100000 - $inputscaley) * 0.1" | bc`
    set scaley = -${scaley}
  else
    set scaley = 0
  endif
  
  #组合涨缩值描述
  set drlscale = "X${scalex}Y${scaley}"
  
  #设置钻孔涨缩值到层的变量
  COM set_attribute, type=layer,job=$JOB,name1=$STEP,name2=$lnVAL[1],\
             name3=,attribute=.comment,value=$drlscale
endif
​
#退出程序
exit

04 设置钻孔层系数变量

        在Panel封边的时候添加钻孔字麦到留边,或者手动添加也可以。这里以.comment举例说明,可以添加自定义变量。初次添加的时候没有设置变量会没有显示,只需要添加位置准确就可以。

05 输出测试

   在output界面输出的时候输入输出系数,执行输出。

反读回genesis进行确认。

如上图所示,系数已经变为万分之几的钻孔格式。


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是自定义的年周变量。如下图所示

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


技术支持

能行科技技术支持主要是用TeamViewer软件,公司已经购买商业版权,可以放心使用。

远程支援使用TeamViewer软件, 按对应的系统版本下载,可以直接使用TeamViewer官方版本。

以下为各相关版本下载地址:

在Windows 7系统上安装.net 4.7.2的时候,可能需要以下部分补丁,下载链接均来自微软官方网站:

http://download.windowsupdate.com/c/msdownload/update/software/secu/2019/09/windows6.1-kb4474419-v3-x64_b5614c6cea5cb4e198717789633dca16308ef79c.msu

http://download.windowsupdate.com/c/msdownload/update/software/secu/2019/03/windows6.1-kb4490628-x64_d3de52d6987f7c8bdc2c015dca69eac96047c76e.msu

http://download.windowsupdate.com/d/msdownload/update/software/secu/2018/05/windows6.1-kb4103718-x64_c051268978faef39e21863a95ea2452ecbc0936d.msu

Perl解释器安装文件