PCB genesis孔符製作實現方法
阿新 • • 發佈:2018-12-03
一.先看genesis原始孔符
孔符的作用:用於表示孔徑的大小的一種代號, 當孔徑檢測時,可以按分孔圖中的孔符對應的孔徑尺寸對孔徑檢測.
在實際PCB行業通常不使用原始(圖形)孔符,而使用字母孔符(如A,B,C ),主要原因是:圖形孔符在人員讀取,錄入,轉換不便
二.孔符座標檔案製作說明
孔符座標檔案放在genesis安裝目錄:c:\genesis\e99\all\markers下,我們先檢視一下孔符檔案,如下圖所示, 直接是明文座標。由於奧寶也沒有提供孔符編輯工具,我們想直接修改孔符座標不現實,這裡我們可以藉助genesis圖介面,將孔符座標讀入genesis,然對孔符進行編輯,接著再將編輯好的孔符輸出來即可.
孔符製作3步曲.
1.孔符讀入==>2.編輯孔符==>3.孔符輸出
三.編輯孔符說明
1.孔符中心是座標零點為中心,對準鑽孔中心,而不是以孔符元素中心對準鑽孔中心
2.孔符寬度與高度比值儘量控制一致, 不然生成孔符圖會造成拉伸變形效果
四.C#程式碼實現
孔符讀入
//###孔符讀入genesis //1.新建一個全新的job與stepView Code//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 inHoleSmbolsFilePath) { 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"); }
孔符輸出
//###孔符輸出 //1.準備編輯好的孔符job //2.依次遍歷genesis所有層,每一層(如t01,t02)輸出為單一的孔符座標檔案 //輸出需注意兩點 //一.輸出孔符的genesis單位要讀入孔符單位要一致(我這邊用mm習慣了,這邊公制單位) //二.輸出的座標要轉為整數,孔符座標中含有小數genesis識別不了) var HoleSmbolsOutputDirPath = @"C:\Users\Administrator\Desktop\markers\";//孔符輸出markers目錄 LayerNameList = g.getLayerNameList(g.STEP, g.JOB); foreach (var LayerName in LayerNameList) { StringBuilder StrLine = new StringBuilder(); foreach (var line in g.getFEATURES(LayerName).Llist) { StrLine.AppendLine($"{ Math.Round(line.ps.x, 0)} {Math.Round(line.ps.y, 0)} {Math.Round(line.pe.x, 0)} {Math.Round(line.pe.y, 0)} 0"); } File.WriteAllText($"{HoleSmbolsOutputDirPath}{LayerName}", StrLine.ToString()); }View Code
五.實現效果
孔符讀入
孔符輸出