一.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原点坐标转换关系的更多相关文章

  1. PCB genesis自制孔点 Font字体实现方法

    一.先看genesis原有Font字体 在PCB工程CAM加孔点字体要求时,通常我们直接用Geneis软件给我们提供了2种孔点字体canned_57与canned_67,但此字体可能不能满足各个工厂个 ...

  2. PCB Genesis SET拼板(圆形板拼板) 实现效果(二)

    越来发现Genesis采用Surface多边形数据结构的重要性了,当撑握了多边形缩放,交集, 差集,并集等算法, 想实现PCB拼板简直轻而易举了;当然借助多边形算法可以开发出更多的PCB实用的工具出来 ...

  3. PCB genesis连孔加除毛刺孔(圆孔与槽孔)实现方法(二)

    一.为什么 连孔加除毛刺孔 原因是 PCB板材中含有玻璃纤维, 毛刺产生位置在于2个孔相交位置,由于此处钻刀受力不均导致纤维切削不断形成毛刺 ,为了解决这个问题:在钻完2个连孔后,在相交处再钻一个孔, ...

  4. PCB Genesis拼SET画工艺边 实现方法(一)

    在PCB行业中,客户提供的PCB尺寸较小,为方便PCB加工,并生产提高生产效率,通常小于80X80mm需拼板处理的, 拼板要求可能来自按户指定拼板,也有可能是由工厂自行拼板,但对于CAM来说就需将PC ...

  5. PCB genesis孔符制作实现方法

    一.先看genesis原始孔符 孔符的作用:用于表示孔径的大小的一种代号, 当孔径检测时,可以按分孔图中的孔符对应的孔径尺寸对孔径检测. 在实际PCB行业通常不使用原始(图形)孔符,而使用字母孔符(如 ...

  6. PCB genesis连孔加除毛刺孔(槽孔与槽孔)实现方法(三)

    一.为什么 连孔加除毛刺孔 原因是 PCB板材中含有玻璃纤维, 毛刺产生位置在于2个孔相交位置,由于此处钻刀受力不均导致纤维切削不断形成毛刺 ,为了解决这个问题:在钻完2个连孔后,在相交处再钻一个孔, ...

  7. PCB genesis连孔加除毛刺孔(圆孔与圆孔)实现方法(一)

    一.为什么 连孔加除毛刺孔 原因是 PCB板材中含有玻璃纤维, 毛刺产生位置在于2个孔相交位置,由于此处钻刀受力不均导致纤维切削不断形成毛刺 ,为了解决这个问题:在钻完2个连孔后,在相交处再钻一个孔, ...

  8. PCB genesis大孔加小孔(即卸力孔)实现方法

    一.为什么 大孔中要加小孔(即卸力孔) 这其实跟钻刀的排屑有关了,当钻刀越大孔,排屑量也越大(当然这也得跟转速,下刀速的参数有关系),通常当钻刀越大,转速越慢,下刀速也越慢(因为要保证它的排屑通畅). ...

  9. PCB Genesis脚本 C#调用Javascript

    曾经用node.js测试写Genesis脚本失败了,这次借助开发PCB规则引擎的机会(基于JS V8引擎与.net深度交互性), 验证一下Javascript是否可用于写Genesis脚本. 一.测试 ...

随机推荐

  1. 【sqli-labs】 less53 GET -Blind based -Order By Clause -String -Stacked injection(GET型基于盲注的字符型Order By从句堆叠注入)

    http://192.168.136.128/sqli-labs-master/Less-53/?sort=1';insert into users(id,username,password) val ...

  2. Redis 之sentinel运维监控

    有三台redis服务器6379.6380.6381,配置6379为主服务器,6380与6381都为6379的从服务器.如果主服务器6379挂掉了,我们怎么办? 方式一:手动修改从服务器的配置,将638 ...

  3. vue03 axios

    4. 通过axios实现数据请求 vue.js默认没有提供ajax功能的. 所以使用vue的时候,一般都会使用axios的插件来实现ajax与后端服务器的数据交互. 注意,axios本质上就是java ...

  4. 最适合初学者的Linux运维学习教程2018版

    Linux运维工程师是一个新颖岗位,现在非常吃香,目前从行业的角度分析,随着国内软件行业不断发展壮大,越来越多复杂系统应运而生,为了保证系统稳定运行,必须要有足够多的Linux运维工程师.维护是软件生 ...

  5. Python 发送邮件、加密 day5

    一.发送邮件import yagmail username = 'xxxxx@126.com'#发邮件人使用的邮箱 password = '123abc' #免费的邮箱,这里用授权码,一般自己公司的, ...

  6. php第二十一节课

    AJAX <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3 ...

  7. Chromium CEF 2623 -- 支持 xp 的最后一个版本源码下载和编译步骤

    背景 因为项目需要在客户端中内嵌浏览器,需要支持 xp 操作系统和播放视频,但 CEF 2623 以后的版本已经不支持 xp 操作系统,也不再提供 2623 版本的二进制发布包下载,只好自己手动编译. ...

  8. CTF密码学总结

    CTF中那些脑洞大开的编码和加密 摘自:https://www.cnblogs.com/mq0036/p/6544055.html 0x00 前言 正文开始之前先闲扯几句吧,玩CTF的小伙伴也许会遇到 ...

  9. 津津的储蓄计划 2004年NOIP全国联赛提高组

    题目描述 Description 津津的零花钱一直都是自己管理.每个月的月初妈妈给津津300元钱,津津会预算这个月的花销,并且总能做到实际花销和预算的相同. 为了让津津学习如何储蓄,妈妈提出,津津可以 ...

  10. P2330 [SCOI2005] 繁忙的都市 洛谷

    https://www.luogu.org/problem/show?pid=2330#sub 题目描述 城市C是一个非常繁忙的大都市,城市中的道路十分的拥挤,于是市长决定对其中的道路进行改造.城市C ...