PCB Genesis原点坐标转换关系
一.Genesis原点坐标转换关系:
1.读取Genesis坐标转换: UI界面坐标 = 文件坐标 - 偏移值
2.写入Genesis坐标转换: 文件坐标 = UI界面坐标 + 偏移值
3.为了说清楚转换关系,这里以读取Genesis坐标图示
4.不再糊涂,彻底说明白,这里再次配一张图示。
二.Genesis原点相关指令:
1.读取原点坐标:
/// <summary>
/// 获取Step原点坐标
/// </summary>
/// <param name="step">填STEP名</param>
/// <param name="job">填JOB名</param>
/// <param name="units"></param>
/// <returns></returns>
public static gPoint getOrigPoint(string step = "", string job = "", string units = "mm")
{
gPoint OrigP = new G_Helper.gPoint();
if (step.Length == ) step = g.getSTEP();
if (job.Length == ) job = g.getJOB();
string[] arayList = g.COM(g._get_origin).Split(' ');
OrigP.x = double.Parse(arayList[]);
OrigP.y = double.Parse(arayList[]);
OrigPoint = OrigP;
return OrigP;
}
2.读取基准点坐标:
/// <summary>
/// 获取Step基准坐标
/// </summary>
/// <param name="step">填STEP名</param>
/// <param name="job">填JOB名</param>
/// <param name="units"></param>
/// <returns></returns>
public static gPoint getDatumPoint(string step = "", string job = "", string units = "mm")
{
gPoint DATUMP = new G_Helper.gPoint();
if (step.Length == ) step = g.getSTEP();
if (job.Length == ) job = g.getJOB();
g.outINFO("step", job + "/" + step, "DATUM", "", "", units);
DATUMP.x = double.Parse(g.getINFO("gDATUMx"));
DATUMP.y = double.Parse(g.getINFO("gDATUMy"));
return DATUMP;
}
3.设置原点坐标与基准点坐标
gProfile pro = g.getProfile(stepname, jobname, "inch");
g.COM($"origin,x={pro.Prof.min.x},y={pro.Prof.min.y}, push_in_stack = 1");
g.COM($"datum,x={0},y={0}");
三.凝问解答:
1.获取Genesis Info 坐标信息是否需要加入原点坐标转换?
那当然啦,在封装获取Genesis Info信息类时,加入原点坐标转换,不然坐标会偏位。
转换公式: UI界面坐标 = 文件坐标 - 偏移值
例子:
2.为什么我获取Info坐标时没加入转换值,不会造成坐标偏位呢?
那因为大多数TGZ原点坐标默认就是0,只要原点坐标人为不修改,则不会造成坐标偏位。
3.原点坐标更改后,是否会影响features文件图形坐标相应变化?
不会的,只会更改stephdr文件的原点坐标。
奥宝这样做法是在文件与Genesis之间加入了转换关系,达到变更原点,给用户的感觉是原点变了,而真实坐标文件原点不变 。
4.原点坐标更改后,对输出Drill或Gerber 是按Genesis UI(转换后的)坐标还是按features文件坐标呢?
以features文件真实坐标输出。
5.如果想按Genesis UI(转换后的)坐标输出如何输出呢?
输出时加入偏移即可,按通过原点坐标按下图公式转换即可。
6.GenesisUI界面中,重新定义原点的坐标,是基于文件坐标零点还是UI界面坐标零点?
重新定义原点的坐标是;基于文件坐标零点。
7.GenesisUI界面中,重新定义基准点的坐标,是基于文件坐标零点还是UI界面坐标零点?
重新定义基准点的坐标是:基于UI界面坐标零点。
(UI界面基准点是相对于UI界面零点位置偏移坐标,而实际stephdr文件中基准点是是相对于文件零点位置偏移坐标)
8.如果GenesisUI界面中,原点不在Profile左下角,且文件坐标原点也不在Profile左下角,如何定义Profile左下角为原点?
只要计算出新原点坐标即可解决此问题,计算公式如下
9.在GenesisUI界面中,更改原点或基准点坐标是否可以撤回?
基准点更改后可以撤回。而原点更改后不能撤回的
10.在GenesisUI界面中,更改原点后,基准点的坐标会变吗?
会变的,基准点坐标变化如下图所示
UI基准点坐标,可以通过INFO直接获取(UI基准点坐标是相对于UI原点坐标)
PCB Genesis原点坐标转换关系的更多相关文章
- PCB genesis自制孔点 Font字体实现方法
一.先看genesis原有Font字体 在PCB工程CAM加孔点字体要求时,通常我们直接用Geneis软件给我们提供了2种孔点字体canned_57与canned_67,但此字体可能不能满足各个工厂个 ...
- PCB Genesis SET拼板(圆形板拼板) 实现效果(二)
越来发现Genesis采用Surface多边形数据结构的重要性了,当撑握了多边形缩放,交集, 差集,并集等算法, 想实现PCB拼板简直轻而易举了;当然借助多边形算法可以开发出更多的PCB实用的工具出来 ...
- PCB genesis连孔加除毛刺孔(圆孔与槽孔)实现方法(二)
一.为什么 连孔加除毛刺孔 原因是 PCB板材中含有玻璃纤维, 毛刺产生位置在于2个孔相交位置,由于此处钻刀受力不均导致纤维切削不断形成毛刺 ,为了解决这个问题:在钻完2个连孔后,在相交处再钻一个孔, ...
- PCB Genesis拼SET画工艺边 实现方法(一)
在PCB行业中,客户提供的PCB尺寸较小,为方便PCB加工,并生产提高生产效率,通常小于80X80mm需拼板处理的, 拼板要求可能来自按户指定拼板,也有可能是由工厂自行拼板,但对于CAM来说就需将PC ...
- PCB genesis孔符制作实现方法
一.先看genesis原始孔符 孔符的作用:用于表示孔径的大小的一种代号, 当孔径检测时,可以按分孔图中的孔符对应的孔径尺寸对孔径检测. 在实际PCB行业通常不使用原始(图形)孔符,而使用字母孔符(如 ...
- PCB genesis连孔加除毛刺孔(槽孔与槽孔)实现方法(三)
一.为什么 连孔加除毛刺孔 原因是 PCB板材中含有玻璃纤维, 毛刺产生位置在于2个孔相交位置,由于此处钻刀受力不均导致纤维切削不断形成毛刺 ,为了解决这个问题:在钻完2个连孔后,在相交处再钻一个孔, ...
- PCB genesis连孔加除毛刺孔(圆孔与圆孔)实现方法(一)
一.为什么 连孔加除毛刺孔 原因是 PCB板材中含有玻璃纤维, 毛刺产生位置在于2个孔相交位置,由于此处钻刀受力不均导致纤维切削不断形成毛刺 ,为了解决这个问题:在钻完2个连孔后,在相交处再钻一个孔, ...
- PCB genesis大孔加小孔(即卸力孔)实现方法
一.为什么 大孔中要加小孔(即卸力孔) 这其实跟钻刀的排屑有关了,当钻刀越大孔,排屑量也越大(当然这也得跟转速,下刀速的参数有关系),通常当钻刀越大,转速越慢,下刀速也越慢(因为要保证它的排屑通畅). ...
- PCB Genesis脚本 C#调用Javascript
曾经用node.js测试写Genesis脚本失败了,这次借助开发PCB规则引擎的机会(基于JS V8引擎与.net深度交互性), 验证一下Javascript是否可用于写Genesis脚本. 一.测试 ...
随机推荐
- c#中动态创建textbox并且从数据库中获取表中数据添加到textbox中
private void FormLugOther_Load(object sender, EventArgs e) { foreach (string str in FormLug.FieldLis ...
- zabbix实现163邮件报警
Zabbix 邮件报警 电脑登录网易邮箱配置,把自己的授权码看一下,并写入配置文件 server端安装配置邮件服务器 [root@server ~]# yum -y install mailx dos ...
- java 导入导出的 命令
$exp lddba/ld_321@192.168.1.3/testora file=E:\db_bak\ld20170219_1testora.dmp log=E:\db_bak\ld2017021 ...
- 原型链、构造函数、箭头函数、se6数组去重
原型链 例子如下: var arr = [1, 2, 3]; 其原型链为:arr ----> Array.prototype ----> Object.prototype ----> ...
- Luogu P1041 [2003NOIP提高组]传染病控制
P1041 传染病控制 题目背景 近来,一种新的传染病肆虐全球.蓬莱国也发现了零星感染者,为防止该病在蓬莱国大范围流行,该国政府决定不惜一切代价控制传染病的蔓延.不幸的是,由于人们尚未完全认识这种传染 ...
- 303. Range Sum Query - Immutable(动态规划)
Given an integer array nums, find the sum of the elements between indices i and j (i ≤ j), inclusive ...
- asp.net 跨域问题
asp.net 跨域问题 解决方案1: public void ProcessRequest(HttpContext context) { //解决跨域问题 context.Response.Clea ...
- vuejs验证码
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> </head> ...
- SCU Censor
Censor frog is now a editor to censor so-called sensitive words (敏感词). She has a long text p . Her j ...
- oracle数据库审计
Oracle使用大量不同的审计方法来监控使用何种权限,以及访问哪些对象.审计不会防止使用这些权限,但可以提供有用的信息,用于揭示权限的滥用和误用. 下表中总结了Oracle数据库中不同类型的审计. 审 ...