Commit c52da11a authored by Scott Sun's avatar Scott Sun

s

parent 0b956001
...@@ -206,6 +206,7 @@ try { ...@@ -206,6 +206,7 @@ try {
if(GEN.checkInout({job:job,mode:"test"}) != 0 && mode == "aimdfm"){ throw "the job check" } if(GEN.checkInout({job:job,mode:"test"}) != 0 && mode == "aimdfm"){ throw "the job check" }
GEN.checkInout({job:job,mode:"out"}); GEN.checkInout({job:job,mode:"out"});
script_info({ msg: "Data Analysis" ,result_severity:"info"}) script_info({ msg: "Data Analysis" ,result_severity:"info"})
global._ERRORMAG = "Failed to Data Analysis";
script_info({ progress: 65 }) 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;
...@@ -217,7 +218,9 @@ try { ...@@ -217,7 +218,9 @@ try {
pcs_step = step_list[0] pcs_step = step_list[0]
} }
script_info({ msg: "Error-Upload matrix",result_severity:"info" }) script_info({ msg: "Upload matrix",result_severity:"info" })
global._ERRORMAG = "Error-Upload matrix";
script_info({ progress: 65 }) 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})
...@@ -273,7 +276,9 @@ try { ...@@ -273,7 +276,9 @@ try {
}) })
GEN.clearLayers() GEN.clearLayers()
script_info({ msg: "Error-Drill Stackup analysis" }) script_info({ msg: "Drill Stackup analysis" })
global._ERRORMAG = "Error-Drill Stackup analysis";
script_info({ progress: 70 }) script_info({ progress: 70 })
// * new 钻孔叠构 // * new 钻孔叠构
var cam_drill_structure = [] var cam_drill_structure = []
...@@ -397,7 +402,9 @@ try { ...@@ -397,7 +402,9 @@ try {
var analysis_obj = analysis({job:job,jobId:JobId,pcs_step:pcs_step,array_step:array_step,matrix:matrix}) var analysis_obj = analysis({job:job,jobId:JobId,pcs_step:pcs_step,array_step:array_step,matrix:matrix})
// 创建profile // 创建profile
var tmp_matrix = GEN.getMatrix({job:job}) var tmp_matrix = GEN.getMatrix({job:job})
script_info({ msg: "Error-Profile analysis" }) script_info({ msg: "Profile analysis" })
global._ERRORMAG = "Error-Profile analysis";
script_info({ progress: 70 }) script_info({ progress: 70 })
// * profile 和 拼版 // * profile 和 拼版
var pandle_step = step_list.map(function(v){ var pandle_step = step_list.map(function(v){
...@@ -471,7 +478,9 @@ try { ...@@ -471,7 +478,9 @@ try {
} }
ALL.gold_fingers = gold_fingers ALL.gold_fingers = gold_fingers
GEN.closeStep() GEN.closeStep()
script_info({ msg: "Error-PN analysis" }) script_info({ msg: "PN analysis" })
global._ERRORMAG = "Error-PN analysis";
var config = { var config = {
jobInfo: { jobInfo: {
layer_count: ["signal","power_ground"], // Board属性的signal或者power_ground层 layer_count: ["signal","power_ground"], // Board属性的signal或者power_ground层
...@@ -541,7 +550,12 @@ try { ...@@ -541,7 +550,12 @@ try {
} }
} }
console.log("=================================> 4 save job info") console.log("=================================> 4 save job info")
if(db_customer == "1352"){
jobInfo.array_size_x = jobInfo.pcs_size_x
jobInfo.array_size_y = jobInfo.pcs_size_y
delete jobInfo.pcs_size_x
delete jobInfo.pcs_size_y
}
save_job_info({ save_job_info({
jobid: JobId, jobid: JobId,
jobinfohash: jobInfo jobinfohash: jobInfo
...@@ -549,7 +563,9 @@ try { ...@@ -549,7 +563,9 @@ try {
console.log("=================================> 5 save drill info") console.log("=================================> 5 save drill info")
script_info({ msg: "Error-Drill layer analysis" }) script_info({ msg: "Drill layer analysis" })
global._ERRORMAG = "Error-Drill layer analysis";
script_info({ progress: 75 }) script_info({ progress: 75 })
// * 获取pcs_step 和 array_step的钻孔信息 // * 获取pcs_step 和 array_step的钻孔信息
var drill_tool_info = {}; var drill_tool_info = {};
...@@ -569,10 +585,11 @@ try { ...@@ -569,10 +585,11 @@ try {
var type = item.type; var type = item.type;
var step = item.name; var step = item.name;
if(GEN.isStepExists({job:job, step:step})){ if(GEN.isStepExists({job:job, step:step})){
GEN.openStep({job:job, name:step})
drillLayers.forEach(function(layer){ drillLayers.forEach(function(layer){
var layer = layer.name; var layer = layer.name;
if(!GEN.isLayerEmpty({job:job,step:step,layer:layer})){ if(!GEN.isLayerEmpty({job:job,step:step,layer:layer})){
// GEN.COM("tools_set,layer="+layer+",slots=by_length") GEN.COM("tools_set,layer="+layer+",slots=by_length")
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}} 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]){ if(!drill_tool_info[layer]){
drill_tool_info[layer] = tool; drill_tool_info[layer] = tool;
...@@ -605,6 +622,7 @@ try { ...@@ -605,6 +622,7 @@ try {
} }
} }
}) })
GEN.closeStep()
} }
}) })
...@@ -674,7 +692,9 @@ try { ...@@ -674,7 +692,9 @@ try {
}) })
console.log("=============================> 6 set smd bga") console.log("=============================> 6 set smd bga")
script_info({ msg: "Error-SMD&BGA analysis" }) script_info({ msg: "SMD&BGA analysis" })
global._ERRORMAG = "Error-SMD&BGA analysis";
script_info({ progress: 80 }); script_info({ progress: 80 });
step_list.forEach(function(step){ step_list.forEach(function(step){
GEN.openStep({job:job,name:step}) GEN.openStep({job:job,name:step})
...@@ -734,7 +754,9 @@ try { ...@@ -734,7 +754,9 @@ try {
if(oping_layer){ if(oping_layer){
GEN.COM("filter_atr_set,filter_name=popup,condition=yes,attribute=.smd") GEN.COM("filter_atr_set,filter_name=popup,condition=yes,attribute=.smd")
GEN.COM("sel_ref_feat,layers="+oping_layer+",use=filter,mode=disjoint,pads_as=shape,f_types=line\;pad\;surface\;arc\;text,polarity=positive\;negative,include_syms=,exclude_syms=") GEN.COM("sel_ref_feat,layers="+oping_layer+",use=filter,mode=disjoint,pads_as=shape,f_types=line\;pad\;surface\;arc\;text,polarity=positive\;negative,include_syms=,exclude_syms=")
GEN.COM("COM filter_reset,filter_name=popup") if(GEN.getSelectCount() > 0){
GEN.COM("sel_delete_atr,attributes=.smd")
}
} }
}) })
GEN.closeStep() GEN.closeStep()
...@@ -775,7 +797,6 @@ try { ...@@ -775,7 +797,6 @@ try {
var signalLayers = analysis_obj.matrixInfo.mSignals.map(function(v){return v.name}) var signalLayers = analysis_obj.matrixInfo.mSignals.map(function(v){return v.name})
var drillLayers = analysis_obj.matrixInfo.mDrills.map(function(v){return v.name}) var drillLayers = analysis_obj.matrixInfo.mDrills.map(function(v){return v.name})
console.log("=============================> 13 save copperArea copper_distribution") console.log("=============================> 13 save copperArea copper_distribution")
var copper_distribution_steplist= [pcs_step, array_step]; var copper_distribution_steplist= [pcs_step, array_step];
copper_distribution_steplist.forEach(function(step){ copper_distribution_steplist.forEach(function(step){
...@@ -838,7 +859,9 @@ try { ...@@ -838,7 +859,9 @@ 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({ msg: "Error-Signal layer analysis" }) script_info({ msg: "Signal layer analysis" })
global._ERRORMAG = "Error-Signal layer analysis";
script_info({ progress: 85 }) script_info({ progress: 85 })
stepList.forEach(function(step){ stepList.forEach(function(step){
GEN.openStep({ job: job, name: step }) GEN.openStep({ job: job, name: step })
...@@ -996,7 +1019,9 @@ try { ...@@ -996,7 +1019,9 @@ try {
// layers: signalLayers, // layers: signalLayers,
// items: [tmpitem] // items: [tmpitem]
// }) // })
script_info({ msg: "Error-Run Checklist",result_severity:"ok" }) script_info({ msg: "Run Checklist",result_severity:"ok" })
global._ERRORMAG = "Error-Run Checklist";
// if (GEN.isChklistExists({ job: job, step: step, chklist: oChecklistName })) { // if (GEN.isChklistExists({ job: job, step: step, chklist: oChecklistName })) {
// GEN.COM("chklist_delete", { chklist: oChecklistName }) // GEN.COM("chklist_delete", { chklist: oChecklistName })
// } // }
...@@ -1044,6 +1069,7 @@ try { ...@@ -1044,6 +1069,7 @@ try {
GEN.closeStep() GEN.closeStep()
}) })
// mvOutProfile({job:job, step:pcs_step}) // mvOutProfile({job:job, step:pcs_step})
global._ERRORMAG = false;
// 保存 // 保存
if(/yes/ig.test(par.auto_save)){ if(/yes/ig.test(par.auto_save)){
...@@ -1093,10 +1119,10 @@ try { ...@@ -1093,10 +1119,10 @@ try {
// } // }
// 邮件触发 // 邮件触发
// sendEmail({ sendEmail({
// subject:db_customer + ' / '+job+' reading is ready!', subject:db_customer + ' / '+job+' reading is ready!',
// content: db_customer + ' / '+job+' reading is ready!' content: db_customer + ' / '+job+' reading is ready!'
// }) })
if (mode === "aimdfm") { if (mode === "aimdfm") {
$.QDfm.updateRow({ $.QDfm.updateRow({
...@@ -1506,12 +1532,55 @@ function analysis(props){ ...@@ -1506,12 +1532,55 @@ function analysis(props){
return res.length return res.length
} }
T_m_p.prototype.analysis_vc_card_size = function(props){ // card短边尺寸 string T_m_p.prototype.analysis_vc_card_size = function(props){ // card短边尺寸 string
if(db_customer == "1352"){
var signals = this.matrixInfo.mSignals.map(function(v){return v.name})
GEN.openStep({job:this.job,name:this.pcs_step})
GEN.selClearFeature()
GEN.affectedLayer({affected:'yes',layer:signals,clear_before:'yes'})
GEN.selectByFilter({profile:"in"});
if(GEN.getSelectCount() > 0){
if(GEN.isLayerExists({job:this.job,layer:"_signals"})){GEN.deleteLayer({job:this.job,layer:["_signals"]})}
GEN.selCopyOther({dest:'layer_name',target_layer:'_signals',invert:'no',dx:0,dy:0,size:0})
var tmp = GEN.getLayerLimits({job:this.job,step:this.pcs_step,layer:'_signals',units:'mm'})
var size1 = Number(tmp.xsize);
var size2 = Number(tmp.ysize);
if(size1 > size2){
var tmpsize = size2
size2 = size1
size1 = tmpsize
}
var tmp_width = 0;
// 获取边线宽度
if(GEN.isLayerExists({job:this.job,layer:"tmp2"})){GEN.deleteLayer({job:this.job,layer:["tmp2"]})}
GEN.COM("profile_to_rout,layer=tmp2,width=1")
// 看_signals是否有跟tmp2碰到
GEN.workLayer({name:"_signals",display_number:2,clear_before:'yes'})
GEN.COM("filter_reset,filter_name=popup")
GEN.COM("filter_set,filter_name=popup,update_popup=no,feat_types=line")
GEN.COM("sel_ref_feat,layers=tmp2,use=filter,mode=touch,pads_as=shape,f_types=line\;pad\;surface\;arc\;text,polarity=positive\;negative,include_syms=,exclude_syms=")
if(GEN.getSelectCount() > 0) {
// 获取选择东西的 symbol
var feats = GEN.getFeatures({job:this.job,step:this.pcs_step,layer:"_signals",options:"select",units:"mm"});
GEN.selClearFeature()
var minSyms = feats.map(function(v){return (v.symbol.slice(1) - 0)})
minSyms.sort();
tmp_width = minSyms[0]/1000
}
if(props == "xsize"){
return (size1-tmp_width).toFixed(2) //
}
if(props == "ysize"){
return (size2-tmp_width).toFixed(2) //
}
}
GEN.closeStep()
}
return GEN.getProfileLimits({job:this.job,step:this.pcs_step,units:"mm"})[props].toFixed(2) return GEN.getProfileLimits({job:this.job,step:this.pcs_step,units:"mm"})[props].toFixed(2)
} }
T_m_p.prototype.analysis_vc_array_size = function(props){ // array长边尺寸 string T_m_p.prototype.analysis_vc_array_size = function(props){ // array长边尺寸 string
if(!this.array_step){return "_error"} if(!this.array_step){return "_error"}
var tmp = GEN.getProfileLimits({job:this.job,step:this.array_step,units:"mm"}) var tmp = GEN.getProfileLimits({job:this.job,step:this.array_step,units:"mm"})
var size1 = Number(tmp.xsize) var size1 = Number(tmp.xsize)
var size2 = Number(tmp.ysize) var size2 = Number(tmp.ysize)
if(size1 > size2){ if(size1 > size2){
var tmpsize = size2 var tmpsize = size2
......
...@@ -103,6 +103,7 @@ try { ...@@ -103,6 +103,7 @@ try {
throw cam_workflow_info throw cam_workflow_info
} }
script_info({ msg: "Data formatting" ,result_severity:"info"}) script_info({ msg: "Data formatting" ,result_severity:"info"})
global._ERRORMAG = "Failed to data format";
script_info({ progress: 35 }) 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==""){
...@@ -132,17 +133,19 @@ try { ...@@ -132,17 +133,19 @@ try {
var config = eval(cfg) var config = eval(cfg)
var job = Job; var job = Job;
if(_.isEmpty(job)) throw "没有传入料号名!"; if(_.isEmpty(job)) throw "没有传入料号名!";
job = job.toLowerCase() job = job.toLowerCase();
var custCfg = config.customer[par.customer] // 获取客户配置 var custCfg = config.customer[par.customer]; // 获取客户配置
if(!custCfg){throw "config error"} if(!custCfg){throw "config error"}
// 料号验证 // 料号验证
if(!GEN.isJobExists({job:job})){ if(!GEN.isJobExists({job:job})){
script_info({ msg: "No PN was found in system" ,result_severity:"error"}) script_info({ msg: "Find PN in system" ,result_severity:"error"})
global._ERRORMAG = "No PN was found in system";
throw "job "+ job+ " is not exist" } throw "job "+ job+ " is not exist" }
if(!GEN.isJobOpen({job:job})){GEN.openJob({job:job})} if(!GEN.isJobOpen({job:job})){GEN.openJob({job:job})}
if(GEN.checkInout({job:job,mode:"test"}) != 0 && mode == "aimdfm"){ if(GEN.checkInout({job:job,mode:"test"}) != 0 && mode == "aimdfm"){
script_info({ msg: "PN is not checkin" ,result_severity:"error"}) script_info({ msg: "PN Checkin" ,result_severity:"error"})
global._ERRORMAG = "PN is not checkin";
throw "the job check" } throw "the job check" }
console.log("Checkout====== ========================>") console.log("Checkout====== ========================>")
GEN.checkInout({job:job,mode:"out"}); GEN.checkInout({job:job,mode:"out"});
...@@ -264,7 +267,8 @@ try { ...@@ -264,7 +267,8 @@ try {
var after_sort_matrix = ret.sortNames var after_sort_matrix = ret.sortNames
// 改名 // 改名
script_info({ msg: "Failed to change name(Name clashes)" ,result_severity:"info"}) script_info({ msg: "Change the name" ,result_severity:"info"})
global._ERRORMAG = "Failed to change name";
script_info({ progress: 50 }) 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}
...@@ -392,6 +396,8 @@ try { ...@@ -392,6 +396,8 @@ try {
GEN.COM("open_job,job="+job); GEN.COM("open_job,job="+job);
script_info({ msg: "Creating Profile" ,result_severity:"info"}) script_info({ msg: "Creating Profile" ,result_severity:"info"})
global._ERRORMAG = "Failed to create profile";
script_info({ progress: 55 }) script_info({ progress: 55 })
var all_layer = Object.keys(tmp_matrix); var all_layer = Object.keys(tmp_matrix);
// 没有outline层 // 没有outline层
...@@ -523,6 +529,8 @@ try { ...@@ -523,6 +529,8 @@ try {
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({ msg: "Failed to create profile" ,result_severity:"warn"}) script_info({ msg: "Failed to create profile" ,result_severity:"warn"})
global._ERRORMAG = "Failed to create profile";
job_attrs.readin_result = "Failed to create profile" job_attrs.readin_result = "Failed to create profile"
db.query("",function(q){ db.query("",function(q){
return q.updateRow({ return q.updateRow({
...@@ -538,6 +546,7 @@ try { ...@@ -538,6 +546,7 @@ try {
script_info({ msg: "Data format is done" ,result_severity:"warn"}) script_info({ msg: "Data format is done" ,result_severity:"warn"})
global._ERRORMAG = false;
db.query("",function(q){ db.query("",function(q){
return q.updateRow({ return q.updateRow({
...@@ -553,7 +562,6 @@ try { ...@@ -553,7 +562,6 @@ try {
GEN.saveJob({ job: job }); GEN.saveJob({ job: job });
GEN.checkInout({job:job,mode:"in"}) GEN.checkInout({job:job,mode:"in"})
GEN.closeJob({job:job}) GEN.closeJob({job:job})
if (mode === "aimdfm") { if (mode === "aimdfm") {
$.QDfm.updateRow({ $.QDfm.updateRow({
......
...@@ -229,6 +229,8 @@ try { ...@@ -229,6 +229,8 @@ try {
script_info({ progress: 10 }) script_info({ progress: 10 })
if(/odb/ig.test(jobInfo.type)){ // odb导入 if(/odb/ig.test(jobInfo.type)){ // odb导入
script_info({ msg: "Import odb++", result_severity:"error" });
global._ERRORMAG = "Fail to import odb++";
if(jobInfo.data.length == 1){ // 只分析到一个tgz文件 直接导入 if(jobInfo.data.length == 1){ // 只分析到一个tgz文件 直接导入
IKM.msg("只分析到一个tgz文件 直接导入") IKM.msg("只分析到一个tgz文件 直接导入")
import_info.push({name:jobInfo.data[0].file.name, type:"odb++", date:now(),user:$.user_name}) import_info.push({name:jobInfo.data[0].file.name, type:"odb++", date:now(),user:$.user_name})
...@@ -301,6 +303,8 @@ try { ...@@ -301,6 +303,8 @@ try {
} }
if(/gerber/ig.test(jobInfo.type)){ // gerber导入 if(/gerber/ig.test(jobInfo.type)){ // gerber导入
script_info({ msg: "Import gerber", result_severity:"error" });
global._ERRORMAG = "Fail to import gerber";
GEN.createJob({name:job,db:custCfg.db}) GEN.createJob({name:job,db:custCfg.db})
GEN.createStep({job:job,name:step}) GEN.createStep({job:job,name:step})
var gerberInfo = jobInfo.data.map(function(item){ var gerberInfo = jobInfo.data.map(function(item){
...@@ -338,6 +342,7 @@ try { ...@@ -338,6 +342,7 @@ try {
} }
if(!importOk){ throw "import error"} if(!importOk){ throw "import error"}
script_info({ progress: 20 }) script_info({ progress: 20 })
global._ERRORMAG = null;
reNameStep(job) reNameStep(job)
if(/2171/.test(par.customer)){ if(/2171/.test(par.customer)){
// var matrix = GEN.getMatrix({job:job}); // var matrix = GEN.getMatrix({job:job});
...@@ -607,7 +612,7 @@ function decompression(path, zips) { ...@@ -607,7 +612,7 @@ function decompression(path, zips) {
function changePath(path) { function changePath(path) {
return path.replace(/[^/]+\//ig, function(v){ return path.replace(/[^/]+\//ig, function(v){
if(v.length >= 10 && /\s/ig.test(v)) { if(v.length >= 10 && /\s/ig.test(v)) {
v = v.replace(" ", "") v = v.replace(" ", "\\ ")
return v.slice(0,6) + "~1/" return v.slice(0,6) + "~1/"
} else { } else {
return v return v
...@@ -618,9 +623,9 @@ function changePath(path) { ...@@ -618,9 +623,9 @@ function changePath(path) {
function autoUn(path, dirname) { function autoUn(path, dirname) {
if(/\.rar$/.test(path)){ if(/\.rar$/.test(path)){
fs.mkdir(dirname) fs.mkdir(dirname)
process.exec('unrar', ['x' , path, dirname, "-o+"]) process.exec('/opt/rar/unrar', ['x' , path, dirname, "-o+"])
} else { } else {
process.exec('7za', ['x' , path, "-o"+dirname, "-aoa"]) process.exec('/usr/local/lib/p7zip/7za', ['x' , path, "-o"+dirname, "-aoa"])
} }
} }
......
...@@ -608,7 +608,7 @@ ...@@ -608,7 +608,7 @@
{"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).)+_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).)+_bottom\.art$","^bot\\.art$","^bottom$","^bottom\\.art$"], "tl_name" : "bottom" },
{"orig_name" : ["int(\\d+)\\.art"], "tl_name" : "l_($1+1)"}, {"orig_name" : ["int(\\d+)\\.art"], "tl_name" : "l_($1+1)"},
{"orig_name" : ["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" : ["^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" : ["(\\d+)-(\\d+)-((?:(?!laser)[a-zA-Z])+)\\.drl$","\\.d(\\d+)-(\\d+)((?:(?!laser)[a-zA-Z])+)$"], "tl_name" : "d($1)-($2)-($3)"},
{"orig_name" : ["\\.ncd(\\d)-(\\d)$","\\.d(\\d+)-(\\d+)$","-(\\d+)-(\\d+)\\.drl$","(\\d+)-(\\d+)-laser\\.drl$","d(\\d+)-(\\d+)"], "tl_name" : "d_($1)-($2)"}, {"orig_name" : ["\\.ncd(\\d)-(\\d)$","\\.d(\\d+)-(\\d+)$","-(\\d+)-(\\d+)\\.drl$","(\\d+)-(\\d+)-laser\\.drl$","d(\\d+)-(\\d+)"], "tl_name" : "d_($1)-($2)"},
{"orig_name" : ["\\.ncdthru$"], "tl_name" : "drill" }, {"orig_name" : ["\\.ncdthru$"], "tl_name" : "drill" },
......
/* /*
NAME: NAME:
DESCRIPTION: 锣带输出; DESCRIPTION: 检查外层是否有异常;
PARAMETER: PARAMETER:
[ [
{
name : 'step',
title : 'step',
type : 'LineEdit',
property : {tool_tip : '目标step,默认是orig'},
},
{ {
name : 'auto_save', name : 'auto_save',
title : '自动保存', title : '自动保存',
...@@ -24,7 +30,7 @@ PARAMETER: ...@@ -24,7 +30,7 @@ PARAMETER:
HELP: HELP:
<html><body bgcolor="#DDECFE"> <html><body bgcolor="#DDECFE">
<font size="3" color="#003DB2"><p>功能简介</p></font> <font size="3" color="#003DB2"><p>功能简介</p></font>
<p> 锣带输出 </p> <p> 检查外层是否有异常 </p>
<br> <br>
<font size="3" color="#003DB2"><p>参数配置</p></font> <font size="3" color="#003DB2"><p>参数配置</p></font>
<p> step信息 </p> <p> step信息 </p>
...@@ -50,397 +56,114 @@ var Job = $.job || $.job_name; ...@@ -50,397 +56,114 @@ var Job = $.job || $.job_name;
var JobId = $.job_id; var JobId = $.job_id;
var db = $.db || IKM.db var db = $.db || IKM.db
var PAR = {} var PAR = {}
if ($.par) { PAR = $.par } else if ($.hasOwnProperty('script_parameter')){ PAR = JSON.parse($.script_parameter); } if ($.par) {
PAR = $.par
} else if ($.hasOwnProperty('script_parameter')){
PAR = JSON.parse($.script_parameter);
}
if (mode === "aimdfm") { if (mode === "aimdfm") {
var database = require("topsin.database"); var database = require("topsin.database");
database.addConnection($.conf.database_conf, "DFM"); database.addConnection($.conf.database_conf, "DFM");
var QDfm = database.query("DFM"); var QDfm = database.query("DFM");
$.QDfm = QDfm; $.QDfm = QDfm;
if ($.conf.product_type == "aimdfm") { if ($.conf.product_type == "aimdfm") {
QDfm.updateRow({ table: "pdm_aimdfm_task", data: { current_process_title: $.process_title }, where: { id: $.task_id } }); QDfm.updateRow({
table: "pdm_aimdfm_task",
data: {
current_process_title: $.process_title
},
where: { id: $.task_id }
});
} }
} }
require("topsin.genmath")
var genMath = new GenMath();
var gui = new NewGUI(GUI);
var Status = 'ok'; var Status = 'ok';
var resultData = []; var resultData = [];
var par = PAR;
var default_par = {
auto_save: "No",
step:"orig",
units:"mm"
}
for(var key in default_par){ if (!par.hasOwnProperty(key) || par[key] == ""){ par[key] = default_par[key] }}
var job = Job;
var Step;
var rou_layer = [];
try { try {
if(_.isEmpty(job)){throw "参数job不存在"} else { job = job.toLowerCase() } var par = PAR;
var default_par = {
step: "edit",
auto_save: "No",
}
for(var key in default_par){ // 设置默认属性
if (!par.hasOwnProperty(key) || par[key] == ""){
par[key] = default_par[key]
}
}
if(_.isEmpty(Job)){throw "参数Job不存在"}
var job = Job.toLowerCase()
if(!GEN.isJobExists({job:job})){throw "料号"+job+"不存在"} if(!GEN.isJobExists({job:job})){throw "料号"+job+"不存在"}
if(!GEN.isJobOpen({job:job})){ GEN.openJob({job:job}) }
if(mode == "aimdfm"){
if(GEN.checkInout({job:job,mode:"test"}) != 0){ throw "the job check" }
GEN.checkInout({job:job,mode:"out"});
}
var outLayers = getOutSideLayer({job:job})
// 选择工作step var steplist = GEN.getStepList({job:job})
var workstep = getWorkStep() steplist = steplist.filter(function(v){
if(workstep.length == 0){throw "未找到工作step"} var tmpreg = new RegExp(par.step,"ig")
return tmpreg.test(v)
workstep.forEach(function(step){ })
Step = step;
GEN.openStep({job:Job,name:step}); steplist.forEach(function(step) {
GEN.clearLayers(); GEN.openStep({job:job, name:step})
GEN.affectedLayer( {mode:'all',affected:'no'} ); GEN.units({type:"mm"})
GEN.COM( "sel_options,clear_mode=clear_after,display_mode=all_layers,area_inout=inside,area_select=select,select_mode=standard,area_touching_mode=exclude");
GEN.zoomHome();
var layer = "gtl";
GEN.workLayer({name:layer,display_number:2,clear_before:'yes'})
var drl_layer = layer + "_drl"
if(GEN.isLayerExists({job:job, layer:drl_layer})){GEN.deleteLayer({job:job, layer:drl_layer})}
GEN.createLayer({job:job,layer:drl_layer,type:'drill'})
GEN.selCopyOther({dest:'layer_name',target_layer:drl_layer,invert:'no',dx:0,dy:0,size:0})
if(GEN.isChklistExists({job:job,step:step,chklist:'tmp_chk'})){
GEN.COM("chklist_delete,chklist=tmp_chk")
}
GEN.COM("chklist_create,chklist=tmp_chk")
GEN.COM("chklist_show,chklist=tmp_chk")
GEN.COM("chklist_single,action=valor_analysis_drill,show=yes")
GEN.COM("chklist_pclear")
GEN.COM("chklist_cupd,chklist=valor_analysis_drill,nact=1,params=((pp_drill_layer="+drl_layer+
")(pp_rout_distance=200)(pp_tests=Hole Separation)(pp_extra_hole_type=Pth\;Via)(pp_use_compensated_rout=Skeleton)),mode=regular")
GEN.COM("chklist_pcopy,chklist=valor_analysis_drill,nact=1")
GEN.COM("chklist_ppaste,chklist=tmp_chk,row=0")
GEN.COM("chklist_run,chklist=tmp_chk,nact=1,area=profile")
GEN.COM("chklist_close,chklist=valor_analysis_drill,mode=hide")
GEN.COM("chklist_close,chklist=tmp_chk,mode=hide")
GEN.deleteLayer({job:job, layer:drl_layer})
var meas = GEN.getCheckMeas({job:job,step:step,chklist:'tmp_chk',nact:1})
meas = ["touchh gtl_drl 1.302 mil r5.315 r5.512 SG 2.0707502 6.2600882 2.0695853 6.2595058 1 R",
"touchh gtl_drl 3.222 mil r5.315 r5.512 SG 2.0915237 6.2635829 2.0883541 6.2641619 1 R",
"closeh gtl_drl 11.209 mil r5.512 r5.512 SG 2.0849209 6.2506255 2.0876766 6.2614906 1 R",
"closeh gtl_drl 11.828 mil r5.315 r5.512 SG 2.0904016 6.2611739 2.085407 6.2504523 1 R",
"closeh gtl_drl 12.656 mil r5.315 r5.512 SG 2.0733393 6.2606873 2.0856692 6.2635406 1 Y",
"closeh gtl_drl 12.733 mil r5.315 r5.512 SG 2.0727262 6.2583112 2.0821941 6.2497969 1 Y",
"closeh gtl_drl 13.151 mil r5.512 r5.512 SG 2.0820787 6.2496599 2.0717499 6.2578 1 Y",
"closeh gtl_drl 13.826 mil r5.512 r5.512 SG 2.0722601 6.2601694 2.0856793 6.2634983 1 Y",
"closeh gtl_drl 15.75 mil r5.315 r5.315 SG 2.0733709 6.260529 2.0889031 6.263142 1 G",
"closeh gtl_drl 16.901 mil r5.315 r5.512 SG 2.088911 6.2630973 2.0722949 6.2600094 1 G",
"overlap_width gtl_drl 2.191 mil r5.315 r5.512 SG 2.0889095 6.2640604 2.0910652 6.2636666 1 R",
"overlap_width gtl_drl 4.111 mil r5.315 r5.512 SG 2.0683732 6.2588998 2.0720503 6.2607382 1 R"
]
meas = meas.filter(function(v){return /^touch/.test(v)})
if(meas.length){
meas.forEach(function(v){
var tmparr = v.split(" ")
GEN.COM("sel_net_feat,operation=select,x="+tmparr[7]+",y="+tmparr[8]+",use_ffilter=no")
if(GEN.getSelectCount() > 0){GEN.selDelete()}
})
}
})
})
// 保存 // 保存
if(/yes/ig.test(par.auto_save)){GEN.checkInout({job:job,mode:"out"}); GEN.saveJob({ job: job });GEN.checkInout({job:job,mode:"in"});GEN.closeJob({job:job});} else {GEN.checkInout({job:job,mode:"in"})} if(/yes/ig.test(par.auto_save)){
GEN.checkInout({job:job,mode:"out"}) // 结束保存料号 关闭料号
GEN.saveJob({ job: job });
GEN.checkInout({job:job,mode:"in"})
GEN.closeJob({job:job})
} else {
GEN.checkInout({job:job,mode:"in"})
}
if (mode === "aimdfm") { if (mode === "aimdfm") {
$.QDfm.updateRow({table: "pdm_aimdfm_task",data: {progress: 33.33},where: { id: $.task_id }}); $.QDfm.updateRow({table: "pdm_aimdfm_task",data: {progress: 33.33},where: { id: $.task_id }});
if (GEN.hasError()) { Status = 'error';resultData.push({ type: "error", title: "GEN错误!", detail: [{ desc: _.join(GEN.STATUS, "\n") }] }); if (GEN.hasError()) {
Status = 'error';resultData.push({ type: "error", title: "GEN错误!", detail: [{ desc: _.join(GEN.STATUS, "\n") }] });
return {status: Status,result_data: resultData};
} else {
resultData.push({ type: "info", title: "操作完成, 请注意检查!" });
return {status: Status,result_data: resultData}; return {status: Status,result_data: resultData};
} else { resultData.push({ type: "info", title: "操作完成, 请注意检查!" }); return {status: Status,result_data: resultData}; } }
}else { return "Done" } }else {
return "Done"
}
} catch (e) { } catch (e) {
IKM.msg(_.join(GEN.STATUS, "\n"));IKM.msg(e);Status = 'error'; IKM.msg(_.join(GEN.STATUS, "\n"))
IKM.msg(e)
Status = 'error';
resultData.push({type: "error", title: "脚本执行出错!", detail: [{desc: _.toString(e)}]}); resultData.push({type: "error", title: "脚本执行出错!", detail: [{desc: _.toString(e)}]});
return (mode === "aimdfm") ? {status: Status, result_data: resultData} : "Error"; return (mode === "aimdfm") ? {status: Status, result_data: resultData} : "Error";
} }
function NewGUI (gui) { function getOutSideLayer(props){
this.msgBox = function(props){ // title type content button var job = props.job
props = props || {} var matrix = GEN.getMatrix({job:job})
return gui.msgBox(props.title || "title",props.type || "info",props.content || "content",props.button || ["ok", "cancel"]); var outLayers = [];
} for (var key in matrix) {
this.selectFromTreeview = gui.selectFromTreeview var info = matrix[key]
this.selectFile = function(props){ // "choose something", "*", true, "file", "/home/abby/fast_io" if(info.context == "board" && info.layer_type == "signal" && /top|bot/.test(info.side) ){
props = props || {} outLayers.push({
return gui.selectFile(props.title || "choose something",props.filter || "*",props.multiple || false, "file",""); name:key,
} side:info.side,
this.selectSingle = function(props) { info:info
props = props || {} })
return gui.selectSingle({
"title": props.title || "select",
"list": props.list || [],
"default": props["default"] || "",
"columns": props.columns || 2,
"gen":props.gen || GEN
});
}
this.selectMultiple = function(props) {
props = props || {}
return gui.selectMultiple({
"title": props.title || "select",
"list": props.list || [],
"defaultvalue": props["defaultvalue"] || [""],
"defaultsize": props["defaultsize"] || [200, 100],
"columns": props.columns || 2,
"gen":props.gen || GEN
});
}
this.selectFromTable = gui.selectFromTable
this.snapScreen = gui.snapScreen
this.imageViewer = gui.imageViewer
this.inputBox = gui.inputBox
this.showForm = gui.showForm
this.lockUnlockLayer = function(props){
props = props || {}
var tmp = {}
if (props.matrix) {
for (var key in props.matrix) {
var item = props.matrix[key]
tmp[key] = {
row : item.row,
name : item.name
}
}
}
return gui.lockUnlockLayer({
title: props.title || "lockUnlockLayer",
layermatrix:props.layermatrix || tmp
})
}
this.passwordBox = function(props){
props = props || {}
return gui.passwordBox({title:props.title || "password", password:props.password || "1212"})
}
this.selectJobLayer = function (props) {
props = props || {}
return gui.selectJobLayer({
layertypelist: props.layertypelist || [
{name: "all", display_name: "all", filter: function(x) { return x }},
{name: "signal", display_name: "signal", filter: function(x) { return x["layer_type"] === "signal"; }},
{name: "power_ground", display_name: "power_ground", filter: function(x) { return x["layer_type"] === "power_ground"; }},
{name: "mixed", display_name: "mixed", filter: function(x) { return x["layer_type"] === "mixed"; }},
{name: "solder_mask", display_name: "solder_mask", filter: function(x) { return x["layer_type"] === "solder_mask"; }},
{name: "silk_screen", display_name: "silk_screen", filter: function(x) { return x["layer_type"] === "silk_screen"; }},
{name: "solder_paste", display_name: "solder_paste", filter: function(x) { return x["layer_type"] === "solder_paste"; }},
{name: "drill", display_name: "drill", filter: function(x) { return x["layer_type"] === "drill"; }},
{name: "rout", display_name: "rout", filter: function(x) { return x["layer_type"] === "rout"; }},
{name: "document", display_name: "document", filter: function(x) { return x["layer_type"] === "document"; }}
],
//defaultlayertype: "ha",
joblist: props.joblist || [],
defaultJob: props.defaultJob || [], // select by default
steplist: props.steplist || [],
// defaultstep: "step3",
showstep: props.showstep || true,
selectmode: props.selectmode || "multiple", // single/multiple
layermatrix: props.layermatrix || { },
defaultlayer: props.defaultlayer || []
})
}
}
function getWorkStep(props){
var steplists = GEN.getStepList({job:job});
if(steplists.length == 0){return "该料号没有step"}
var steps_tmp = steplists.filter(function(name){
var reg = new RegExp(par.step, "ig")
return reg.test(name)
})
if(steplists.length == 0){return "根据脚本参数过滤出来的step不存在,请检查资料或者脚本参数配置!"}
var workstep = gui.selectMultiple({
title: "请先择工作step",
size:[200,100],
defaultsize:[200,100],
list: steplists.map(function(v){ var tmp = {}; tmp[v] = v ;return tmp}),
defaultvalue: steps_tmp,
columns: 1,
gen: GEN
})
if(workstep.length == 0 ) {return "没有先择step"}
return workstep
}
// rou输出
function output_rou(par) {
var info = par.info;
// var PL = GEN.getProfileLimits({job:Job,step:Step,units:'mm'});
var nc_set = 'zda';
var machine = 'sintai_excellon';
var layers = [];
for (var key in info.layer_info) {
layers.push(info.layer_info[key])
}
layers.forEach(function(layer){
if(/^yes$/i.test(layer.output_flag)){
if(GEN.getNcsetsList({job:Job,step:Step,layer:layer.layer_name}).indexOf(nc_set) >= 0) {
GEN.COM('ncrset_delete',{name:nc_set});
}
GEN.COM('ncrset_cur',{job:Job,step:Step,layer:layer.layer_name,ncset:nc_set});
GEN.COM('ncr_set_machine',{machine:machine,thickness:0});
GEN.COM('ncr_register',{angle:0,mirror:layer.is_mirror,xoff:0,yoff:0,version:1,xorigin:0,yorigin:0,xscale:layer.scale_x,yscale:layer.scale_y,xscale_o:0,yscale_o:0});
GEN.COM('ncr_cre_rout');
GEN.COM('ncr_ncf_export',{dir:info.output_path,name:layer.layer_name});
GEN.COM('ncrset_delete',{name:nc_set});
} }
})
}
// 用户配置参数
function confirm_gui(par) {
var rows={},n=0;
// var cam = IKM.get_jobinfo({jobname:Job,jobid:JobId,jobcategory:'work',jobinfo:'cam_serial_number',withspec:1});
var folder = 'rou';
var path = PAR.Outpath+"/"+folder;
fs.mkdir(path)
par.layers.forEach(function(layer){
n++;
rows[n] = {};
rows[n].sequence = n;
rows[n].layer_name = layer;
rows[n].scale_x = 1;
rows[n].scale_y = 1;
rows[n].output_flag = 'Yes';
rows[n].is_mirror = 'no';
})
rows.output_path = path;
// var v_data = GUI.showForm({
// title:"Rou输出参数确认单",
// defaultsize:[520,500],
// items: [
// {
// type : 'title',
// property:{
// title:'输出料号和名称',
// },
// n_columns:2,
// },
// {
// type : 'title',
// property:{
// title:'参数确认',
// },
// n_columns:8,
// },
// {
// name : 'layer_info',
// label :'参数确认',
// label_position : 'no',
// "class" : 'TL::Gtk2::TableFormPanel',
// expand : 1,
// property : {
// tl_columns :[
// {
// column_name:'layer_name',
// label:'层别名称',
// width:100,
// type:'label',
// },
// {
// column_name:'scale_x',
// label:'涨缩值X',
// width:80,
// type:'number',
// must_field:1,
// },
// {
// column_name:'scale_y',
// label:'涨缩值Y',
// width:80,
// type:'number',
// must_field:1,
// },
// {
// column_name:'output_flag',
// label:'是否输出',
// width:80,
// type:'radio',
// property:{
// tl_columns : 2,
// tl_list : [{'Yes' : '是'}, {'No':'否'}],
// },
// },
// {
// column_name:'is_mirror',
// label:'是否镜像',
// width:80,
// type:'radio',
// property:{
// tl_columns : 2,
// tl_list : [{'yes' : '是'}, {'no':'否'}],
// },
// }
// ],
// tl_rows:rows,
// },
// set_value_func : function(par){
// var data = par.value;
// Object.keys(data).forEach(function(row_name){
// Object.keys(data[row_name]).forEach(function(col_name){
// par.widget.set_value(row_name,col_name,data[row_name][col_name]);
// })
// })
// },
// get_value_func : function(par){return par.widget.get_all_value();},
// },
// {
// type : 'title',
// property:{
// title:'输出设置',
// },
// n_columns:1,
// },
// {
// name : 'username',
// label : '输出者:',
// type : 'string',
// value:GEN.getUserName(),
// width:100,
// must_field:1,
// },
// {
// name : 'output_path',
// label : '输出路径:',
// type : 'string',
// value:path,
// width:100,
// must_field:1,
// property : {
// editable:0,
// },
// buttons : [
// {
// name:'btn1',label:'选择路径',stock:'gtk-add',
// command:function(par){
// var folder = GUI.select_file({title:'选择路径',type:'select-folder',defaultdir:PAR.Outpath});
// if(!folder){return}
// p.formpanel.set_value('output_path', folder);
// }
// },
// ],
// },
// ]
// });
return rows;
}
// 文件导入设置
function input_layers(par) {
var info = par.info;
var layers = [];
for (var key in info.layer_info) {
layers.push(info.layer_info[key])
} }
layers.forEach(function(lyr){ return outLayers
if(/yes/i.test(lyr.output_flag)){
var name = info.output_path+'/'+lyr.layer_name;
var layer= lyr.layer_name.toLowerCase();
GEN.COM("input_manual_reset");
GEN.COM("input_manual_set,path="+name+",job="+par.job+",step="+par.step+
",format=Excellon2,data_type=ascii,units=mm,coordinates=absolute,zeroes=none,nf1=3,nf2=3,decimal=no,separator=nl,tool_units=mm,layer="+layer
+",wheel=,wheel_template=,nf_comp=0,multiplier=1,text_line_width=0.0024,signed_coords=no,break_sr=yes,drill_only=no,merge_by_rule=no,threshold=200,resolution=3");
GEN.COM("input_manual,script_path=");
GEN.COM("matrix_layer_context,job="+par.job+",matrix=matrix,layer="+layer+",context=misc");
}
})
} }
\ No newline at end of file
...@@ -78,29 +78,31 @@ for(var key in default_par){ if (!par.hasOwnProperty(key) || par[key] == ""){ pa ...@@ -78,29 +78,31 @@ for(var key in default_par){ if (!par.hasOwnProperty(key) || par[key] == ""){ pa
var job = Job; var job = Job;
try { try {
if(_.isEmpty(job)){throw "参数job不存在"} else { job = job.toLowerCase() } if(_.isEmpty(job)){throw "参数job不存在"} else { job = job.toLowerCase() }
if(!GEN.isJobExists({job:job})){throw "料号"+job+"不存在"} // if(!GEN.isJobExists({job:job})){throw "料号"+job+"不存在"}
if(!GEN.isJobOpen({job:job})){ GEN.openJob({job:job}) } // if(!GEN.isJobOpen({job:job})){ GEN.openJob({job:job}) }
if(mode == "aimdfm"){ if(GEN.checkInout({job:job,mode:"test"}) != 0){ throw "the job check" } else { GEN.checkInout({job:job,mode:"out"}) } } // if(mode == "aimdfm"){ if(GEN.checkInout({job:job,mode:"test"}) != 0){ throw "the job check" } else { GEN.checkInout({job:job,mode:"out"}) } }
var stepList = GEN.getStepList({job:job})
stepList = stepList.filter(function(step){
var reg = new RegExp(par.step,"ig")
return reg.test(step)
})
stepList.forEach(function(step){
GEN.openStep({job:job,name:step})
// var tool = GEN.getTool({job:job,step:step,layer:"ftdrill",units:"mm"},true); // {"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}}
// fs.writeFile("/home/toplinker/samba/scott_test/tmp", _.toString(tool))
// var stepList = GEN.getStepList({job:job})
// stepList = stepList.filter(function(step){
// var reg = new RegExp(par.step,"ig")
// process.exec('7za', ['x' ,"/tmp/topcamtest/custom0.zip", "-o/tmp/topcamtest/custom0", "-aoa"])
// return reg.test(step)
// })
process.exec('/usr/local/lib/p7zip/7za', ['x' ,"/tmp/tmp/custom0.zip","-o/tmp/tmp/custom0","-aoa"])
// /usr/local/lib/p7zip/7za x /tmp/topcamtest/custom0.zip -o/tmp/topcamtest/custom0 -aoa
}) // /usr/bin/sudo -u genesis -b -s /usr/bin/id -un > /tmp/topcamtest/test.txt
// 保存 // mkdir /tmp/test
// exportInfo(ret)
// /usr/bin/sudo -u genesis -b -s /usr/local/lib/p7zip/7za x /tmp/topcamtest/custom0.zip -o/tmp/topcamtest/custom0 -aoa
// sudo -u genesis -b -s /bin/csh -c "setenv DISPLAY ':0.0';cd /opt/toplinker/aimdfmserver/bin;./aimdfmserver > /dev/null"
// stepList.forEach(function(step){
// GEN.openStep({job:job,name:step});
// GEN.COM("tools_set,layer=ftdrill,slots=by_length")
// var tool = GEN.getTool({job:job,step:step,layer:"ftdrill",units:"mm"},true); // {"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}}
// fs.writeFile("/home/toplinker/samba/scott_test/tmp", _.toString(tool))
// })
// 保存
if(/yes/ig.test(par.auto_save)){GEN.checkInout({job:job,mode:"out"}); GEN.saveJob({ job: job });GEN.checkInout({job:job,mode:"in"});GEN.closeJob({job:job});} else {GEN.checkInout({job:job,mode:"in"})} if(/yes/ig.test(par.auto_save)){GEN.checkInout({job:job,mode:"out"}); GEN.saveJob({ job: job });GEN.checkInout({job:job,mode:"in"});GEN.closeJob({job:job});} else {GEN.checkInout({job:job,mode:"in"})}
if (mode === "aimdfm") { if (mode === "aimdfm") {
$.QDfm.updateRow({table: "pdm_aimdfm_task",data: {progress: 33.33},where: { id: $.task_id }}); $.QDfm.updateRow({table: "pdm_aimdfm_task",data: {progress: 33.33},where: { id: $.task_id }});
...@@ -112,4 +114,8 @@ try { ...@@ -112,4 +114,8 @@ try {
IKM.msg(_.join(GEN.STATUS, "\n"));IKM.msg(e);Status = 'error'; IKM.msg(_.join(GEN.STATUS, "\n"));IKM.msg(e);Status = 'error';
resultData.push({type: "error", title: "脚本执行出错!", detail: [{desc: _.toString(e)}]}); resultData.push({type: "error", title: "脚本执行出错!", detail: [{desc: _.toString(e)}]});
return (mode === "aimdfm") ? {status: Status, result_data: resultData} : "Error"; return (mode === "aimdfm") ? {status: Status, result_data: resultData} : "Error";
}
function exportInfo(info){
fs.writeFile("/home/toplinker/samba/scott_test/tmp", _.toString(info))
} }
\ No newline at end of file
...@@ -11,9 +11,6 @@ var JobId = $.job_id; ...@@ -11,9 +11,6 @@ var JobId = $.job_id;
try { try {
var _matrix = GEN.getMatrix({job:job}) var _matrix = GEN.getMatrix({job:job})
var _layers = Object.keys(_matrix) var _layers = Object.keys(_matrix)
var specialLayers = _layers.filter(function(v){return /^gnd\d?\\.art$|^in\d?\\.art$|^vcc\\.art$/.test(v)}) var specialLayers = _layers.filter(function(v){return /^gnd\d?\\.art$|^in\d?\\.art$|^vcc\\.art$/.test(v)})
......
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