1. 程式人生 > >PCB Genesis指令碼 C#呼叫Javascript

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秒