PCB Genesis脚本 C#调用Javascript
曾经用node.js测试写Genesis脚本失败了,这次借助开发PCB规则引擎的机会(基于JS V8引擎与.net深度交互性), 验证一下Javascript是否可用于写Genesis脚本.
一.测试Javascript更改单位
var unit = gen.COM('get_units'); console.log('更改前单位:' +unit); if (unit == 'mm') { gen.COM('units,type=inch'); } else { gen.COM('units,type=mm'); } unit = gen.COM('get_units'); console.log('更改后单位:' +unit);
二.测试Javascript 增加PAD
orignP = new Object(); orignP.x = 0; orignP.y = 0; gen.COM('add_pad,attributes=no,x='+ orignP.x +',y='+ orignP.y +',symbol=r2018'); MoveP = new Object(); for (var i=1;i<= 12;i++) { MoveP.x = orignP.x + 5 * Math.cos(i * 30 * Math.PI / 180); MoveP.y = orignP.y + 5 * Math.sin(i * 30 * Math.PI / 180); gen.COM('add_pad,attributes=no,x='+ MoveP.x +',y='+ MoveP.y +',symbol=r2018'); console.alert('第'+ i +'孔坐标: X ' + Math.round(MoveP.x,3) + ': Y ' + Math.round(MoveP.y)) }
三.测试Javascript 执行COM指令效率
var date1 =new Date(); var StartTime =date1.getSeconds() * 1000 + date1.getMilliseconds(); orignP = new Object(); orignP.x = 0; orignP.y = 0; gen.COM('add_pad,attributes=no,x='+ orignP.x +',y='+ orignP.y +',symbol=r2018'); MoveP = new Object(); for (var j=1;j<= 100;j++) { for (var i=1;i<= 12;i++) { MoveP.x = orignP.x + 5 * Math.cos(i * 30 * Math.PI / 180); MoveP.y = orignP.y + 5 * Math.sin(i * 30 * Math.PI / 180); gen.COM('add_pad,attributes=no,x='+ MoveP.x +',y='+ MoveP.y +',symbol=r2018'); } } var date2=new Date(); var EndTime =date2.getSeconds() * 1000 + date2.getMilliseconds(); var CountTime = EndTime - StartTime; console.alert('总耗时:' + CountTime);
显示层,加120个PAD耗时1.8秒
影藏层,加1200个PAD耗时3.9秒
作者:pcbren 微信号:yadnfku QQ号: 254566449
博客地址:https://www.cnblogs.com/pcbren/
声明:本博客原创文字只代表本人工作中在某一时间内总结的观点或结论,与本人所在单位没有直接利益关系。非商业,未授权,贴子请以现状保留,转载时必须保留此段声明,且在文章页面明显位置给出原文连接。
如果大家感觉我的博文对大家有帮助,请推荐支持一把。