一.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原点坐标)