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++枚举变量初始值
#include <iostream> // std::cout, std::boolalpha, std::noboolalpha enum foo { c = -1, a = 1, b ...
- 报错:command not found
linux中如果是最小化安装的系统,执行命令的时候很多会出现没找到命令 [root@localhost ~]# mtr -bash: mtr: command not found [root@loca ...
- ie9以下提示用户升级浏览器
<!--[if lt IE 9]> <div style='border: 4px solid #FFF500; background: #FDFDC8; text-align: c ...
- sqlalchemy子查询
使用subquery() 要使用c来定位上一个子句的属性 s1 = session.query(m.a,m.b).filter().subquery() s2 = session.query(s1.c ...
- 求n!(高精度问题)
#include <iostream> #include <stdio.h> #define MAX 10000 using namespace std; void Mul(i ...
- CentOS与FreeBSD环境下安装filebeat
业务服务器CentOS与FreeBSD共存(痛苦囧...) CentOS rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch ...
- 第五节:DataFrame聚合函数
- 【Codeforces 158C】Cd and pwd commands
[链接] 我是链接,点我呀:) [题意] 让你实现Shell的cd和pwd操作 [题解] 用一个list表示当前的路径 如果路径以/开头则表示需要清空当前路径重新走路 否则在原来路径的基础上继续加就可 ...
- bupt summer training for 16 #8 ——字符串处理
https://vjudge.net/contest/175596#overview A.设第i次出现的位置左右端点分别为Li,Ri 初始化L0 = 0,则有ans = sum{ (L[i] - L[ ...
- ggplot画基本图形类型
df<-data.frame( x=c(3,1,5), y=c(2,4,6), label=c("a","b","c"))p<- ...