Commit de2bd998 authored by Scott Sun's avatar Scott Sun

scott

parent 8ff10e8d
This diff is collapsed.
......@@ -399,7 +399,7 @@ try {
global._ERRORMAG = "Failed to create profile";
script_info({ progress: 55 })
var all_layer = Object.keys(tmp_matrix);
var all_layer = Object.keys(GEN.getMatrix({job:job}));
// 没有outline层
// 判断有没有profile
var tmp_step = GEN.getStepList({job:job})[0]
......@@ -431,7 +431,15 @@ try {
}
else { createOutline({job:job, step:tmp_step, profileRule:profileRule}) }
} else {
// var hasFab = false;
// all_layer.forEach(function(v){
// if(/fab/.test(v)){hasFab = true}
// })
// if(hasFab){
// throw "创建profile失败,请手动创建好profile后仅执行分析步骤"
// } else {
createOutline({job:job, step:tmp_step, profileRule:profileRule})
// }
}
} else if (/^wistron$/ig.test(par.customer)) {
var contours = all_layer.filter(function(layer){return /contour/.test(layer)})
......@@ -454,19 +462,44 @@ try {
createOutline({job:job, step:tmp_step, profileRule:profileRule})
}
} else if (/^vivo$/ig.test(par.customer)) {
var drilldrawings = all_layer.filter(function(v){return /^drilldrawing\d/.test(v)})
var drilldrawinglayer;
if(drilldrawings.length > 0) {
drilldrawings = drilldrawings.map(function(v){
GEN.workLayer({name:v,display_number:2,clear_before:'yes'})
GEN.selAllFeat();
var count = Number(GEN.getSelectCount());
if (count == 0) {count = 9999999}
GEN.selClearFeature()
return {
name: v,
count: count
}
})
drilldrawings.sort(function(a,b){return a.count - b.count})
drilldrawinglayer = drilldrawings[0].name
}
// 判断有没有line层
if(all_layer.indexOf("line") >= 0){
GEN.workLayer({name:"line",display_number:2,clear_before:'yes'})
GEN.selAllFeat()
if(GEN.getSelectCount() > 0) { GEN.COM("sel_create_profile,create_profile_with_holes=no") }
} else if (drilldrawinglayer){
GEN.workLayer({name:drilldrawinglayer,display_number:2,clear_before:'yes'})
GEN.selAllFeat()
if(GEN.getSelectCount() > 0) {
createOutline({job:job, step:tmp_step, profileRule:["^"+drilldrawinglayer+"$"]})
}
else { createOutline({job:job, step:tmp_step, profileRule:profileRule}) }
} else if(all_layer.indexOf("array") >= 0) {
GEN.workLayer({name:"array",display_number:2,clear_before:'yes'})
GEN.selAllFeat()
if(GEN.getSelectCount() > 0) {
// GEN.COM("sel_create_profile,create_profile_with_holes=no");
// if(!hasProfle({job:job, step:tmp_step})){
GEN.COM("sel_create_profile,create_profile_with_holes=no");
if(!hasProfle({job:job, step:tmp_step})){
createOutline({job:job, step:tmp_step, profileRule:["^array$"]})
// }
}
}
else { createOutline({job:job, step:tmp_step, profileRule:profileRule}) }
}else if(all_layer.indexOf("top") >= 0) {
......@@ -647,14 +680,20 @@ catch (e) {
}
function checkIn(){
GEN.COM("open_job,job="+Job+",open_win=no,disk_map=,job_map=")
GEN.AUX("set_group,group=99")
GEN.COM("close_job,job="+Job+"")
GEN.COM("disp_on")
GEN.COM("origin_on")
GEN.COM("disp_on")
GEN.COM("origin_on")
GEN.COM("checkin_closed_job,job="+Job);
db.query("",function(q){
return q.insertRow({
table:'pdm_aimdfm_task',
data:{
job_id:JobId,
flow_id:13,
task_title: Job + ":checkin",
status: 'waiting',
user_name: "Admin",
user_id: 1
}
})
});
}
function tlNameMatrix(props){ // 设置标准名
......@@ -1108,10 +1147,12 @@ function createOutline(props){
selCopyLayer({job:job,layer:l})
GEN.workLayer({name:l,display_number:2,clear_before:"yes"})
GEN.selClearFeature()
GEN.saveJob({job:job})
if(GEN.GEN_TYPE == "genesis"){
GEN.selCreateProfile()
} else {
GEN.COM("profile_limits,layers="+l+",type=lyrfilter,margin=0")
GEN.COM("sel_create_profile,create_profile_with_holes=no")
// GEN.COM("profile_limits,layers="+l+",type=lyrfilter,margin=0")
}
GEN.selectByFilter({profile:"in"})
if(GEN.getSelectCount()> 0){GEN.selDelete()}
......
......@@ -87,7 +87,7 @@ if (mode === "aimdfm") {
}
var Status = 'ok';
var resultData = [];
var import_info = []; // 存储导入文件的信息
var import_info = [];
var inputState = [];
var cam_workflow_info = IKM.get_jobinfo({jobid:JobId, jobinfo:"cam_workflow_info"});
if(cam_workflow_info){
......@@ -120,7 +120,7 @@ try {
console.log("========================db");
par.db = "genesis"
};
var db_customer = db.query("",function(q){ // 获取客户
var db_customer = db.query("",function(q){
return q.selectValue({
table:'pdm_job',
field:'customer_code',
......@@ -135,7 +135,7 @@ try {
par.customer = db_customer
}
par.customer = par.customer[0].toUpperCase()+par.customer.slice(1).toLowerCase()
var cfg = db.query("",function(q){ // 获取脚本配置
var cfg = db.query("",function(q){
return q.selectValue({
table:'pub_conf',
field:'text_data',
......@@ -146,7 +146,7 @@ try {
script_info({ msg: "Find customer config", result_severity:"error" });
global._ERRORMAG = "No customer config was found";
throw "cfg can not find"}
var config = eval(cfg); // 解析配置
var config = eval(cfg);
if(!config.hasOwnProperty("customer")){
script_info({ msg: "Find customer config", result_severity:"error" });
global._ERRORMAG = "No customer config was found";
......@@ -155,11 +155,11 @@ try {
if(_.isEmpty(job)) throw "没有传入料号名!";
job = job.toLowerCase()
// 如果genesis已经存在这个料号
err = delSameJob({job:job,delSame:config.delSameJob}); if(err){throw err}; // 删除相同料号
var custCfg = config.customer[par.customer] // 获取该客户的配置
err = delSameJob({job:job,delSame:config.delSameJob}); if(err){throw err};
var custCfg = config.customer[par.customer]
if(!custCfg){throw "customer config error:"+par.customer}
custCfg.db = par.db || custCfg.db
var step = custCfg.step.toLowerCase() || "cad"; // 获取step
var step = custCfg.step.toLowerCase() || "cad";
// 获取路径下文件信息
var path = par.path
if(!fs.exists(path)){
......@@ -167,9 +167,18 @@ try {
global._ERRORMAG = "No PN file was found in folder";
throw "path error"}
var pathInfo = fs.listDir(path + "/" + db_customer.toLowerCase(), 1)
// 判断存不存在料号文件
// var vc_position = db.query("",function(q){
// return q.selectValue({
// table:'pdm_job',
// field:'version',
// where:{id : JobId}
// })
// });
var job_file_baseName = job
// if(vc_position && vc_position != "" && !(/null/ig.test(vc_position))){
// job_file_baseName = job_file_baseName + "_" + vc_position
// }
var jobFile = pathInfo.filter(function(v){return v.baseName.toLowerCase() == job_file_baseName})
if(jobFile.length == 0){
script_info({ msg: "Find PN folder", result_severity:"error" });
......@@ -187,11 +196,11 @@ try {
// 将jobFile下的zip解压
script_info({ msg: "unzip the file", result_severity:"info" })
global._ERRORMAG = "Failed to unzip the file";
decompression(jobFile[0].path, []); // 递归解压 料号文件里的压缩包
decompression(jobFile[0].path, []);
changePath2(jobFile[0].path) // 修改不规范的路径
changePath2(jobFile[0].path)
var job_attrs = db.query("",function(q){ // 设置料号attrs
var job_attrs = db.query("",function(q){
return q.selectValue({
table:'pdm_job',
field_format:{job_attrs:'json'},
......@@ -210,6 +219,7 @@ try {
})
});
jobFiles = fs.listDir(jobFile[0].path)
// 分析料号文件 得到料号导入信息 导入类型
......@@ -250,7 +260,8 @@ try {
}
})
var step_all = [];
// 分析arr_job 和 pcs_job
// 分析arr_job 和 pcs_job;
jobs = jobs.filter(function(v){return GEN.isJobExists({job:v.name})});
jobs.forEach(function(item){
var jobname = item.name
GEN.openJob({job:jobname});
......@@ -272,14 +283,14 @@ try {
})
}
})
})
});
var pcs_job_name_tmp = step_all[0].jobname
step_all = step_all.filter(function(item){
return item.jobname != pcs_job_name_tmp
})
var pcs_job = jobs.filter(function(item){
return item.name == pcs_job_name_tmp
})[0]
})[0];
importJob({name:job,db:custCfg.db,path:pcs_job.path},config.delSameJob)
GEN.openJob({job:job});
step_all.forEach(function(item){
......@@ -338,7 +349,7 @@ try {
var gerberInfo = jobInfo.data.map(function(item){
var gerberCfg = JSON.parse(JSON.stringify(item.format));
var file = item.file
gerberCfg.layer = file.name.toLowerCase().split(" ").join("-")
gerberCfg.layer = file.name.toLowerCase().split(" ").join("-").replace(/[()]/ig,"_")
gerberCfg.path = file.path
gerberCfg.format = item.type
gerberCfg.job = job
......@@ -637,19 +648,22 @@ function decompression(path, zips) {
var files = fs.listDir(path)
var count = 0;
var zipfiles = files.filter(function(item){
if (/zip/ig.test(item.suffix) || item.suffix == "rar" || item.suffix=="7z" || item.suffix == "ZIP") {
if (/zip/ig.test(item.suffix) || item.suffix == "rar" || item.suffix=="7z") {
inputState.push(item.suffix);
console.log("--->path:" + item.path)
if(zips.indexOf(item.path) < 0){
zips.push(item.path);
if(item.name.length >= 30 && !/�|\?/.test(item.name)) {
//if(item.name.length >= 30 && !/�|\?/.test(item.name)) {
if(/\w/.test(item.name)){
var mvname = "custom" + count + "." + item.suffix;
count++;
fs.rename(item.path, item.dir + "/" + mvname);
fs.copyFile(item.path,ATS_AIM_checkin,true);
item.path = item.dir + "/" + mvname
zips.push(item.path);
}
var dir_name = item.path.replace(/\.(zipx|zip|7z|rar)$/ig, "");
autoUn(item.path, dir_name);
autoUn(item.path, dir_name,item.dir);
return true
}
}
......@@ -678,13 +692,43 @@ function changePath(path) {
})
}
function autoUn(path, dirname) {
function autoUn(path, dirname, dir) {
// 解压密码逻辑 先获取 /home/toplinker/samba/unzip_pwd.txt
var pw = "/home/toplinker/samba/unzip_pwd.txt";
var pws = fs.readFile(pw);
var strs = pws.split("\n")
var ret = {};
strs.map(function(v) {
var tmp = v.split(/\s+/);
ret[tmp[0].trim()] = tmp[1].trim()
})
var pwd;
if(ret[Job]){
pwd = ret[Job]
}
if(fs.exists(dir + "/pw.txt")){
pwd = fs.readFile(dir + "/pw.txt");
}
if(/\.rar$/.test(path)){
fs.mkdir(dirname)
if(pwd){
process.exec('/opt/rar/unrar', ['x' , path, dirname, "-o+","-p"+pwd])
} else {
process.exec('/opt/rar/unrar', ['x' , path, dirname, "-o+"])
}
} else {
if(pwd){
process.exec('/usr/local/lib/p7zip/7za', ['x' , path, "-o"+dirname, "-aoa", "-p"+pwd])
} else {
process.exec('/usr/local/lib/p7zip/7za', ['x' , path, "-o"+dirname, "-aoa"])
}
}
}
function exportInfo(info){
......
......@@ -448,8 +448,6 @@
}
],
"tl_name": [
{"orig_name" : ["^comp_+_top$"], "tl_name" : "comp_+_top" },
{"orig_name" : ["^comp_+_bot$"], "tl_name" : "comp_+_bot" },
{"orig_name" : ["top_enig","top-enig","enig_top"], "tl_name" : "enig_top" },
{"orig_name" : ["bot_enig","bot-enig","enig_bot"], "tl_name" : "enig_bot" },
{"orig_name" : ["top_(?:solder)paste","^spt(?:\\.gbr)?$","^past_top$"], "tl_name" : "past_top" },
......@@ -459,7 +457,7 @@
{"orig_name" : ["top_(?:solder)mask","^smt(?:\\.gbr)?$","^sm_top$"], "tl_name" : "sm_top" },
{"orig_name" : ["bot(?:tom)?_(?:solder)mask","^smb(?:\\.gbr)?$","^sm_botm$"], "tl_name" : "sm_botm" },
{"orig_name" : ["^top$","^top\\.gbr$","^top\\.art$"], "tl_name" : "top" },
{"orig_name" : ["^drill(?:\\.drl)?$"], "tl_name" : "drill" },
{"orig_name" : "^drill(?:\\.drl)$", "tl_name" : "drill" },
{"orig_name" : ["^board_outline$","outline\\.gbr|outline\\.art","^outline$"], "tl_name" : "outline" },
{"orig_name" : ["^rout$","\\.rou$"], "tl_name" : "rout" },
{"orig_name" : ["^bottom$","^bottom\\.gbr$","^bottom\\.art$"], "tl_name" : "bottom" },
......@@ -597,27 +595,27 @@
}
],
"tl_name": [
{"orig_name" : ["^comp_+_top$"], "tl_name" : "comp_+_top" },
{"orig_name" : ["^comp_+_bot$"], "tl_name" : "comp_+_bot" },
{"orig_name" : ["^pm_top","spcs\\.gbr$|paste.pri|pripaste|solderpaste_top","ppst\\.art|spt\\.art","assy[_-]?top\\.art","past_top","paste_top|spt"], "tl_name" : "past_top" },
{"orig_name" : ["^pm_bot","spps\\.gbr$|paste.sec|secpaste|solderpaste_bottom","spst\\.art|spb\\.art","assy[_-]?bott?o?m?\\.art","past_bot","paste_bot|spb"], "tl_name" : "past_botm" },
{"orig_name" : ["silk.pri","pleg\\.art|sst\\.art","^ss_top|sscs\\.gbr$","silk_top|sst"], "tl_name" : "silk_top" },
{"orig_name" : ["silk.sec","sleg\\.art|ssb\\.art","^ss_bot|ssps\\.gbr$","silk_bot|ssb"], "tl_name" : "silk_bot" },
{"orig_name" : ["^tm\\.art$|\\.st$|\\.tsm$|soldermask_top","mask.top\\.art|smt\\.art","mask.pri\\.art|smcs\\.gbr$","psm\\.art","sm_top|^smt"], "tl_name" : "sm_top" },
{"orig_name" : ["^bm\\.art$|\\.sb$|\\.bsm$|soldermask_bottom","mask.bot\\.art|smb\\.art","mask.sec\\.art|smps\\.gbr$","ssm\\.art","sm_bot|^smb"], "tl_name" : "sm_botm" },
{"orig_name" : ["^(?:(?!assy|enig|pm|past|ss|silk|sm|soldermask).)+_top\.art$","^top$","^top.art$"], "tl_name" : "top" },
{"orig_name" : ["^(?:(?!assy|enig|pm|past|ss|silk|sm|soldermask).)+_bottom\.art$","^bot\\.art$","^bottom$","^bottom\\.art$"], "tl_name" : "bottom" },
{"orig_name" : ["^(?:(?!assy|enig|pm|past|ss|silk|sm|soldermask|via|plug).)+_top\.art$","^surface$","^top$","^top.art$|^pri\\.art$"], "tl_name" : "top" },
{"orig_name" : ["^(?:(?!assy|enig|pm|past|ss|silk|sm|soldermask|via|plug).)+_bottom\.art$","^base$","^bot\\.art$","^bottom$","^bottom\\.art$|^sec\\.art$"], "tl_name" : "bottom" },
{"orig_name" : ["int(\\d+)\\.art"], "tl_name" : "l_($1+1)"},
{"orig_name" : ["_top_lay(\\d+)"], "tl_name" : "d_1-($1)"},
{"orig_name" : ["_lay(\\d+)_bot"], "tl_name" : "d_($1)-($1+1)"},
{"orig_name" : ["_lay(\\d+)_lay(\\d+)","_l?(\\d+)_l?(\\d+)$","\\.ncd(\\d)-(\\d)$","\\.d(\\d+)-(\\d+)$","-(\\d+)-(\\d+)\\.drl$","(\\d+)-(\\d+)-laser\\.drl$","d(\\d+)-(\\d+)"], "tl_name" : "d_($1)-($2)"},
{"orig_name" : ["lay-(\\d+)\\.art$","^(?:signal|plane|layer)_(\\d+)$","^l(\\d+)$","_l(\\d+)-.{3}\\.art$","lay(\\d+)\\.art$","l(\\d+).*\\.gbr$","^0?(\\d+)[\\D].*\\.art$","\\.p(\\d+)p?$","\\.l(\\d+)$","^l(\\d+).*\\.art$","^l(\\d+)\\.art$","^0(\\d+).*ccp_ms","^s(\\d+)\\.art","laye?r?(\\d+)","layer_(\\d+)"], "tl_name" : "l_($1)"},
{"orig_name" : ["(\\d+)-(\\d+)-((?:(?!laser)[a-zA-Z])+)\\.drl$","\\.d(\\d+)-(\\d+)((?:(?!laser)[a-zA-Z])+)$"], "tl_name" : "d($1)-($2)-($3)"},
{"orig_name" : ["_l?(\\d+)_l?(\\d+)$","\\.ncd(\\d)-(\\d)$","\\.d(\\d+)-(\\d+)$","-(\\d+)-(\\d+)\\.drl$","(\\d+)-(\\d+)-laser\\.drl$","d(\\d+)-(\\d+)"], "tl_name" : "d_($1)-($2)"},
{"orig_name" : ["^nth_layer$","^drill$","\\.ncdthru$"], "tl_name" : "drill" },
{"orig_name" : ["\\.rou$","^rout$"], "tl_name" : "rout" },
{"orig_name" : "fab.art", "tl_name" : "fab.art" },
{"orig_name" : ["multipack.art","^array$"], "tl_name" : "array" },
{"orig_name" : ["^ro\\.art$","^contour\\.gdo$","\\.R1$","outline"], "tl_name" : "outline" },
{"orig_name" : ["^pst\\.art$","top-enig","enig_top"], "tl_name" : "enig_top" },
{"orig_name" : ["^sst\\.art$","bot-enig","enig_bot"], "tl_name" : "enig_bot" },
{"orig_name" : ["top-enig","enig_top"], "tl_name" : "enig_top" },
{"orig_name" : ["bot-enig","enig_bot"], "tl_name" : "enig_bot" },
{"orig_name" : ["_top_l(\\d+)"], "tl_name" : "d_1-($1)"},
{"orig_name" : ["_l(\\d+)_bottom"], "tl_name" : "d_($1)-($1+1)"}
],
......@@ -827,8 +825,6 @@
}
],
"tl_name": [
{"orig_name" : ["^comp_+_top$"], "tl_name" : "comp_+_top" },
{"orig_name" : ["^comp_+_bot$"], "tl_name" : "comp_+_bot" },
{"orig_name" : ["^spt$|^pmt\\.art$","\\.pma$|\\.spa$","paste.?top|soldPasteTop|pastemask.?top","past_top"], "tl_name" : "past_top" },
{"orig_name" : ["^spb$|^pmb\\.art$","\\.pmb$|\\.spb$","paste.?bot|soldPasteBot|pastemask.?bot","past_botm"], "tl_name" : "past_botm" },
{"orig_name" : ["sst|tsilk|silktop","^sst\\.art$","\\.ssa$","silkscrntop|silkscreentop","silk.top|silk-top"], "tl_name" : "silk_top" },
......@@ -901,8 +897,6 @@
}
],
"tl_name": [
{"orig_name" : ["^comp_+_top$"], "tl_name" : "comp_+_top" },
{"orig_name" : ["^comp_+_bot$"], "tl_name" : "comp_+_bot" },
{"orig_name" : ["osp-top\\.pho","solderpastetop","past_top"], "tl_name" : "past_top" },
{"orig_name" : ["osp-bottom\\.pho","solderpastebottom","past_botm"], "tl_name" : "past_botm" },
{"orig_name" : ["pleg\\.art","^ss_top","silk_top"], "tl_name" : "silk_top" },
......@@ -975,8 +969,6 @@
}
],
"tl_name": [
{"orig_name" : ["^comp_+_top$"], "tl_name" : "comp_+_top" },
{"orig_name" : ["^comp_+_bot$"], "tl_name" : "comp_+_bot" },
{"orig_name" : ["pasttop\\.art","past_top"], "tl_name" : "past_top" },
{"orig_name" : ["pastbotm\\.art","past_bot"], "tl_name" : "past_botm" },
{"orig_name" : ["^silktop\\.art$","silk_top"], "tl_name" : "silk_top" },
......@@ -1089,7 +1081,6 @@
}
},
"data_format": [
{"tl_name":"comp_\\+_top" , "new_name":"comp_+_top" , "attr":{}},
{"tl_name":"enig_top" , "new_name":"enig_top" , "attr":{ "context":"board", "type":"document" }},
{"tl_name":"past_top" , "new_name":"past_top" , "attr":{ "context":"board", "type":"solder_paste" }},
{"tl_name":"silk_top" , "new_name":"silk_top" , "attr":{ "context":"board", "type":"silk_screen" }},
......@@ -1101,7 +1092,6 @@
{"tl_name":"silk_bot" , "new_name":"silk_bot" , "attr":{ "context":"board", "type":"silk_screen" }},
{"tl_name":"past_botm" , "new_name":"past_botm" , "attr":{ "context":"board", "type":"solder_paste" }},
{"tl_name":"enig_bot" , "new_name":"enig_bot" , "attr":{ "context":"board", "type":"document" }},
{"tl_name":"comp_\\+_bot" , "new_name":"comp_+_bot" , "attr":{}},
{"tl_name":"d_(\\d+)-(\\d+)","new_name":"ftdrill($1)-($2)l" ,"attr":{"context":"board","type":"drill"}},
{"tl_name":"d(\\d+)-(\\d+)-(.*)","new_name":"ftdrill($1)-($2)-($3)" ,"attr":{"context":"board","type":"drill"}},
{"tl_name":"drill","new_name":"ftdrill" ,"attr":{"context":"board","type":"drill"}},
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment