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秒

扫描二维码关注公众号,回复: 3634689 查看本文章

 影藏层,加1200个PAD耗时3.9秒

猜你喜欢

转载自www.cnblogs.com/pcbren/p/9819806.html
PCB