
曾经用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秒