Archives: 2021年7月4日

一种字符追溯标记的实现方法

PCB生产中经常遇到转厂,外发等加工,多工厂加工等流程,为了更好的追溯,通常在周期上做特殊处理,以实现追溯的目的

CAM作业中传统的做法是建立不同的Symbol,遇到转厂,外发的时候手动修改指定位置以便追溯,本文以修改字体实现以上需求为例,探讨追溯的方法。

01 实现原理

以ODB++格式存储的CAM软件中,可以自行修改标准字体文件,不同的工厂配置不同的字体库,CAM作业中无需关注追溯标记位置,选择对应工厂的字体即可实现追溯的效果。根据ODB++中对标准字体的描述,字体由不同的线组合构成,相关字段描述如下。

02 修改字体

打开字体库文件wzdatan字体文件,默认改文件在/genesis/fw/lib/fonts/目录中,没有的话可以找本文作者寻求。这里以修改字体中的[.]为例说明

CHAR .
LINE 0.025000 -0.075000 0.025000 -0.075000 P R 0.012000
ECHAR

格式说明:

CHAR .   表示字符定义开始,空格后面跟着是具体的字符,这里需要以ASCLL编码。

LINE 具体的字符描述,也就是最终呈现出来的字符的形式,由不同的线组成,这里[.]仅由一根线组成。注意坐标单位为inch。

ECHAR 表示字符定义结束。

从上面定义坐标可以看到默认[.]是在下方的,需要调整到中间的时候,我们需要将ys,ye坐标改到中间。修改如下:

CHAR .
LINE 0.025000 0.050000 0.025000 0.050000 P R 0.030000
ECHAR

保存后,重启CAM软件生效。

03 效果验证

启动CAM软件后,添加一个字符,字体选择刚修改的wzdaten,大小默认

可以看到输入的[.]已经移动到中间,达到想要的效果。
其他字符的修改类似,可以随意修改字符中线的长度,大小,实现差异化。不同工厂保存为不同的字体名称即可。


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进行确认。

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