Commit 1218d449 authored by Scott Sun's avatar Scott Sun

scott

parent b22f98b8
...@@ -137,7 +137,6 @@ var resultData = []; ...@@ -137,7 +137,6 @@ var resultData = [];
var ALL = {} var ALL = {}
var Omatrix = {}; var Omatrix = {};
try { try {
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
...@@ -152,7 +151,7 @@ try { ...@@ -152,7 +151,7 @@ try {
// 检查料号是否能够check out // 检查料号是否能够check out
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({ result_severity: "analysis start" }) script_info({ msg: "analysis start" })
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;
...@@ -163,7 +162,9 @@ try { ...@@ -163,7 +162,9 @@ 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({ msg: "analysis update_matrix_info" })
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})
...@@ -219,7 +220,7 @@ try { ...@@ -219,7 +220,7 @@ try {
}) })
GEN.clearLayers() GEN.clearLayers()
script_info({ result_severity: "analysis drill_stack" }) script_info({ msg: "analysis drill_stack" })
script_info({ progress: 70 }) script_info({ progress: 70 })
// * new 钻孔叠构 // * new 钻孔叠构
var cam_drill_structure = [] var cam_drill_structure = []
...@@ -361,7 +362,7 @@ try { ...@@ -361,7 +362,7 @@ try {
rmOutProfile({job:job, step:pcs_step}) rmOutProfile({job:job, step:pcs_step})
} }
GEN.closeStep() GEN.closeStep()
script_info({ result_severity: "analysis panel_info" }) script_info({ msg: "analysis panel_info" })
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){
...@@ -435,7 +436,7 @@ try { ...@@ -435,7 +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" }) script_info({ msg: "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层
...@@ -515,7 +516,7 @@ try { ...@@ -515,7 +516,7 @@ try {
console.log("===================================> 5 save drill info") console.log("===================================> 5 save drill info")
script_info({ result_severity: "analysis drill_info" }) script_info({ msg: "analysis drill_info" })
script_info({ progress: 75 }) script_info({ progress: 75 })
// * 获取pcs_step 和 array_step的钻孔信息 // * 获取pcs_step 和 array_step的钻孔信息
var drill_tool_info = {}; var drill_tool_info = {};
...@@ -530,6 +531,7 @@ try { ...@@ -530,6 +531,7 @@ try {
name:par.array_step name:par.array_step
} }
] ]
steps_drillinfo.forEach(function(item){ steps_drillinfo.forEach(function(item){
var type = item.type; var type = item.type;
var step = item.name; var step = item.name;
...@@ -537,7 +539,7 @@ try { ...@@ -537,7 +539,7 @@ try {
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;
...@@ -639,7 +641,7 @@ try { ...@@ -639,7 +641,7 @@ try {
}) })
console.log("=============================> 6 set smd bga") console.log("=============================> 6 set smd bga")
script_info({ result_severity: "analysis smd&bga" }) script_info({ msg: "analysis smd&bga" })
script_info({ progress: 80 }) script_info({ progress: 80 })
var allStep = GEN.getStepList({job:job}) var allStep = GEN.getStepList({job:job})
allStep.forEach(function(step){ allStep.forEach(function(step){
...@@ -783,6 +785,7 @@ try { ...@@ -783,6 +785,7 @@ try {
jobid: JobId, jobid: JobId,
jobinfohash: {ATS_surface_area_base_on:"Card"} jobinfohash: {ATS_surface_area_base_on:"Card"}
}) })
var jobpath = GEN.getJobPath({job:job}) var jobpath = GEN.getJobPath({job:job})
// if(GEN.GEN_TYPE == "genesis"){ // if(GEN.GEN_TYPE == "genesis"){
// jobpath = GEN.getJobPath({job:job}) // jobpath = GEN.getJobPath({job:job})
...@@ -790,7 +793,7 @@ try { ...@@ -790,7 +793,7 @@ 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({ msg: "analysis signal" })
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 })
...@@ -943,7 +946,7 @@ try { ...@@ -943,7 +946,7 @@ try {
if(par.erf){ if(par.erf){
tmpitem.erf = par.erf tmpitem.erf = par.erf
} }
script_info({ result_severity: "analysis run_signal_chk" }) script_info({ msg: "analysis run_signal_chk" })
createChklistAndRun({ // 创建checklist并运行 createChklistAndRun({ // 创建checklist并运行
layers: signalLayers, layers: signalLayers,
items: [tmpitem] items: [tmpitem]
...@@ -1005,7 +1008,7 @@ try { ...@@ -1005,7 +1008,7 @@ try {
IKM.msg("export") IKM.msg("export")
script_info({ result_severity: "analysis export" }) script_info({ msg: "analysis export" })
script_info({ progress: 95 }) script_info({ progress: 95 })
// 导出 // 导出
if(par.export_path != "" && par.export_mode != "" && par.export_submode != "" ){ if(par.export_path != "" && par.export_mode != "" && par.export_submode != "" ){
...@@ -1131,7 +1134,27 @@ function ANALYSIS_STACKUP(props){ ...@@ -1131,7 +1134,27 @@ function ANALYSIS_STACKUP(props){
if(!props.hasOwnProperty("jobcategory")){ props.jobcategory = 'work' } if(!props.hasOwnProperty("jobcategory")){ props.jobcategory = 'work' }
var matrix = GEN.getMatrix({job:job}) var matrix = GEN.getMatrix({job:job})
var layer_count = GEN.getLayerCount({job:job}) // ! var layer_count = GEN.getLayerCount({job:job}) // !
save_job_info({jobid:JobId,jobcategory:props.jobcategory,jobinfohash:{TL_layer_count:layer_count}}); save_job_info({jobid:JobId,jobcategory:props.jobcategory,jobinfohash:{TL_layer_count:layer_count}});
var job_attrs = db.query("",function(q){
return q.selectValue({
table:'pdm_job',
field_format:{job_attrs:'json'},
field:'job_attrs',
where:{id : JobId}
})
});
if (!job_attrs ) { job_attrs = {}}
job_attrs.layer_count = layer_count
db.query("",function(q){
return q.updateRow({
table:'pdm_job',
data:{job_attrs:job_attrs},
update_policy:{attr_data:'json_merge'},
where:{id : JobId}
})
});
_.values(matrix).sort(function(a,b){return a.row-b.row}).forEach(function(layer){ _.values(matrix).sort(function(a,b){return a.row-b.row}).forEach(function(layer){
layer.odb_name = layer.name; layer.odb_name = layer.name;
layer.name = layer.tl_name; layer.name = layer.tl_name;
...@@ -1265,6 +1288,7 @@ function selCopyLayer(props){ // 拷贝选择的到辅助层 ...@@ -1265,6 +1288,7 @@ function selCopyLayer(props){ // 拷贝选择的到辅助层
function save_job_info(props){ // 保存料号信息 function save_job_info(props){ // 保存料号信息
var jobid = props.jobid; var jobid = props.jobid;
var jobinfohash = props.jobinfohash; var jobinfohash = props.jobinfohash;
Object.keys(jobinfohash).forEach(function(key){ Object.keys(jobinfohash).forEach(function(key){
var val = jobinfohash[key]; var val = jobinfohash[key];
var value = db.query("",function(q){ var value = db.query("",function(q){
...@@ -1274,7 +1298,6 @@ function save_job_info(props){ // 保存料号信息 ...@@ -1274,7 +1298,6 @@ function save_job_info(props){ // 保存料号信息
where:{job_id:jobid, attr_name: key} where:{job_id:jobid, attr_name: key}
}) })
}); });
console.log("jobid:"+jobid+"==========dbjobvalue:" + val)
if(/done/ig.test(value) || !value){ if(/done/ig.test(value) || !value){
db.query("",function(q){ db.query("",function(q){
return q.insertRow({ return q.insertRow({
...@@ -2034,6 +2057,7 @@ function analysisDrill(par, step){ ...@@ -2034,6 +2057,7 @@ function analysisDrill(par, step){
GEN.workLayer({name:item,display_number:1,clear_before:"yes"}) GEN.workLayer({name:item,display_number:1,clear_before:"yes"})
GEN.COM("filter_set,filter_name=popup,update_popup=no,feat_types=pad"); GEN.COM("filter_set,filter_name=popup,update_popup=no,feat_types=pad");
GEN.COM("sel_ref_feat",{layers:tmplayer,use:"filter",mode:"touch",pads_as:"shape",f_types:"pad",polarity:"positive\;negative",include_syms:drill.symbol}) GEN.COM("sel_ref_feat",{layers:tmplayer,use:"filter",mode:"touch",pads_as:"shape",f_types:"pad",polarity:"positive\;negative",include_syms:drill.symbol})
// GEN.selRefFeat({layers:tmplayer, use:"filter",mode:"touch"})
GEN.COM("filter_reset,filter_name=popup") GEN.COM("filter_reset,filter_name=popup")
if(GEN.getSelectCount()>0){ if(GEN.getSelectCount()>0){
var res = "" var res = ""
...@@ -2043,7 +2067,7 @@ function analysisDrill(par, step){ ...@@ -2043,7 +2067,7 @@ function analysisDrill(par, step){
return /^r\d+/.test(item.symbol) return /^r\d+/.test(item.symbol)
}) })
pads = pads.sort(function(a,b){ pads = pads.sort(function(a,b){
return parseInt(a.symbol) - parseInt(b.symbol) return parseInt(a.symbol.slice(1)) - parseInt(b.symbol.slice(1))
}) })
res = pads[0].symbol.slice(1) res = pads[0].symbol.slice(1)
} }
......
...@@ -68,7 +68,7 @@ if (mode === "aimdfm") { ...@@ -68,7 +68,7 @@ if (mode === "aimdfm") {
var Status = 'ok'; var Status = 'ok';
var resultData = []; var resultData = [];
try { try {
script_info({ result_severity: "format start" }) script_info({ msg: "format start" })
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==""){
...@@ -229,7 +229,7 @@ try { ...@@ -229,7 +229,7 @@ try {
// 改名 // 改名
script_info({ result_severity: "format rename" }) script_info({ msg: "format rename" })
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}
...@@ -290,7 +290,7 @@ try { ...@@ -290,7 +290,7 @@ try {
err = setDrill({job:job}) err = setDrill({job:job})
if(err){throw err} if(err){throw err}
script_info({ result_severity: "format create profile" }) script_info({ msg: "format 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层
...@@ -301,7 +301,7 @@ try { ...@@ -301,7 +301,7 @@ try {
GEN.openStep({job:job, name:tmp_step}) GEN.openStep({job:job, name:tmp_step})
var now_profile = GEN.getProfile({job:job, step:tmp_step}) var now_profile = GEN.getProfile({job:job, step:tmp_step})
if(now_profile.match(/\n/ig).length == 1){ // 如果没有profile if(now_profile.match(/\n/ig).length == 1){ // 如果没有profile
if(profileRule[0] == "outline") { if(profileRule[0] == "outline" && /1352/ig.test(PAR.customer)) {
GEN.workLayer({name:'outline',display_number:2,clear_before:'yes'}) GEN.workLayer({name:'outline',display_number:2,clear_before:'yes'})
GEN.selAllFeat() GEN.selAllFeat()
if(GEN.getSelectCount() > 0) { if(GEN.getSelectCount() > 0) {
...@@ -317,7 +317,7 @@ try { ...@@ -317,7 +317,7 @@ 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({ result_severity: "创建profile失败" }) script_info({ msg: "创建profile失败" })
throw "创建profile失败" throw "创建profile失败"
} }
} }
...@@ -336,7 +336,6 @@ try { ...@@ -336,7 +336,6 @@ try {
$.QDfm.updateRow({ $.QDfm.updateRow({
table: "pdm_aimdfm_task", table: "pdm_aimdfm_task",
data: { data: {
result_severity: "format ok",
progress: 60 progress: 60
}, },
where: { id: $.task_id } where: { id: $.task_id }
...@@ -669,7 +668,6 @@ function mergeLaser(props){ // 合并钻孔 ...@@ -669,7 +668,6 @@ function mergeLaser(props){ // 合并钻孔
function createOutline(props){ function createOutline(props){
var profileRule = props.profileRule var profileRule = props.profileRule
console.log("----profileRule------->:" + _.toString(profileRule)); console.log("----profileRule------->:" + _.toString(profileRule));
var job = props.job var job = props.job
var step = props.step var step = props.step
var matrix = GEN.getMatrix({job:job}) var matrix = GEN.getMatrix({job:job})
...@@ -683,16 +681,25 @@ function createOutline(props){ ...@@ -683,16 +681,25 @@ function createOutline(props){
}) })
return flag return flag
}) })
console.log("---- outlines------->:" + _.toString(outlines));
var drill_layer = Object.keys(matrix).filter(function(v){return matrix[v].layer_type=="drill" && matrix[v].context == "board"}) var drill_layer = Object.keys(matrix).filter(function(v){return matrix[v].layer_type=="drill" && matrix[v].context == "board"})
var tmp = "drill_all"; var tmp = "drill_all";
if(GEN.isLayerExists({job:job, layer:tmp})) { GEN.deleteLayer({job:job, layer:tmp})} if(GEN.isLayerExists({job:job, layer:tmp})) { GEN.deleteLayer({job:job, layer:[tmp]})}
GEN.openStep({job:job, name:step}) drill_layer.forEach(function(d_layer) {
GEN.affectedLayer({affected:'yes',layer:drill_layer}) GEN.workLayer({name:d_layer,display_number:2,clear_before:'yes'})
GEN.selCopyOther({dest:'layer_name',target_layer:tmp,invert:'no',dx:0,dy:0,size:0}) GEN.selCopyOther({dest:'layer_name',target_layer:tmp,invert:'no',dx:0,dy:0,size:0})
GEN.affectedLayer({affected:'no',mode:'all'}) })
GEN.closeStep() GEN.closeStep()
if (outlines.indexOf("outline") >= 0) {
outlines = outlines.reduce(function(a,b){
if(b != "outline") {
a.push(b)
}
return a
}, ["outline"])
}
var tmp_outline var tmp_outline
if(outlines.length){ if(outlines.length){
if( outlines.length){ if( outlines.length){
...@@ -709,7 +716,7 @@ function createOutline(props){ ...@@ -709,7 +716,7 @@ function createOutline(props){
} }
}else{return false} }else{return false}
function cl(l){ function cl(l){
GEN.openStep({job:job, name:step}) GEN.openStep({job:job, name:step})
GEN.affectedLayer({affected:'no',mode:'all'}) GEN.affectedLayer({affected:'no',mode:'all'})
GEN.workLayer({name:l,display_number:2,clear_before:"yes"}) GEN.workLayer({name:l,display_number:2,clear_before:"yes"})
var bk = l + "_bk" var bk = l + "_bk"
...@@ -808,4 +815,4 @@ function script_info(props){ // result_severity progress ...@@ -808,4 +815,4 @@ function script_info(props){ // result_severity progress
where: { id: $.task_id } where: { id: $.task_id }
}); });
} }
} }
\ No newline at end of file
...@@ -89,7 +89,7 @@ var resultData = []; ...@@ -89,7 +89,7 @@ var resultData = [];
var import_info = []; var import_info = [];
var inputState = []; var inputState = [];
try { try {
script_info({ result_severity: "import start" }) script_info({ msg: "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({
...@@ -164,8 +164,8 @@ try { ...@@ -164,8 +164,8 @@ try {
} else { } else {
jobFiles = fs.listDir(jobFile[0].path) jobFiles = fs.listDir(jobFile[0].path)
} }
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解压 // 将jobFile下的zip解压
decompression(jobFile[0].path, []) decompression(jobFile[0].path, [])
...@@ -198,7 +198,7 @@ try { ...@@ -198,7 +198,7 @@ try {
// 分析料号文件 得到料号导入信息 导入类型 // 分析料号文件 得到料号导入信息 导入类型
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){ if(jobInfo.data.length == 0){
script_info({ result_severity: "file error" }) script_info({ msg: "file error" })
throw "file error"} throw "file error"}
var importOk = false; // 是否成功导入 var importOk = false; // 是否成功导入
...@@ -301,7 +301,7 @@ try { ...@@ -301,7 +301,7 @@ try {
GEN.COM("input_manual") GEN.COM("input_manual")
importOk = true importOk = true
} }
if(!importOk){ script_info({ result_severity: "import error" }); throw "import error"} if(!importOk){ script_info({ msg: "import error" }); throw "import error"}
script_info({ progress: 20 }) script_info({ progress: 20 })
reNameStep(job) reNameStep(job)
if(/2171/.test(par.customer)){ if(/2171/.test(par.customer)){
...@@ -338,7 +338,7 @@ try { ...@@ -338,7 +338,7 @@ try {
} }
}) })
} }
GEN.closeStep()
GEN.checkInout({job:job,mode:"out"}) // 结束保存料号 关闭料号 GEN.checkInout({job:job,mode:"out"}) // 结束保存料号 关闭料号
GEN.saveJob({ job: job }); GEN.saveJob({ job: job });
GEN.checkInout({job:job,mode:"in"}) GEN.checkInout({job:job,mode:"in"})
...@@ -356,7 +356,7 @@ try { ...@@ -356,7 +356,7 @@ try {
import_html += "</table>" import_html += "</table>"
// name type date user // name type date user
resultData.push({type: "info",title:"导入资料列表",detail: [{ desc: import_html }] }) resultData.push({type: "info",title:"导入资料列表",detail: [{ desc: import_html }] })
script_info({ result_severity: "import ok" }) script_info({ msg: "import ok" })
if (mode === "aimdfm") { if (mode === "aimdfm") {
$.QDfm.updateRow({ $.QDfm.updateRow({
table: "pdm_aimdfm_task", table: "pdm_aimdfm_task",
...@@ -395,7 +395,6 @@ function delSameJob(props){ ...@@ -395,7 +395,6 @@ function delSameJob(props){
var job = props.job var job = props.job
var delSame = props.delSame var delSame = props.delSame
console.log("======================>delsame:"+ delSame); console.log("======================>delsame:"+ delSame);
if(GEN.isJobExists({job:job})){ if(GEN.isJobExists({job:job})){
if(/^yes$/ig.test(delSame)){ if(/^yes$/ig.test(delSame)){
if(GEN.isJobOpen({job:job})){ GEN.closeJob({job:job}) } if(GEN.isJobOpen({job:job})){ GEN.closeJob({job:job}) }
...@@ -535,6 +534,7 @@ function script_info(props){ // result_severity progress ...@@ -535,6 +534,7 @@ function script_info(props){ // result_severity progress
} }
} }
function decompression(path, zips) { function decompression(path, zips) {
var files = fs.listDir(path) var files = fs.listDir(path)
var count = 0; var count = 0;
......
...@@ -679,6 +679,7 @@ ...@@ -679,6 +679,7 @@
GEN.COM("tools_set,layer="+layer+",thickness=0,user_params=,slots=by_length") GEN.COM("tools_set,layer="+layer+",thickness=0,user_params=,slots=by_length")
} }
}) })
GEN.saveJob({ job: job });
} }
} }
] ]
...@@ -964,7 +965,6 @@ ...@@ -964,7 +965,6 @@
], ],
"mergerule" : { "mergerule" : {
profile:["silk_top"], profile:["silk_top"],
drill:["(\\d+)-(\\d+)\\.drl$","\\.d(\\d+)$"],
laser : { laser : {
tl_name: "drill($1)-($2)", tl_name: "drill($1)-($2)",
regs: ["(\\d+)-(\\d+)\\.drl$"] regs: ["(\\d+)-(\\d+)\\.drl$"]
......
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