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脚本. 一.测试 ...
随机推荐
- layer:好看的弹出窗口
layer是一款web弹层组件,只需在调用时简单地配置相关参数,即可轻松实现丰富与便捷的操作体验. 这是layer的官方地址,里面的使用介绍非常详细(http://layer.layui.com/) ...
- HDU_4826_dp
Labyrinth Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- 27.7 并行语言集成查询(PLinq)
static void Main() { ObsoleteMethods(Assembly.Load("mscorlib.dll")); Console.ReadKey(); } ...
- 293. [NOI2000] 单词查找树——COGS
293. [NOI2000] 单词查找树 ★★ 输入文件:trie.in 输出文件:trie.out 简单对比时间限制:1 s 内存限制:128 MB 在进行文法分析的时候,通常需要检 ...
- 标准C 语言总结
***************C语言****************** --day01-- Linux是一个和Windows类似的操作系统 通常通过终端软件使用Linux操作系统 终端软件里只能使用 ...
- Django REST framework - 解析器和渲染器
目录 Django REST framework - 解析器和渲染器 解析器 Django中的数据解析 DRF中的解析器 渲染器 Django REST framework - 解析器和渲染器 解析器 ...
- ThinkPHP5 自定义异常
1.配置config.php 自定义异常路径: // 默认AJAX 数据返回格式,可选json xml ...'default_ajax_return' => 'json', 'exceptio ...
- Ch’s gift
Ch’s gift Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Proble ...
- NFS 文件系统的搭建
教程: 一.配置linux内核: 进入打过at91补丁的linux2.6内核源代码树的根目录 make menuconfig进入内核配置程序. 1. Networking ---> Netwo ...
- http-runtime属性
配置httpRuntime也可以让FileUpload上传更大的文件,不过设置太大了会因用户将大量文件传递到该服务器而导致的拒绝服务攻击(属性有说明) 属性 属性 选项 说明 appRequestQu ...