• 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 == 0) step = g.getSTEP();
                if (job.Length == 0) job = g.getJOB();
                string[] arayList = g.COM(g._get_origin).Split(' ');
                OrigP.x = double.Parse(arayList[0]);
                OrigP.y = double.Parse(arayList[1]);
                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 == 0) step = g.getSTEP();
                if (job.Length == 0) 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原点坐标)

           

             

  • 相关阅读:
    微信小程序开发入门(六)
    JS计算日期加上指定天数得到新的日期
    Java中substring()
    List集合去除重复数据
    按钮倒计时
    jQuery中each方法
    Math三个函数
    jQuery表单提交
    jQuery 序列化表单数据
    正则取小数点后面几位
  • 原文地址:https://www.cnblogs.com/pcbren/p/9471934.html
Copyright © 2020-2023  润新知