一.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. 【转载】HTTP 响应头与状态码

    原文地址:https://segmentfault.com/a/1190000006689786 HTTP Response Header 响应头域允许服务器传递不能放在状态行的附加信息,这些域主要描 ...

  2. PHP 之phpqrcode类库生成二维码

    <?php /** * Created by PhpStorm. * User: 25754 * Date: 2019/6/4 * Time: 15:53 */ include "./ ...

  3. PC、h5项目接入第三方支付宝扫码登录、扫码付款

    首先介绍一下pc项目接入支付宝扫码支付. 1.pc.移动接入支付宝扫码支付. 其实这个逻辑很简单,前端所需要处理的不是很多,后台会给一个连接,前端只需要将要支付的订单id拼接在这个连接上,然后打开跳转 ...

  4. 在centos安装 sql server

    主要参考官方文档https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-setup-red-hat

  5. php第十九节课

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

  6. 学习MPI并行编程记录

    简单的MPI程序示例 首先,我们来看一个简单的MPI程序实例.如同我们学习各种语言的第一个程序一样,对于MPI的第一个程序同样是"Hello Word". /* Case 1 he ...

  7. JS练习:定时器--背景颜色交替变换

    代码: <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="UT ...

  8. 第十五节:pandas之concat()级联

    Pandas 提供了concat()函数可以轻松的将Series.DataFrame对象进行合并在一起. pandas.concat(obj , axis=0 , join="inner&q ...

  9. vim学习3-查找替换

    一.字符的替换及撤销(Undo操作) 1.替换和撤销(Undo)命令 替换和Undo命令都是针对普通模式下的操作 命令 说明 r+<待替换字母> 将游标所在字母替换为指定字母 R 连续替换 ...

  10. fzu 2124

    #include<stdio.h> #include<queue> #include<math.h> #include<algorithm> #incl ...