zoukankan      html  css  js  c++  java
  • PCB genesis孔符制作实现方法

     一.先看genesis原始孔符

         孔符的作用:用于表示孔径的大小的一种代号, 当孔径检测时,可以按分孔图中的孔符对应的孔径尺寸对孔径检测.

         在实际PCB行业通常不使用原始(图形)孔符,而使用字母孔符(如A,B,C ),主要原因是:图形孔符在人员读取,录入,转换不便

    二.孔符坐标文件制作说明

         孔符坐标文件放在genesis安装目录:c:genesise99allmarkers下,我们先查看一下孔符文件,如下图所示, 直接是明文坐标。由于奥宝也没有提供孔符编辑工具,我们想直接修改孔符坐标不现实,这里我们可以借助genesis图界面,将孔符坐标读入genesis,然对孔符进行编辑,接着再将编辑好的孔符输出来即可. 

        孔符制作3步曲.

      1.孔符读入==>2.编辑孔符==>3.孔符输出

    三.编辑孔符说明

        1.孔符中心是坐标零点为中心,对准钻孔中心,而不是以孔符元素中心对准钻孔中心

         2.孔符宽度与高度比值尽量控制一致, 不然生成孔符图会造成拉伸变形效果

     四.C#代码实现

       孔符读入

         //###孔符读入genesis 
                //1.新建一个全新的job与step
                //2.读取孔符markers目录文件,每一种孔符会标对应genesis一个层(如:t00,t01,t02)
                //3.接着借助genesis对孔符进行编辑操作了
                string HoleSmbolsInputDirPath = @"C:UsersAdministratorDesktopmarkersmarkers";//孔符读取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");
                }
    View Code

       孔符输出

                //###孔符输出
                //1.准备编辑好的孔符job
                //2.依次遍历genesis所有层,每一层(如t01,t02)输出为单一的孔符坐标文件
                //输出需注意两点
                //一.输出孔符的genesis单位要读入孔符单位要一致(我这边用mm习惯了,这边公制单位)
                //二.输出的坐标要转为整数,孔符坐标中含有小数genesis识别不了)
                var HoleSmbolsOutputDirPath = @"C:UsersAdministratorDesktopmarkers";//孔符输出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

     五.实现效果

         孔符读入

          孔符输出

  • 相关阅读:
    在iOS 11上出现libsystem_kernel.dylib`__abort_with_payload崩溃问题的解决
    Mac上安装软件出现“XXXX”已损坏,打不开,你应该将它移到废纸篓 的问题解决
    iOS10.3系统以后(NSStrikethroughStyleAttributeName)富文本删除线失效不显示的坑
    Mac终端操作命令
    解决设置selectedBackgroundView后会把cell上带背景颜色的控件遮住的问题
    iOS开发字体大全
    UITapGestureRecognizer的用法
    UIButton设置图片和标题上下垂直分布的总结
    Xcode8.3.2制作静态库
    多线程
  • 原文地址:https://www.cnblogs.com/pcbren/p/10018006.html
Copyright © 2011-2022 走看看