/* NAME: DESCRIPTION: matrix改名和排序 PARAMETER: [ { name : 'customer', title : 'CUSTOMER 名', type : 'LineEdit', property : {tool_tip : '客户名称'} }, { name : 'job_name', title : '料号名', type : 'LineEdit', property : {tool_tip : '料号名'} } ] VERSION_HISTORY: V1.00 2020 3-30 Scott HELP:

功能简介

matrix改名和排序


参数配置

matrix改名和排序规则

注意事项

● 无


*/ // 引入模块 包 var $ = require('topcam.scriptfunc').argv(); var fs = require('fs'); var _ = require('lodash'); var IKM = $.ikm; var GEN = $.gen; var GUI = $.gui; var Job = $.job; try { var mode = "develop" // develop var config = require("../config.js") // 读取配置文件 var par = { // todo job:"i4", customer: "Customer_2" } var job = par.job || Job; if(_.isEmpty(job)) throw "没有传入料号名!"; job = job.toLowerCase() var custCfg = config.customer[par.customer] // 获取客户配置 var step = custCfg.step.toLowerCase() // 获取pcs_step // 料号验证 if(!GEN.isJobExists({job:job})){ throw "job "+ job+ " is not exist" } if(!GEN.isJobOpen({job:job})){GEN.openJob({job:job})} if(GEN.checkInout({job:job,mode:"test"}) != 0 && mode != "develop"){ throw "the job check" } GEN.checkInout({job:job,mode:"out"}); // if(config.hasOwnProperty("merge_drill")){ // todo // mergeDrill({job:job}) // } // start martix_tl_name var matrix = GEN.getMatrix({job:job}) var tl_name_matrix = tlNameMatrix({matrix:matrix,tl_name:custCfg.tl_name}) // 给matrix信息添加tl_name tl_name_matrix.forEach(function(item){ // * 调试 IKM.add({name:item.name, tl_name:item.tl_name}) }) IKM.add("",1) var format_cfg = config.data_format // 拿到数据标准化配置 // 排序和设属性 var ret = sortLayer({job:job, rule:format_cfg, matrix:tl_name_matrix}) if(ret.err){throw err} var after_sort_matrix = ret.sortNames // 设置钻孔 err = setDrill({job:job, matrix:after_sort_matrix}) if(err){throw err} // 改名 err = reName({job:job, matrix:after_sort_matrix, cfg:format_cfg}) if(err){throw err} return 'Done'; } catch (error) { GUI.msg(error); return 'Error'; } function tlNameMatrix(props){ // 设置标准名 var matrix = props.matrix var tlname_rules = [] props.tl_name.forEach(function(item){ if(typeof item.orig_name == "string"){ tlname_rules.push(item) } else { item.orig_name.forEach(function(name2){ tlname_rules.push({ orig_name: name2, tl_name: item.tl_name }) }) } }) var res = Object.keys(matrix).map(function(key){ // 将matrix信息添加tl_name 如果没有tl_name 就返回原信息 var val = matrix[key] if(val.hasOwnProperty("tl_name")){delete val.tl_name} var tlRule = tlname_rules.filter(function(rule){ if(rule.orig_name === key){return true} var reg = new RegExp(rule.orig_name,"ig") return reg.test(key) }) if(tlRule.length == 0){return val} for(var i=0;i top ; 2 => layer_2 function findSignal(num){ return signalLayer[Number(num-1)].name } function doDrill(drills){ // 分析钻孔层 return drills.map(function(v){ if(v.name == "drill" || v.name=="rout"){ return {start:findSignal(1), end:findSignal(layerCount), layer:v.name} } else { var tmp = /(\d+)-(\d+)/ig.exec(v.tl_name); if(tmp){ var start = findSignal(tmp[1]); var end = findSignal(tmp[2]); return {start:start, end:end, layer:v.name} } else { return 0; } } }) } var drillSetList = doDrill(drillLayer); // 分析得到钻孔设置结果 drillSetList = drillSetList.filter(function(v){return v!==0}) drillSetList.forEach(function(v){ GEN.matrixLayerDrill({job:job,layer:v.layer,start:v.start ,end:v.end}) }) } function reName(props) { // 改名 par{job:要改名的料号, rule: {要改名的规则} var job = props.job var matrix = props.matrix var cfg = props.cfg matrix = matrix.filter(function(v){return v.name != v.new_name}) var rename_list = matrix.map(function(item){ var new_name; var tl_name = item.tl_name var rule = item.rule if(rule === tl_name){ new_name = item.new_name } else { var reg = new RegExp(rule,"ig") var tmp = reg.exec(tl_name) if(!tmp){return undefined} var replaceArr = tmp.slice(1) new_name = item.new_name var params = {} for(var i = 0; i maxDrill.value? {name:str,value:Number(num[2])} : maxDrill; } tmp.push("L"+i+"-"+(i+1)); } return tmp; } var matrix = GEN.getMatrix({job:job}); GEN.openStep({job : job,name:step}); for(var key in matrix){ var val = matrix[key]; if(val.layer_type == "drill" && /(\d+)-(\d+)\.drl/ig.test(val.name)){ var mergeTo = getDrl(val.name) // 要合并到的地方 mergeTo.forEach(function(layerName){ if(GEN.isLayerExists({job : job ,layer:layerName.toLowerCase()}) && newdrills.indexOf(layerName.toLowerCase()) < 0){ GEN.deleteLayer({job:job, layer:layerName.toLowerCase()}) } if(!GEN.isLayerExists({job : job ,layer:layerName.toLowerCase()})){ GEN.createLayer({job:job,layer:layerName.toLowerCase(),conext:'board',type:val.layer_type}); newdrills.push(layerName.toLowerCase()) } GEN.workLayer({name:layerName.toLowerCase(),display_number:1,clear_before:'yes'}); GEN.copyLayer({source_job:job ,mode:'append',source_step:step,source_layer:val.name,dest_layer:layerName.toLowerCase()}); }) } } GEN.createLayer({job:job,layer:"b1-"+maxDrill.value,conext:'board',type:'drill'}); GEN.workLayer({name:"b1-"+maxDrill.value,display_number:1,clear_before:'yes'}); GEN.copyLayer({source_job:job ,mode:'append',source_step:step,source_layer:maxDrill.name,dest_layer:"b1-"+maxDrill.value}); GEN.affectedLayer({affected:"no",mode:"all"}); GEN.clearLayers(); GEN.closeStep(); }