一.先看genesis原始孔符
孔符的作用:用于表示孔径的大小的一种代号, 当孔径检测时,可以按分孔图中的孔符对应的孔径尺寸对孔径检测.
在实际PCB行业通常不使用原始(图形)孔符,而使用字母孔符(如A,B,C ),主要原因是:图形孔符在人员读取,录入,转换不便
二.孔符坐标文件制作说明
孔符坐标文件放在genesis安装目录:c:\genesis\e99\all\markers下,我们先查看一下孔符文件,如下图所示, 直接是明文坐标。由于奥宝也没有提供孔符编辑工具,我们想直接修改孔符坐标不现实,这里我们可以借助genesis图界面,将孔符坐标读入genesis,然对孔符进行编辑,接着再将编辑好的孔符输出来即可.
孔符制作3步曲.
1.孔符读入==>2.编辑孔符==>3.孔符输出
三.编辑孔符说明
1.孔符中心是坐标零点为中心,对准钻孔中心,而不是以孔符元素中心对准钻孔中心
2.孔符宽度与高度比值尽量控制一致, 不然生成孔符图会造成拉伸变形效果
四.C#代码实现
孔符读入
//###孔符读入genesis //1.新建一个全新的job与step //2.读取孔符markers目录文件,每一种孔符会标对应genesis一个层(如:t00,t01,t02) //3.接着借助genesis对孔符进行编辑操作了 string HoleSmbolsInputDirPath = @"C:\Users\Administrator\Desktop\markers\markers\";//孔符读取markers目录 var HoleSmbolsFilePath = Directory.GetFiles(HoleSmbolsInputDirPath); foreach (var item in HoleSmbolsFilePath) { var HoleSymbolsLayerName = Path.GetFileNameWithoutExtension(item).ToLower(); g.COM($"create_layer,layer={HoleSymbolsLayerName}"); g.COM($"affected_layer,name={HoleSymbolsLayerName},mode=single,affected=yes"); foreach (var itemLine in File.ReadAllLines(item)) { var arrList = itemLine.Trim().Split(' ').Where(tt => !string.IsNullOrEmpty(tt)).ToList(); if (arrList.Count() >= 4) { g.COM($"add_line,xs={arrList[0]},ys={arrList[1]},xe={arrList[2]},ye={arrList[3]},symbol=r100"); } } g.COM($"affected_layer,name={HoleSymbolsLayerName},mode=single,affected=no"); }