/*
NAME:
DESCRIPTION: 导入gerber资料
PARAMETER:
[
{
name : 'rename_layer_rule',
title : '原始/正式层名规则',
type : 'TextEdit',
property:{tool_tip:"参数配置:{rule1:[{orig_name:'org',new_name:'new'},..],rule2:[]..},注意引号要用单引号"},
setter:function(obj,value,self){
obj.setPlainText(value);
},
getter:function(obj,self){
return obj.plainText
}
},
{
name : 'ori_step',
type : 'LineEdit',
title : '原稿step名称',
pack : {row:0,column:1},
property:{tool_tip:'若为空,则默认ori'},
},
{
name : 'db',
type : 'LineEdit',
title : 'genesis db',
pack : {row:0,column:1},
property:{tool_tip:'genesis新料号存放db,未设定则默认为genesis'},
},
]
HELP:
功能简介
导入gerber资料以及合并、改名、排序
参数配置
● 无
注意事项
● 无
*/
var $ = require('topcam.scriptfunc').argv();
var ikm = $.ikm;
var gen = $.gen;
var gui = $.gui;
var fs = require('fs');
var Job = 'demo1', step = 'orig';
try {
var ReNameRule1 = [
{ orig_name : "pasttop.art", new_name : "past_top" },
{ orig_name : "pleg.art", new_name : "silk_top" },
{ orig_name : "soldtop.art", new_name : "sm_top" },
{ orig_name : "art(\\d+)\\.art", new_name : "layer_(\\d)" },
{ orig_name : "soldbotm.art", new_name : "sm_botm" },
{ orig_name : "sleg.art", new_name : "silk_bot" },
{ orig_name : "pastbotm.art", new_name : "past_botm" },
{ orig_name : "multipack.art", new_name : "array" },
{ orig_name : "outline.art", new_name : "outline" },
{ orig_name : "fab.art", new_name : "fab.art" },
{ orig_name : "top-enig", new_name : "top-enig" },
{ orig_name : "bot-enig", new_name : "bot-enig" },
{ orig_name : "fab_page2", new_name : "fab_page2" }
];
var reNameRules = {
ReNameRule1: ReNameRule1
}
var matrix = gen.getMatrix({job:Job})
var matrixNames = Object.keys(matrix).map(function(key){
return matrix[key]['name']
})
function getRenameCount(namelist, rule){ // 传入名称列表 和 命名 规则 得到符合规则的名称列表
var res = [];
var max = {index:-1,value:"0"};
namelist.forEach(function(v){
rule.forEach(function(rule){
var evalReg = "/" + rule.orig_name + "/ig.test(v)";
if(eval(evalReg)){
var new_name;
if(v === rule.orig_name){
new_name = rule.new_name;
} else {
max.index++;
var evaltmp = "/" + rule.orig_name + "/ig.exec(v)";
var tmp = eval(evaltmp);
if(Number(tmp[1])>Number(max.value)){
max.value = tmp[1];
}
if(tmp[1] <= 1){
new_name = "top";
} else {
new_name = rule.new_name.replace("(\\d)",tmp[1]);
}
}
res.push({
orig_name: v,
new_name: new_name
})
}
})
})
res[max.index]["new_name"] = "bottom";
return res;
}
var reNameList = []; // 记录匹配程度最高的改名结果
Object.keys(reNameRules).forEach(function(key){
var rule = reNameRules[key];
var renames = getRenameCount(matrixNames,rule);
if(renames.length > reNameList.length){
reNameList = renames;
}
})
// 更改层名
for(var i in reNameList){
gen.renameLayer({job:Job,layer:reNameList[i].orig_name,new_name:reNameList[i].new_name})
}
gui.msg('end')
return 'done';
}
catch (error) {
gui.msg(error);
return 'error';
}