PCB genesis孔符制作实现方法
一.先看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() >= )
{
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());
}
五.实现效果
孔符读入
孔符输出
PCB genesis孔符制作实现方法的更多相关文章
- PCB genesis自制孔点 Font字体实现方法
一.先看genesis原有Font字体 在PCB工程CAM加孔点字体要求时,通常我们直接用Geneis软件给我们提供了2种孔点字体canned_57与canned_67,但此字体可能不能满足各个工厂个 ...
- PCB Genesis 外形加内角孔实现方法
在PCB工程制作CAM时,经常会遇到外形拐角处直角的,而客户对内角是要求,比如最大内角要求R0.5mm或者不接受内角, 但成型方式为铣方式,又不是啤板成型,那怎么处理才可以达到要求效果呢,在这里介绍2 ...
- PCB genesis短槽加引导孔实现方法
一.何为短槽 短槽通常定义:槽长小于2倍槽宽 如:槽长1.8mm,槽宽1.0mm 二.为什么要加短槽加引孔呢 短槽孔在钻孔时孔易偏斜导致槽长偏短, 当槽长宽比越小,则受力越不均匀,在钻第2个 ...
- cadence 机械孔的制作
在平时画PCB的时候,会用到安装孔,好多人就是找个过孔,在原理图中连接GND,这样使用也可以,下面介绍一种正经机械孔的制作方法(自己摸索的),制作一个孔径为3mm的安装孔. 1 打开pad desig ...
- PCB Genesis SET拼板(圆形板拼板) 实现效果(二)
越来发现Genesis采用Surface多边形数据结构的重要性了,当撑握了多边形缩放,交集, 差集,并集等算法, 想实现PCB拼板简直轻而易举了;当然借助多边形算法可以开发出更多的PCB实用的工具出来 ...
- skyline TerraBuilder 制作MPT方法与技巧(2)
制作MPT的方法可以看这里<skyline TerraBuilder 制作MPT方法与技巧(1)>http://www.cnblogs.com/cannel/p/3622447.html ...
- skyline TerraBuilder 制作MPT方法与技巧(1)
MPT是skyline独有的三维地形数据格式,可简单理解为 影像图+高程=三维地形(三维底图),以下介绍用skyline TerraBuilder(以下简称TB)制作MPT的方法与技巧 用TB制作MP ...
- 多周期MACD趋势共振制作的方法
我浏览了创幻论坛.理想论坛,来到MACD股市技术分析俱乐部,真正找到自己的乐土. 做人要厚道!指标之王MACD既然被先辈们创造了出来,就应由我辈发扬光大!自吹自擂者.吝啬者都应自觉退出论坛既然来到这里 ...
- BMFont中文字体图集制作的方法~(for unity ngui)
BMFont中文字体图集制作的方法~(for unity ngui) 好吧~似乎这个问题困扰了很多人,游戏开始中文化是个不错的事儿啊,这里我就做下说明,如何制作中文字体图集~ 这里的字库图集的制作更多 ...
随机推荐
- CCF201703-2 学生排队 java(100分)
试题编号: 201703-2 试题名称: 学生排队 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 体育老师小明要将自己班上的学生按顺序排队.他首先让学生按学号从小到大的顺序排 ...
- OpenCV+Python识别车牌和字符分割的实现
本篇文章主要基于python语言和OpenCV库(cv2)进行车牌区域识别和字符分割,开篇之前针对在python中安装opencv的环境这里不做介绍,可以自行安装配置! 车牌号检测需要大致分为四个部分 ...
- RequestMapping_请求方式
[映射请求参数.请求方法或请求头] 1.@RequestMapping 除了可以使用请求URL 映射请求外,还可以使用请求方法.请求参数及请求头映射请求. 2.@RequestMapping 的val ...
- JavaSE 学习笔记之集合框架(十八)
集合框架:,用于存储数据的容器. 特点: 1:对象封装数据,对象多了也需要存储.集合用于存储对象. 2:对象的个数确定可以使用数组,但是不确定怎么办?可以用集合.因为集合是可变长度的. 集合和数组的区 ...
- poj 3237 树链剖分模板(用到线段树lazy操作)
/* 本体在spoj375的基础上加了一些操作,用到线段树的lazy操作模板类型 */ #include<stdio.h> #include<string.h> #includ ...
- [K/3Cloud] KSQL 关联表更新字段Update语法
关联表更新字段 UPDATE tmp369faa3f7d224b0595670425008 as t1 SET FStatus=-1 where exists(select 1 from t_BD_S ...
- Fast Matrix Calculation 矩阵快速幂
One day, Alice and Bob felt bored again, Bob knows Alice is a girl who loves math and is just learni ...
- Eclipse导入Ant项目
导入Ant项目有以下方式: 1.[File]->[Project]->[Java Project from Existing Ant Buildfile] 选择build.xml文件即可, ...
- Oracle Multitenant Environment (二) Purpose
Purpose of a Multitenant Environment A multitenant environment enables the central management of mul ...
- 网络协议IPV6基础知识点集锦
由于互联网的快速发展与普及,原有的IPV4地址已不能满足网络用户的需求,虽然NAT可以缓解IPV4地址的耗尽,但NAT破坏了网络环境的开放.透明以及端到端的特性,因此IPV6地址协议应运而生. IPV ...