/*
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();
}