Commit 1eaa49b3 authored by Scott Sun's avatar Scott Sun

scott

parent 5458dacb
...@@ -134,7 +134,8 @@ var resultData = []; ...@@ -134,7 +134,8 @@ 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
...@@ -158,6 +159,8 @@ try { ...@@ -158,6 +159,8 @@ try {
if(step_list.indexOf(pcs_step)<0){ if(step_list.indexOf(pcs_step)<0){
pcs_step = step_list[0] pcs_step = step_list[0]
} }
script_info({ result_severity: "analysis update_matrix_info" })
script_info({ progress: 65 })
var matrix = UPLOAD_LAYER_MATRIX({job:job}) // 分析matrix 获得分析后的matrix信息 var matrix = UPLOAD_LAYER_MATRIX({job:job}) // 分析matrix 获得分析后的matrix信息
GEN.openStep({job:job, name:pcs_step}) GEN.openStep({job:job, name:pcs_step})
_.values(matrix).forEach(function(v){ _.values(matrix).forEach(function(v){
...@@ -209,6 +212,8 @@ try { ...@@ -209,6 +212,8 @@ try {
}) })
GEN.clearLayers() GEN.clearLayers()
script_info({ result_severity: "analysis drill_stack" })
script_info({ progress: 70 })
// * new 钻孔叠构 // * new 钻孔叠构
var cam_drill_structure = [] var cam_drill_structure = []
var stack_drills = _.values(matrix).filter(function(item){ var stack_drills = _.values(matrix).filter(function(item){
...@@ -357,6 +362,8 @@ try { ...@@ -357,6 +362,8 @@ try {
} }
} }
GEN.closeStep() GEN.closeStep()
script_info({ result_severity: "analysis panel_info" })
script_info({ progress: 70 })
// * profile 和 拼版 // * profile 和 拼版
var pandle_step = step_list.map(function(v){ var pandle_step = step_list.map(function(v){
var type = "unknow"; var type = "unknow";
...@@ -429,6 +436,7 @@ try { ...@@ -429,6 +436,7 @@ try {
} }
ALL.gold_fingers = gold_fingers ALL.gold_fingers = gold_fingers
GEN.closeStep() GEN.closeStep()
script_info({ result_severity: "analysis some_job_info" })
var config = { var config = {
jobInfo: { jobInfo: {
layer_count: ["signal","power_ground"], // Board属性的signal或者power_ground层 layer_count: ["signal","power_ground"], // Board属性的signal或者power_ground层
...@@ -508,7 +516,8 @@ try { ...@@ -508,7 +516,8 @@ try {
console.log("===================================> 5 save drill info") console.log("===================================> 5 save drill info")
script_info({ result_severity: "analysis drill_info" })
script_info({ progress: 75 })
// * 获取pcs_step 和 array_step的钻孔信息 // * 获取pcs_step 和 array_step的钻孔信息
var drill_tool_info = {}; var drill_tool_info = {};
var drillLayers = analysis_obj.matrixInfo.mDrills; var drillLayers = analysis_obj.matrixInfo.mDrills;
...@@ -630,7 +639,8 @@ try { ...@@ -630,7 +639,8 @@ try {
}) })
console.log("=============================> 6 set smd bga") console.log("=============================> 6 set smd bga")
script_info({ result_severity: "analysis smd&bga" })
script_info({ progress: 80 })
var allStep = GEN.getStepList({job:job}) var allStep = GEN.getStepList({job:job})
allStep.forEach(function(step){ allStep.forEach(function(step){
GEN.openStep({job:job,name:step}) GEN.openStep({job:job,name:step})
...@@ -780,6 +790,8 @@ try { ...@@ -780,6 +790,8 @@ try {
// jobpath = "/home/local_db/server_db/jobs/"+job // jobpath = "/home/local_db/server_db/jobs/"+job
// } // }
mkPath(jobpath,["user","opcam","steps"]) mkPath(jobpath,["user","opcam","steps"])
script_info({ result_severity: "analysis signal" })
script_info({ progress: 85 })
stepList.forEach(function(step){ stepList.forEach(function(step){
GEN.openStep({ job: job, name: step }) GEN.openStep({ job: job, name: step })
// 曝光 // 曝光
...@@ -791,6 +803,13 @@ try { ...@@ -791,6 +803,13 @@ try {
}) })
var layer_gold_type = /top/ig.test(item.signalL) ? "top" : "bot" var layer_gold_type = /top/ig.test(item.signalL) ? "top" : "bot"
if(tmp_gold_info[layer_gold_type]){ if(tmp_gold_info[layer_gold_type]){
var tmp_area_layer = "gold_area_tmp"
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.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]}) // var tmp_info = GEN.exposedArea({layer1:item.signalL,mask1:tmp_gold_info[layer_gold_type]})
var tmp_data = {} var tmp_data = {}
...@@ -854,7 +873,7 @@ try { ...@@ -854,7 +873,7 @@ try {
return {layer:v,symbol:symbol,start:tmp_matrix[v]["drl_start"],end:tmp_matrix[v]["drl_end"]} return {layer:v,symbol:symbol,start:tmp_matrix[v]["drl_start"],end:tmp_matrix[v]["drl_end"]}
}) })
var drillRes = analysisDrill(drillToSignals,step) // 钻孔分析结果 var drillRes = analysisDrill(drillToSignals,step) // 钻孔分析结果
fs.writeFile("/home/toplinker/samba/scott_test/tmp",_.toString(drillRes)) // fs.writeFile("/home/toplinker/samba/scott_test/tmp",_.toString(drillRes))
console.log("===============drillRes:" + _.toString(drillRes)); console.log("===============drillRes:" + _.toString(drillRes));
drillRes.forEach(function(item){ drillRes.forEach(function(item){
save_layerinfo({ save_layerinfo({
...@@ -892,6 +911,7 @@ try { ...@@ -892,6 +911,7 @@ try {
if(par.erf){ if(par.erf){
tmpitem.erf = par.erf tmpitem.erf = par.erf
} }
script_info({ result_severity: "analysis run_signal_chk" })
createChklistAndRun({ // 创建checklist并运行 createChklistAndRun({ // 创建checklist并运行
layers: signalLayers, layers: signalLayers,
items: [tmpitem] items: [tmpitem]
...@@ -935,6 +955,8 @@ try { ...@@ -935,6 +955,8 @@ try {
IKM.msg("export") IKM.msg("export")
script_info({ result_severity: "analysis export" })
script_info({ progress: 95 })
// 导出 // 导出
if(par.export_path != "" && par.export_mode != "" && par.export_submode != "" ){ if(par.export_path != "" && par.export_mode != "" && par.export_submode != "" ){
if(fs.exists(par.export_path)){ if(fs.exists(par.export_path)){
...@@ -950,12 +972,13 @@ try { ...@@ -950,12 +972,13 @@ try {
} }
} }
if (mode === "aimdfm") { if (mode === "aimdfm") {
$.QDfm.updateRow({ $.QDfm.updateRow({
table: "pdm_aimdfm_task", table: "pdm_aimdfm_task",
data: { data: {
progress: 33.33 result_severity:"analysis ok",
progress: 100
}, },
where: { id: $.task_id } where: { id: $.task_id }
}); });
...@@ -1515,7 +1538,6 @@ function analysis(props){ ...@@ -1515,7 +1538,6 @@ function analysis(props){
GEN.createLayer({job:that.job,layer:tmp,conext:'misc',type:'document'}) GEN.createLayer({job:that.job,layer:tmp,conext:'misc',type:'document'})
GEN.COM("profile_to_rout,layer="+tmp+",width=1") GEN.COM("profile_to_rout,layer="+tmp+",width=1")
var feautres = GEN.getFeatures({job:that.job,step:step,layer:tmp,units:"mm"}) var feautres = GEN.getFeatures({job:that.job,step:step,layer:tmp,units:"mm"})
fs.writeFile("/home/samba/tmp/tmp.js", _.toString(feautres))
// 根据feautres 算出周长 // 根据feautres 算出周长
var milling = Object.keys(feautres).reduce(function(a,b){ var milling = Object.keys(feautres).reduce(function(a,b){
var value = feautres[b] var value = feautres[b]
...@@ -2420,4 +2442,13 @@ function arcLength(x1,y1,x2,y2,x3,y3){ ...@@ -2420,4 +2442,13 @@ function arcLength(x1,y1,x2,y2,x3,y3){
var sin0 = Math.sin(tmp) var sin0 = Math.sin(tmp)
var length = +Math.sqrt(Math.pow(x2-x1,2) + Math.pow(y2-y1,2)) / sin0 * tmp var length = +Math.sqrt(Math.pow(x2-x1,2) + Math.pow(y2-y1,2)) / sin0 * tmp
return length return length
}
function script_info(props){ // result_severity progress
if (mode === "aimdfm") {
$.QDfm.updateRow({
table: "pdm_aimdfm_task",
data: props,
where: { id: $.task_id }
});
}
} }
\ No newline at end of file
...@@ -68,6 +68,8 @@ if (mode === "aimdfm") { ...@@ -68,6 +68,8 @@ if (mode === "aimdfm") {
var Status = 'ok'; var Status = 'ok';
var resultData = []; var resultData = [];
try { try {
script_info({ result_severity: "format start" })
script_info({ progress: 35 })
var par = PAR; var par = PAR;
if(!par.hasOwnProperty("config_path") || par.config_path==""){ if(!par.hasOwnProperty("config_path") || par.config_path==""){
console.log("==============cfg"); console.log("==============cfg");
...@@ -213,6 +215,8 @@ try { ...@@ -213,6 +215,8 @@ try {
var format_cfg = config.data_format // 拿到数据标准化配置 var format_cfg = config.data_format // 拿到数据标准化配置
// 排序和设属性 // 排序和设属性
script_info({ result_severity: "format sort" })
script_info({ progress: 40 })
var ret = sortLayer({job:job, rule:format_cfg, matrix:tl_name_matrix}) var ret = sortLayer({job:job, rule:format_cfg, matrix:tl_name_matrix})
if(ret.err){throw err} if(ret.err){throw err}
var after_sort_matrix = ret.sortNames var after_sort_matrix = ret.sortNames
...@@ -222,6 +226,8 @@ try { ...@@ -222,6 +226,8 @@ try {
if(err){throw err} if(err){throw err}
// 改名 // 改名
script_info({ result_severity: "format rename" })
script_info({ progress: 50 })
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}
...@@ -251,6 +257,8 @@ try { ...@@ -251,6 +257,8 @@ try {
} }
}) })
script_info({ result_severity: "format create profile" })
script_info({ progress: 55 })
var all_layer = Object.keys(tmp_matrix) var all_layer = Object.keys(tmp_matrix)
// 没有outline层 // 没有outline层
if(all_layer.indexOf("outline") >= 0) { profileRule.unshift("outline")} if(all_layer.indexOf("outline") >= 0) { profileRule.unshift("outline")}
...@@ -290,7 +298,8 @@ try { ...@@ -290,7 +298,8 @@ try {
$.QDfm.updateRow({ $.QDfm.updateRow({
table: "pdm_aimdfm_task", table: "pdm_aimdfm_task",
data: { data: {
progress: 33.33 result_severity: "format ok",
progress: 60
}, },
where: { id: $.task_id } where: { id: $.task_id }
}); });
...@@ -696,4 +705,14 @@ function selCopyLayer(props){ // 拷贝选择的到辅助层 ...@@ -696,4 +705,14 @@ function selCopyLayer(props){ // 拷贝选择的到辅助层
GEN.deleteLayer({job:job,layer:layer}) GEN.deleteLayer({job:job,layer:layer})
} }
GEN.selCopyOther({dest:'layer_name',target_layer:layer}) GEN.selCopyOther({dest:'layer_name',target_layer:layer})
}
function script_info(props){ // result_severity progress
if (mode === "aimdfm") {
$.QDfm.updateRow({
table: "pdm_aimdfm_task",
data: props,
where: { id: $.task_id }
});
}
} }
\ No newline at end of file
...@@ -52,6 +52,7 @@ console.log("=============================================>input_start"); ...@@ -52,6 +52,7 @@ console.log("=============================================>input_start");
var $ = require('topcam.scriptfunc').argv(); var $ = require('topcam.scriptfunc').argv();
var fs = require('fs'); var fs = require('fs');
var _ = require('lodash'); var _ = require('lodash');
var zip = require('topsin.zip');
var mode = $.ikm ? "topcam" : "aimdfm"; var mode = $.ikm ? "topcam" : "aimdfm";
var IKM = $.ikm; var IKM = $.ikm;
if (IKM==undefined ) { IKM = require('topcam.ikm6')($) } if (IKM==undefined ) { IKM = require('topcam.ikm6')($) }
...@@ -76,7 +77,8 @@ if (mode === "aimdfm") { ...@@ -76,7 +77,8 @@ if (mode === "aimdfm") {
QDfm.updateRow({ QDfm.updateRow({
table: "pdm_aimdfm_task", table: "pdm_aimdfm_task",
data: { data: {
current_process_title: $.process_title current_process_title: $.process_title,
progress: 0
}, },
where: { id: $.task_id } where: { id: $.task_id }
}); });
...@@ -86,6 +88,7 @@ var Status = 'ok'; ...@@ -86,6 +88,7 @@ var Status = 'ok';
var resultData = []; var resultData = [];
var import_info = [] var import_info = []
try { try {
script_info({ result_severity: "import start" })
var par = PAR; var par = PAR;
// var db_path = db.query("",function(q){ // var db_path = db.query("",function(q){
// return q.selectValue({ // return q.selectValue({
...@@ -162,11 +165,21 @@ try { ...@@ -162,11 +165,21 @@ try {
} }
GEN.COM("config_edit,name=iol_gbr_polygon_break,value=1,mode=user") GEN.COM("config_edit,name=iol_gbr_polygon_break,value=1,mode=user")
GEN.COM("config_edit,name=iol_fix_ill_polygon,value=yes,mode=user") GEN.COM("config_edit,name=iol_fix_ill_polygon,value=yes,mode=user")
// 将jobFile下的zip解压
jobFiles.forEach(function(item){
if(item.suffix === "zip"){
zip.unzip(item.path);
}
})
// 分析料号文件 得到料号导入信息 导入类型 // 分析料号文件 得到料号导入信息 导入类型
var jobInfo = analyJobFiles({jobFiles:jobFiles.filter(function(v){return v.isFile}),custCfg:custCfg,config:config,job:job }) var jobInfo = analyJobFiles({jobFiles:jobFiles.filter(function(v){return v.isFile}),custCfg:custCfg,config:config,job:job })
if(jobInfo.data.length == 0){throw "file error"} if(jobInfo.data.length == 0){throw "file error"}
var importOk = false; // 是否成功导入 var importOk = false; // 是否成功导入
script_info({ progress: 10 })
if(/odb/ig.test(jobInfo.type)){ // odb导入 if(/odb/ig.test(jobInfo.type)){ // odb导入
...@@ -266,8 +279,10 @@ try { ...@@ -266,8 +279,10 @@ try {
importOk = true importOk = true
} }
if(!importOk){throw "import error"} if(!importOk){
script_info({ result_severity: "import error" })
throw "import error"}
script_info({ progress: 20 })
// 导入结束 // 导入结束
var matrix = GEN.getMatrix({job:job}); var matrix = GEN.getMatrix({job:job});
comp = Object.keys(matrix).filter(function(v){ // 如果有comp层 删除 comp = Object.keys(matrix).filter(function(v){ // 如果有comp层 删除
...@@ -302,24 +317,23 @@ try { ...@@ -302,24 +317,23 @@ try {
}) })
} }
var import_html = "<table border=1 align='center' cellpadding=5 cellspacing=0 style=\"text-align: center;\"><tr><th>导入状态/Import Status</th><th>文件/File</th><th>类型/Type</th><th>导入时间/Import Time</th><th>操作用户/User</th></tr>"
import_info.forEach(function(item){
var name = item.name
var type = item.type
var date = item.date
var user = item.user
import_html += "<tr><td>Readin</td><td>"+name+"</td><td>"+type+"</td><td>"+date+"</td><td>"+user+"</td></tr>"
})
import_html += "</table>"
// name type date user // name type date user
resultData.push({type: "info",title:"导入资料列表",detail: [{ desc: resultData.push({type: "info",title:"导入资料列表",detail: [{ desc: import_html }] })
import_info.map(function(item){ script_info({ result_severity: "import ok" })
var name = item.name
var type = item.type
var date = item.date
var user = item.user
return "导入资料:"+name+", 类型:"+type+", 导入时间:"+date+", 操作用户:"+user
}).join("\n")
}] })
if (mode === "aimdfm") { if (mode === "aimdfm") {
$.QDfm.updateRow({ $.QDfm.updateRow({
table: "pdm_aimdfm_task", table: "pdm_aimdfm_task",
data: { data: {
progress: 33.33 progress: 30
}, },
where: { id: $.task_id } where: { id: $.task_id }
}); });
...@@ -476,4 +490,15 @@ function reNameStep(job) { ...@@ -476,4 +490,15 @@ function reNameStep(job) {
GEN.renameStep({job:job,name:v,new_name:'stp' + (i == 0? "" : i+1)}) GEN.renameStep({job:job,name:v,new_name:'stp' + (i == 0? "" : i+1)})
} }
}) })
}
function script_info(props){ // result_severity progress
if (mode === "aimdfm") {
$.QDfm.updateRow({
table: "pdm_aimdfm_task",
data: props,
where: { id: $.task_id }
});
}
} }
\ No newline at end of file
...@@ -572,7 +572,7 @@ ...@@ -572,7 +572,7 @@
{"orig_name" : ["mask_top\\.art","psm\\.art","sm_top"], "tl_name" : "sm_top" }, {"orig_name" : ["mask_top\\.art","psm\\.art","sm_top"], "tl_name" : "sm_top" },
{"orig_name" : ["mask_bot\\.art","ssm\\.art","sm_bot"], "tl_name" : "sm_botm" }, {"orig_name" : ["mask_bot\\.art","ssm\\.art","sm_bot"], "tl_name" : "sm_botm" },
{"orig_name" : ["^top$","^top.art$"], "tl_name" : "top" }, {"orig_name" : ["^top$","^top.art$"], "tl_name" : "top" },
{"orig_name" : ["^0?(\\d+)_.*\\.art$","^l(\\d+)\\.art$","^0(\\d+).*ccp_ms","^s(\\d+)\\.art","lay(\\d+)\\.art","layer_(\\d+)"], "tl_name" : "l_($1)"}, {"orig_name" : ["^l(\\d+)_.*\\.art$","^0?(\\d+)_.*\\.art$","^l(\\d+)\\.art$","^0(\\d+).*ccp_ms","^s(\\d+)\\.art","lay(\\d+)\\.art","layer_(\\d+)"], "tl_name" : "l_($1)"},
{"orig_name" : ["^bottom$","^bottom\\.art$"], "tl_name" : "bottom" }, {"orig_name" : ["^bottom$","^bottom\\.art$"], "tl_name" : "bottom" },
{"orig_name" : ["-(\\d+)-(\\d+)\\.drl$","(\\d+)-(\\d+)-laser\\.drl$","d(\\d+)-(\\d+)"], "tl_name" : "d_($1)-($2)"}, {"orig_name" : ["-(\\d+)-(\\d+)\\.drl$","(\\d+)-(\\d+)-laser\\.drl$","d(\\d+)-(\\d+)"], "tl_name" : "d_($1)-($2)"},
{"orig_name" : ["\\.rou$","^rout$"], "tl_name" : "rout" }, {"orig_name" : ["\\.rou$","^rout$"], "tl_name" : "rout" },
......
This diff is collapsed.
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