Commit de2bd998 authored by Scott Sun's avatar Scott Sun

scott

parent 8ff10e8d
......@@ -232,7 +232,6 @@ try {
script_info({ msg: "Upload matrix",result_severity:"info" })
global._ERRORMAG = "Error-Upload matrix";
script_info({ progress: 65 })
var matrix = UPLOAD_LAYER_MATRIX({job:job}) // 分析matrix 获得分析后的matrix信息
GEN.openStep({job:job, name:pcs_step})
......@@ -242,14 +241,23 @@ try {
GEN.affectedLayer({affected:'no',mode:'all'})
GEN.workLayer({name:v.odb_name,display_number:2,clear_before:'yes'})
GEN.selClearFeature()
GEN.selAllFeat()
if(GEN.getSelectCount()>0){
// unSelect()
// if(GEN.getSelectCount() > 0){
// GEN.COM("cur_atr_reset")
// GEN.COM("cur_atr_set,attribute=.drill,option=via")
// GEN.COM("sel_change_atr,mode=add")
// }
// GEN.selAllFeat()
var syms = GEN.getLayerSymsHist({job:job,step:pcs_step,layer:v.odb_name});
// var getLayerSymsHist = $.gen.getLayerSymsHist({job:'demo',step:'panel',layer:'l2',options:'break_sr',units:'mm'});
var include_syms = [];
for (var key in syms) {
var info = syms[key];
if(info.size > 5.9055) {
include_syms.push(key)
}
}
GEN.selectByFilter({include_syms:include_syms.join("\\;")})
if(GEN.getSelectCount() > 0){
GEN.COM("cur_atr_reset")
GEN.COM("cur_atr_set,attribute=.drill,option=plated")
GEN.COM("sel_change_atr,mode=add")
}
GEN.clearLayers()
GEN.selClearFeature()
......@@ -501,6 +509,7 @@ try {
script_info({ msg: "PN analysis" })
global._ERRORMAG = "Error-PN analysis";
var config = {
jobInfo: {
layer_count: ["signal","power_ground"], // Board属性的signal或者power_ground层
......@@ -540,12 +549,14 @@ try {
}
console.log("===============================> 2analysis_obj")
// 分析料号info
var jobInfo = {}
Object.keys(config.jobInfo).forEach(function(key){
var props = config.jobInfo[key];
if(props){
try {
console.log("-------------"+key+"-----------");
if(props.hasOwnProperty("api") && props.hasOwnProperty("props")){
jobInfo[key] = analysis_obj["analysis_"+props.api](props.props)
} else if(props.only_value){
......@@ -554,11 +565,12 @@ try {
jobInfo[key] = analysis_obj["analysis_"+key](props)
}
} catch (e) {
IKM.msg(e)
console.log("========================================error:");
jobInfo[key] = "_error"
}
}
})
});
console.log("===================================> 3 jobinfo")
// 过滤掉料号信息的 _todo 和 _error
......@@ -606,10 +618,15 @@ try {
var step = item.name;
if(GEN.isStepExists({job:job, step:step})){
GEN.openStep({job:job, name:step})
drillLayers.forEach(function(layer){
var layer = layer.name;
if(!GEN.isLayerEmpty({job:job,step:step,layer:layer})){
var mv_layer = moveSlotDrls({job:job, step:step, layer:layer})
GEN.COM("tools_set,layer="+layer+",slots=by_length")
GEN.COM("tools_merge_ex,layer="+layer+",mode=merge")
var tool = GEN.getTool({job:job,step:step,layer:layer,units:"mm"}); // {"1":{"count":"01156","num":"1","type":"plated","min_tol":"0","max_tol":"0","finish_size":"100.31","drill_size":"100.31","slot_len":"0","type2":"standard","shape":"hole","bit":0}}
if(!drill_tool_info[layer]){
drill_tool_info[layer] = tool;
......@@ -640,6 +657,10 @@ try {
}
}
}
if(mv_layer) {
GEN.workLayer({name:mv_layer,display_number:2,clear_before:'yes'})
GEN.selCopyOther({dest:'layer_name',target_layer:layer,invert:'no',dx:0,dy:0,size:0})
}
}
})
GEN.closeStep()
......@@ -654,6 +675,7 @@ try {
})
});
var seq_index = 1 ;
// 钻孔管理器信息处理
Object.keys(drill_tool_info).forEach(function(layer){
var datalist = []
var tool_num = 1 ;
......@@ -662,6 +684,9 @@ try {
var drill_type = item.type
if(matrix[layer].type == "laser_drill" && /^[^\d]+(\d+)-(\d+)[^\d]?$/.test(layer_name)){
drill_type = "laser"
if(Number(item.drill_size) >= 150){
drill_type = "plated"
}
var info_drilll = /^[^\d]+(\d+)-(\d+)[^\d]?$/.exec(layer_name);
layer_name = "l" + info_drilll[1] + "-" + info_drilll[2];
} else if(layer_name === "ftdrill"){
......@@ -711,6 +736,7 @@ try {
})
})
console.log("=============================> 6 set smd bga")
script_info({ msg: "SMD&BGA create" })
global._ERRORMAG = "Error-SMD&BGA create";
......@@ -757,10 +783,7 @@ try {
// var symbols_test = GEN.getLayerSymsHist({job:job,step:step,layer:layer},true);
// GEN.INFO({units:"mm", entity_type:'layer', entity_path:job+'/'+step+'/'+layer, data_type:'SYMS_HIST'});
// GEN.INFO_RESULT
// exportInfo({
// layer:layer,
// INFO_RESULT: GEN.INFO_RESULT
// })
// var symbols_tmp = GEN.getLayerSymsHist({job:job,step:step,layer:layer})
// var syms = Object.keys(symbols_tmp)
// var filter_syms = syms.filter(function(item){
......@@ -885,7 +908,6 @@ try {
// }
script_info({ msg: "Signal layer analysis" })
global._ERRORMAG = "Error-Signal layer analysis";
script_info({ progress: 85 })
stepList.forEach(function(step){
GEN.openStep({ job: job, name: step })
......@@ -902,13 +924,14 @@ try {
if(GEN.isLayerExists({job:job, layer:tmp_area_layer})){
GEN.deleteLayer({job:job, layer:[tmp_area_layer]})
}
GEN.copyLayer({source_job:job,source_step:step,source_layer:tmp_gold_info[layer_gold_type],dest_layer:tmp_area_layer,mode:'replace',invert:'no'});
GEN.COM("clip_area_strt")
GEN.COM("clip_area_end,layers_mode=layer_name,layer="+tmp_area_layer+",area=profile,area_type=rectangle,inout=outside,contour_cut=yes,margin=0,feat_types=line\;pad\;surface\;arc\;text")
// var tmp_info = GEN.copperArea({layer1:tmp_gold_info[layer_gold_type],resolution_value:1})
// var tmp_info = GEN.exposedArea({layer1:item.signalL,mask1:tmp_gold_info[layer_gold_type],resolution_value:1})
var tmp_info = GEN.exposedArea({layer1:item.signalL,mask1:tmp_gold_info[layer_gold_type],resolution_value:1})
var tmp_data = {}
var tmp_data = {};
if(layer_gold_type == "top") {
tmp_data.sf_area_ref_layer_front = tmp_gold_info[layer_gold_type]
tmp_data.sf_area_gold_area_front = tmp_info.area
......@@ -966,7 +989,7 @@ try {
jobid: JobId,
layer: item.signalL,
layerinfohash: {
org_min_pad_size: getMinSym(syms)
org_min_pad_size: getMinSym(syms,1)
}
})
if(item.solderL) {
......@@ -979,7 +1002,7 @@ try {
jobid: JobId,
layer: item.signalL,
layerinfohash: {
org_min_pad_sm_opening_size: getMinSym(syms2)
org_min_pad_sm_opening_size: getMinSym(syms2,1)
}
})
GEN.deleteLayer({job:job, layer:item.signalL + "_sm"})
......@@ -990,7 +1013,7 @@ try {
}
})
GEN.clearLayers()
GEN.affectedLayer({ affected: 'no', mode: 'all' })
GEN.affectedLayer({ affected: 'no', mode: 'all' });
console.log("==================================> Drill analysis")
......@@ -1007,6 +1030,7 @@ try {
return {layer:v,symbol:symbol,start:tmp_matrix[v]["drl_start"],end:tmp_matrix[v]["drl_end"]}
})
var drillRes = analysisDrill(drillToSignals,step) // 钻孔分析结果
drillRes.forEach(function(item){
save_layerinfo({
......@@ -1020,6 +1044,23 @@ try {
})
console.log("==================================> chk signals analysis")
// 删除线路层的外形线
if(GEN.isLayerExists({job:job, layer:"out_rout"})){GEN.deleteLayer({job:job, layer:"out_rout"})}
GEN.units({type:"mm"})
GEN.COM("profile_to_rout,layer=out_rout,width=1")
GEN.units({type:"inch"})
GEN.affectedLayer({affected:'no',mode:'all'})
signalLayers.forEach(function(signal){
GEN.workLayer({name:signal,display_number:2,clear_before:'yes'})
GEN.COM("filter_set,filter_name=popup,update_popup=no,feat_types=line")
GEN.selRefFeat({layers:'out_rout',use:'filter',mode:'touch'})
if(GEN.getSelectCount() > 0) {GEN.selDelete()}
GEN.COM("filter_reset,filter_name=popup")
})
// 创建chklist并运行 如果chklist存在先删除
// var tmpitem = {
......@@ -1834,7 +1875,7 @@ function analysis(props){
return "_todo"
}
T_m_p.prototype.analysis_milling_length_card = function(){ // todo
var allStep = [this.pcs_step, this.array_step]
var allStep = [this.pcs_step, this.array_step].filter(function(v){return v})
var res = 0
var that = this;
console.log("============analysis_milling_length_card=============");
......@@ -1912,7 +1953,7 @@ function analysis(props){
if(ret == "no" && hasComp == false) {
var mOuters = this.matrixInfo.mOuters // signalL solderL(null)
var job_tmp = this.job
GEN.openStep({job:job_tmp,name:this.array_step})
GEN.openStep({job:job_tmp,name:step})
GEN.clearLayers()
mOuters.forEach(function(outer_layer){
if(outer_layer.solderL){
......@@ -2286,16 +2327,15 @@ function analysisChkAttr(par) {
step: par.step,
checklist: oChecklistName,
nact: nact,
attr: v + "_min_" + type,
units:"mm"
attr: v + "_min_" + type
})
if (a === "N/A" && /^\d+\.?\d*$/.test(tmp)) {
tmp = Number(tmp)
a = tmp/25.4
a = tmp.toFixed(2)
}
if (/^\d+\.?\d*$/.test(a) && /^\d+\.?\d*$/.test(tmp) && Number(tmp) < Number(a)) {
tmp = Number(tmp)
a = tmp/25.4
a = tmp.toFixed(2)
}
return a
}, "N/A")
......@@ -2308,8 +2348,9 @@ function analysisChkAttr(par) {
return hash
}
function analysisDrill(par, step){
// [{
// "layer": "ftdrill2-3l",
// "layer": " ftdrill2-3l",
// "symbol": "r7.874",
// "start": "l2",
// "end": "l3"
......@@ -2334,6 +2375,7 @@ function analysisDrill(par, step){
GEN.affectedLayer({affected:"no",mode:"all"})
GEN.selClearFeature();
[drill.start,drill.end].forEach(function(item, i){
if(!/^comp_\+_/.test(item)){
GEN.workLayer({name:item,display_number:1,clear_before:"yes"})
GEN.selClearFeature();
GEN.COM("filter_set,filter_name=popup,update_popup=no,feat_types=pad");
......@@ -2385,7 +2427,6 @@ function analysisDrill(par, step){
if(GEN.getSelectCount() > 0){GEN.selDelete()}
})
}
// exportInfo({drill:drill, item:item});
var pads = GEN.getFeatures({job:job,step:step,layer:"temp"}) || [];
pads = pads.filter(function(v){v.size=v.symbol.slice(1)-0 ;return /^r\d/.test(v.symbol)})
......@@ -2408,6 +2449,7 @@ function analysisDrill(par, step){
} else if (i==1){
drill.drl_pad_bot = res
}
}
}
})
GEN.deleteLayer({job:job,step:step,layer:tmplayer})
......@@ -3019,7 +3061,7 @@ function getMinSym(sym) {
if(!info.size) {
var width = Number(info.width)
var height = Number(info.height)
info.size = width > height ? height : width;
info.size = width < height ? height : width;
}
if(info.size) {
if(!min_size){min_size = info.size}
......@@ -3128,3 +3170,44 @@ function sendEmail(msg) {
}
}
}
function moveSlotDrls(props){
var job = props.job;
var step = props.step;
var drl_layer = props.layer;
var flag;
GEN.affectedLayer({affected:'no',mode:'all'})
GEN.workLayer({name:drl_layer,display_number:2,clear_before:'yes'})
GEN.selectByFilter({feat_types:"line"})
if(GEN.getSelectCount() > 1) {
GEN.selClearFeature();
var feats = GEN.getFeatures({job:job, step:step, layer:drl_layer, options:"feat_index", units:"mm"}).filter(function(v){
return v.type == "line"
})
feats.forEach(function(item){
GEN.selClearFeature();
var index = item.index;
// 选择index
GEN.selLayerFeat({layer:drl_layer, index:index,operation:"select"})
var tmp_layer = drl_layer + "_tmp"
if(GEN.isLayerExists({job:job, layer:tmp_layer})){
GEN.deleteLayer({job:job, layer:tmp_layer})
}
GEN.selMoveOther({target_layer:tmp_layer,invert:'no',dx:0,dy:0,size:0})
GEN.workLayer({name:tmp_layer,display_number:2,clear_before:'yes'})
// 参考选择辅助层 include 的移动走
GEN.selRefFeat({layers:drl_layer,use:'filter',mode:"cover"})
if(GEN.getSelectCount() > 0) {
GEN.selMoveOther({target_layer:drl_layer + "_inner_slot",invert:'no',dx:0,dy:0,size:0})
flag = drl_layer + "_inner_slot"
} else {
GEN.selMoveOther({target_layer:drl_layer,invert:'no',dx:0,dy:0,size:0})
}
if(GEN.isLayerExists({job:job, layer:tmp_layer})){
GEN.deleteLayer({job:job, layer:tmp_layer})
}
GEN.selClearFeature();
GEN.workLayer({name:drl_layer,display_number:2,clear_before:'yes'})
})
}
return flag
}
\ No newline at end of file
......@@ -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