Commit c463b267 authored by Scott Sun's avatar Scott Sun

scott

parents bf61f734 171681b2
104: d xx - xx -np
\ No newline at end of file
...@@ -135,8 +135,7 @@ var resultData = []; ...@@ -135,8 +135,7 @@ var resultData = [];
var ALL = {} var ALL = {}
var Omatrix = {}; var Omatrix = {};
try { try {
script_info({ result_severity: "analysis start" })
script_info({ progress: 65 })
console.log("=============================================>anaysis_start"); console.log("=============================================>anaysis_start");
var par = PAR; var par = PAR;
var vc_src_01005_pad_result = par.vc_src_01005_pad_result var vc_src_01005_pad_result = par.vc_src_01005_pad_result
...@@ -151,6 +150,8 @@ try { ...@@ -151,6 +150,8 @@ try {
// 检查料号是否能够check out // 检查料号是否能够check out
if(GEN.checkInout({job:job,mode:"test"}) != 0){ throw "the job check" } if(GEN.checkInout({job:job,mode:"test"}) != 0){ throw "the job check" }
GEN.checkInout({job:job,mode:"out"}); GEN.checkInout({job:job,mode:"out"});
script_info({ result_severity: "analysis start" })
script_info({ progress: 65 })
var pcs_step = par.pcs_step == "" ? "cad" : par.pcs_step; var pcs_step = par.pcs_step == "" ? "cad" : par.pcs_step;
var array_step = par.array_step == "" ? "stp" : par.array_step; var array_step = par.array_step == "" ? "stp" : par.array_step;
var step_list = GEN.getStepList({job:job}) var step_list = GEN.getStepList({job:job})
...@@ -174,6 +175,7 @@ try { ...@@ -174,6 +175,7 @@ try {
if(GEN.getSelectCount()>0){ if(GEN.getSelectCount()>0){
// unSelect() // unSelect()
// if(GEN.getSelectCount() > 0){ // if(GEN.getSelectCount() > 0){
// GEN.COM("cur_atr_reset")
// GEN.COM("cur_atr_set,attribute=.drill,option=via") // GEN.COM("cur_atr_set,attribute=.drill,option=via")
// GEN.COM("sel_change_atr,mode=add") // GEN.COM("sel_change_atr,mode=add")
// } // }
...@@ -195,6 +197,7 @@ try { ...@@ -195,6 +197,7 @@ try {
if(GEN.getSelectCount()>0){ if(GEN.getSelectCount()>0){
// unSelect() // unSelect()
// if(GEN.getSelectCount() > 0){ // if(GEN.getSelectCount() > 0){
// GEN.COM("cur_atr_reset")
// GEN.COM("cur_atr_set,attribute=.drill,option=plated") // GEN.COM("cur_atr_set,attribute=.drill,option=plated")
// GEN.COM("sel_change_atr,mode=add") // GEN.COM("sel_change_atr,mode=add")
// } // }
...@@ -203,6 +206,7 @@ try { ...@@ -203,6 +206,7 @@ try {
if(GEN.getSelectCount() > 0){ if(GEN.getSelectCount() > 0){
// unSelect() // unSelect()
// if(GEN.getSelectCount() > 0){ // if(GEN.getSelectCount() > 0){
// GEN.COM("cur_atr_reset")
// GEN.COM("cur_atr_set,attribute=.drill,option=non_plated") // GEN.COM("cur_atr_set,attribute=.drill,option=non_plated")
// GEN.COM("sel_change_atr,mode=add") // GEN.COM("sel_change_atr,mode=add")
// } // }
...@@ -2105,6 +2109,7 @@ function min_symbols_anal(props){ // 分析最 symbols ...@@ -2105,6 +2109,7 @@ function min_symbols_anal(props){ // 分析最 symbols
GEN.workLayer({name:solderL_tmp,display_number:2,clear_before:"yes"}) GEN.workLayer({name:solderL_tmp,display_number:2,clear_before:"yes"})
GEN.selContourize() GEN.selContourize()
GEN.COM("sel_cont2pad,match_tol=0,restriction=,min_size=5,max_size=100,suffix=+++") GEN.COM("sel_cont2pad,match_tol=0,restriction=,min_size=5,max_size=100,suffix=+++")
GEN.COM("cur_atr_reset")
GEN.COM("cur_atr_set,attribute=.smd") GEN.COM("cur_atr_set,attribute=.smd")
GEN.COM("sel_change_atr,mode=add") GEN.COM("sel_change_atr,mode=add")
var ck = "tmp_chk" var ck = "tmp_chk"
...@@ -2251,6 +2256,7 @@ function all_bga_min_pitch_anal(props){ // 分析所有bga中间距最小的 ...@@ -2251,6 +2256,7 @@ function all_bga_min_pitch_anal(props){ // 分析所有bga中间距最小的
GEN.workLayer({name:solder_layer_tmp,display_number:2,clear_before:"yes"}) GEN.workLayer({name:solder_layer_tmp,display_number:2,clear_before:"yes"})
GEN.selContourize() GEN.selContourize()
GEN.COM("sel_cont2pad,match_tol=0,restriction=,min_size=5,max_size=100,suffix=+++") GEN.COM("sel_cont2pad,match_tol=0,restriction=,min_size=5,max_size=100,suffix=+++")
GEN.COM("cur_atr_reset")
GEN.COM("cur_atr_set,attribute=.smd") GEN.COM("cur_atr_set,attribute=.smd")
GEN.COM("sel_change_atr,mode=add") GEN.COM("sel_change_atr,mode=add")
var ck = "tmp_chk" var ck = "tmp_chk"
......
...@@ -221,9 +221,7 @@ try { ...@@ -221,9 +221,7 @@ try {
if(ret.err){throw err} if(ret.err){throw err}
var after_sort_matrix = ret.sortNames var after_sort_matrix = ret.sortNames
// 设置钻孔
err = setDrill({job:job, matrix:after_sort_matrix})
if(err){throw err}
// 改名 // 改名
script_info({ result_severity: "format rename" }) script_info({ result_severity: "format rename" })
...@@ -231,6 +229,11 @@ try { ...@@ -231,6 +229,11 @@ try {
err = reName({job:job, matrix:after_sort_matrix, cfg:format_cfg}) err = reName({job:job, matrix:after_sort_matrix, cfg:format_cfg})
if(err){throw err} if(err){throw err}
// 设置钻孔
err = setDrill({job:job})
if(err){throw err}
var tmp_matrix = GEN.getMatrix({job:job}) var tmp_matrix = GEN.getMatrix({job:job})
// 钻孔名称再次更改 // 钻孔名称再次更改
...@@ -250,6 +253,7 @@ try { ...@@ -250,6 +253,7 @@ try {
if (ftdrill_layer[ftdrill_layer.length-1]!= v){ if (ftdrill_layer[ftdrill_layer.length-1]!= v){
GEN.matrixMoveRow({ job:job,layer:"ftdrill",after:ftdrill_layer[ftdrill_layer.length-1] }) GEN.matrixMoveRow({ job:job,layer:"ftdrill",after:ftdrill_layer[ftdrill_layer.length-1] })
} }
hasMainDrill = !hasMainDrill
} else if(chabie>1 && chabie < layer_count - 1){ } else if(chabie>1 && chabie < layer_count - 1){
// 改名 // 改名
GEN.renameLayer({job:job,layer:v,new_name:v.substr(0,v.length-1)}) GEN.renameLayer({job:job,layer:v,new_name:v.substr(0,v.length-1)})
...@@ -272,6 +276,7 @@ try { ...@@ -272,6 +276,7 @@ try {
createOutline({job:job, step:tmp_step, matrix: tmp_matrix, profileRule:profileRule}) createOutline({job:job, step:tmp_step, matrix: tmp_matrix, profileRule:profileRule})
var hasProfile = GEN.getProfile({job:job, step:tmp_step}) var hasProfile = GEN.getProfile({job:job, step:tmp_step})
if(hasProfile.match(/\n/ig).length == 1){ if(hasProfile.match(/\n/ig).length == 1){
script_info({ result_severity: "创建profile失败" })
throw "创建profile失败" throw "创建profile失败"
} }
} else { } else {
...@@ -452,15 +457,15 @@ function sortLayer(props){ // 排序方法 {job:要排序的料号, rule: {要 ...@@ -452,15 +457,15 @@ function sortLayer(props){ // 排序方法 {job:要排序的料号, rule: {要
function setDrill(props){ // 设置钻孔 function setDrill(props){ // 设置钻孔
var job = props.job var job = props.job
var matrix = props.matrix var matrix = _.values(GEN.getMatrix({job:job}))
// 获取所有的钻孔层 // 获取所有的钻孔层
var drillLayer =matrix.filter(function(v){ var drillLayer =matrix.filter(function(v){
return (v.attr.type == "drill" || v.attr.type == "rout") && v.attr.context == "board" return (v.layer_type == "drill" || v.layer_type == "rout") && v.context == "board"
}) })
// 获取所有single层 // 获取所有single层
var signalLayer =matrix.filter(function(v){ var signalLayer =matrix.filter(function(v){
return v.attr.type == "signal" && v.attr.context == "board" return v.layer_type == "signal" && v.context == "board"
}) })
console.log("=================>setdrill:drillLayer:" + _.toString(drillLayer)); console.log("=================>setdrill:drillLayer:" + _.toString(drillLayer));
console.log("=================>setdrill:signalLayer:" + _.toString(signalLayer)); console.log("=================>setdrill:signalLayer:" + _.toString(signalLayer));
...@@ -473,10 +478,10 @@ function setDrill(props){ // 设置钻孔 ...@@ -473,10 +478,10 @@ function setDrill(props){ // 设置钻孔
} }
function doDrill(drills){ // 分析钻孔层 function doDrill(drills){ // 分析钻孔层
return drills.map(function(v){ return drills.map(function(v){
if(v.tl_name == "drill" || v.tl_name=="rout" || v.tl_name=="outline"){ if(v.name == "drill" || v.name=="rout" || v.name=="outline"){
return {start:findSignal(1), end:findSignal(layerCount), layer:v.name} return {start:findSignal(1), end:findSignal(layerCount), layer:v.name}
} else { } else {
var tmp = /(\d+)-(\d+)/ig.exec(v.tl_name); var tmp = /(\d+)-(\d+)/ig.exec(v.name);
if(tmp){ if(tmp){
var start = findSignal(tmp[1]); var start = findSignal(tmp[1]);
var end = findSignal(tmp[2]); var end = findSignal(tmp[2]);
...@@ -504,12 +509,14 @@ function reName(props) { // 改名 par{job:要改名的料号, rule: {要改名 ...@@ -504,12 +509,14 @@ function reName(props) { // 改名 par{job:要改名的料号, rule: {要改名
var new_name; var new_name;
var tl_name = item.tl_name var tl_name = item.tl_name
var rule = item.rule var rule = item.rule
if(rule === tl_name){ if(rule === tl_name){
new_name = item.new_name new_name = item.new_name
} else { } else {
var reg = new RegExp(rule,"ig") var reg = new RegExp(rule,"ig")
var tmp = reg.exec(tl_name) var tmp = reg.exec(tl_name)
if(!tmp){return undefined} if(!tmp){return undefined}
// ["1","10","np"]
var replaceArr = tmp.slice(1) var replaceArr = tmp.slice(1)
new_name = item.new_name new_name = item.new_name
var params = {} var params = {}
...@@ -517,20 +524,21 @@ function reName(props) { // 改名 par{job:要改名的料号, rule: {要改名 ...@@ -517,20 +524,21 @@ function reName(props) { // 改名 par{job:要改名的料号, rule: {要改名
params["$"+(i+1)] = replaceArr[i] params["$"+(i+1)] = replaceArr[i]
} }
replaceArr.forEach(function(v,i){ replaceArr.forEach(function(v,i){
tl_name = tl_name.replace("($"+(i+1)+")",v) new_name = new_name.replace("($"+(i+1)+")",v)
}) })
new_name = replaceTlName(new_name)
function replaceTlName(name){ // new_name = replaceTlName(new_name)
var tmp = /(\([^)]*\))/ig.exec(name) // function replaceTlName(name){
if(!tmp){ return name } // var tmp = /(\([^)]*\))/ig.exec(name)
var param_arr = tmp[1].match(/\$\d+/ig) // if(!tmp){ return name }
var newname = tmp[1] // var param_arr = tmp[1].match(/\$\d+/ig)
param_arr.forEach(function(v){ // var newname = tmp[1]
newname = newname.replace(new RegExp("\\"+v,"ig"), params[v]) // param_arr.forEach(function(v){
}) // newname = newname.replace(new RegExp("\\"+v,"ig"), params[v])
newname = name.replace(tmp[1],eval(newname)) // })
return replaceTlName(newname) // newname = name.replace(tmp[1],eval(newname))
} // return replaceTlName(newname)
// }
} }
return { return {
orig_name: item.name, orig_name: item.name,
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
saveMeans({job:job,step:pcs_step,chklist:oChecklistName})
function mkPath(path, list) {
if (list.length) {
var newPath = path + '/' + list.shift()
if (!fs.dirExists(newPath)) {fs.mkdir(newPath)}
return mkPath(newPath, list)
} else {
return path
}
}
function saveMeans(props){
var job = props.job
var custstep = props.step
var chklist = props.chklist
var nact = props.nact
var jobpath = GEN.getJobPath({job: job})
var filter = props.filter
var afterPath = mkPath(jobpath, ["user", "opencam", "steps"])
var steps;
if (custstep) {
steps = [custstep]
} else {
steps = GEN.getStepList({job: job})
}
if(!steps || steps.length==0){
return
}
steps.forEach(function (step) {
var chkPath = mkPath(afterPath, [step, "chk"])
var chks
if (chklist) {chks = [chklist]}else {
chks = GEN.getChecklist({job: job,step: step})
}
if(chks && chks.length){
chks.forEach(function (item, i) {
var afterChkPath = mkPath(chkPath, [item])
var hdr = "{\n\
\"title\": \"" + item + "\",\n\
\"sequence\": " + (i + 1) + "\n\
}"
fs.writeFile(afterChkPath + "/hdr", _.toString(hdr))
var nacts = []
if (nact) {
nacts = [nact]
} else {
var nactCount = GEN.getChklistActCount({job:job,step:step,chklist:item})
for (var i = 0; i < nactCount; i++) {
nacts.push(i+1)
}
}
if(nacts.length > 0){
var actionPath = mkPath(afterChkPath, ["actions"])
nacts.forEach(function(index){
var titleFile = GEN.INFO({
entity_type: "check",
entity_path: job + "/" + step + "/" + item,
data_type: "TITLE",
options: "action=" + index,
parse:'no'
})
var title = fs.readFile(titleFile)
title = title.split("=")[1].trim()
title = title.substring(1, title.length-1)
var nackPath = mkPath(actionPath, [index+"-"+title])
fs.writeFile(nackPath + "/hdr", "{\n\
\"title\": \"" + (index + "-" + title) + "\",\n\
\"sequence\": " + index + ",\n\
\"dfm_name\": \"" + title + "\"\n\
}")
var displayFile = GEN.INFO({
entity_type: 'check',
entity_path: job + "/" + step + "/" + item,
data_type: 'MEAS_DISP_ID',
options: "action=" + index,
parse:'no'
});
fs.writeFile(nackPath + "/disp", fs.readFile(displayFile))
var measFile = GEN.INFO({entity_type:'check', entity_path:job+'/'+step+'/'+item, data_type:'MEAS', options:"index+action="+index, parse:'no'});
var means
if(filter){ // 处理过滤
var fileArray = []
var file = fs.openFile(measFile,'r');
while(!file.atEnd()) {
fileArray.push(file.readLine())
}
if(Array.isArray(filter)){
var nowFilter = filter.filter(function(item2){
for (var key in item2) {
var value = item2[key]
if (!Array.isArray(value)){
item2[key] = [value]
}
}
return item2.step.indexOf(step)>=0 && item2.chk.indexOf(item)>=0 && item2.nact.indexOf(index)>=0
})
if (nowFilter.length > 0){
var nowfilter = nowFilter.map(function(v){return v.filter}).reduce(function(a,b){
b.forEach(function(v2){
if (a.indexOf(v2)<0){
a.push(v2)
}
})
return a
},[])
fileArray = fileArray.filter(function(line){
var flag = false
nowfilter.forEach(function(f){
var reg = new RegExp(f, "ig")
if (reg.test(line)){
flag = true
}
})
return flag
})
}
} else if (typeof filter == "object") {
if (filter[step] && filter[step][item] && filter[step][item][String(index)]) {
var nowFilter = filter[step][item][String(index)]
if (!Array.isArray(nowFilter)){nowFilter = [nowFilter]}
fileArray = fileArray.filter(function(line){
var flag = false
nowFilter.forEach(function(f){
var reg = new RegExp(f, "ig")
if (reg.test(line)){
flag = true
}
})
return flag
})
}
}
means = fileArray.join("\n")
} else {
means = fs.readFile(measFile)
}
fs.writeFile(nackPath + "/meas", means)
})
}
})
}
})
}
// 自定义信息
saveCustChk({job:job,custChk:custChk})
function saveCustChk(props){
var job = props.job
var chkinfo = props.custChk
var path = mkPath(GEN.getJobPath({job: job}), ["user", "opencam", "steps"])
chkinfo.forEach(function(chk){
var ckpath = mkPath(path, [chk.step, "chk","custom_chk"])
// 写入action hdr
fs.writeFile(ckpath+"/hdr", "{\n\
\"title\": \"cust_chk\",\n\
\"sequence\": 0\n\
}")
var actionPath = mkPath(ckpath, ["actions"])
chk.action.forEach(function(action, i){
var nact = i + 1
var nactPath = mkPath(actionPath, [nact+"-"+action.name])
// nactPath 写入 meas hdr display
fs.writeFile(nactPath + "/hdr", "{\n\
\"title\": \"" + (nact + "-" + action.name) + "\",\n\
\"sequence\": " + nact + ",\n\
\"dfm_name\": \"" + action.name + "\"\n\
}")
if (Array.isArray(action.meas)){
action.meas = action.meas.map(function(mea, i){
return mea + " " + nact + " R " + String(i + 1)
})
action.meas = action.meas.join("\n")
} else {
action.meas = action.meas + " " + nact + " G " + 1
}
if (!/string/ig.test(typeof action.disp) ) {
action.disp = action.disp.workLayer + " "+ nact+" "+action.disp.showLayers.join(" ")
}
fs.writeFile(nactPath + "/disp", action.disp)
fs.writeFile(nactPath + "/meas", action.meas)
})
})
}
\ No newline at end of file
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