Commit 0ab79f16 authored by Scott Sun's avatar Scott Sun

scott

parent 5fddd5fb
## yucca
* 101: 要密码 多个压缩包
* 103: 多套gerber todo
* 110: 无法创建profile todo
* 115: 缺少层 无法创建profile
* 117: gerber 可以使用 ; tgz 获取matrix会报错:
```js
{"message":"Result of expression 'result[result[item]['drl_start']]' [undefined] is not an object.","lineNumber":701,"sourceId":218669104,"fileName":"D:/TopJS/3.3.1/topjs_modules/topcam.gencom/index.js","expressionBeginOffset":26307,"expressionCaretOffset":26340,"expressionEndOffset":26350}
```
* 118: 多gerber tgz也有问题 todo
* 119: 7z 压缩包
* 122: 无法创建profile 创建过程就报错了
* 103: 多套gerber 尝试只导入一套 无法创建profile
* 110 122 133 140 142 143 144 149: 无法创建 profile
* 115: 缺少层 无法创建profile
* 117, 118, 124, 126,136(多odb,tgz版本): 多套gerber 既有gerber又有tgz gerber 可以使用 ; tgz 获取matrix会报错:
* 119: 7z 压缩包
* 131: 有gerber 有tgz gerber规则不同 tgz无法导入
* 141: 无文件
* 145 150 151 152 odb文件有问题无法手动导入
* 124/126 undo gerber+tgz
* 131 undo gerber+tgz
* 133: undo profile
* 136: undo 多套文件
* 140 142 143 unfo profile
* 141 undo 无文件
* 144: 无法创建profile
* 147 148 149 undo profile
\ No newline at end of file
......@@ -353,18 +353,10 @@ try {
if(hasProfile.match(/\n/ig).length == 1){
throw "创建profile失败"
} else {
GEN.affectedLayer({affected:'yes',mode:'all'})
GEN.selectByFilter({profile:"out"})
if(GEN.getSelectCount() > 0){
GEN.selDelete()
}
rmOutProfile({job:job, step:pcs_step})
}
} else {
GEN.affectedLayer({affected:'yes',mode:'all'})
GEN.selectByFilter({profile:"out"})
if(GEN.getSelectCount() > 0){
GEN.selDelete()
}
rmOutProfile({job:job, step:pcs_step})
}
GEN.closeStep()
script_info({ result_severity: "analysis panel_info" })
......@@ -974,7 +966,7 @@ try {
})
GEN.closeStep()
})
mvOutProfile({job:job, step:pcs_step})
IKM.msg("end wait for save")
......@@ -2521,4 +2513,72 @@ function getMinSym(sym) {
}
}
return min_size
}
function rmOutProfile(props) {
var job = props.job;
var step = props.step;
var matrix = GEN.getMatrix({job:job})
var board_layers = []
for (var key in matrix) {
if(matrix[key].context == "board") {
board_layers.push(key)
}
}
if(board_layers.length > 0) {
GEN.openStep({job:job, name:step})
GEN.affectedLayer({affected:'no',mode:'all'})
GEN.clearLayers()
GEN.selClearFeature()
board_layers.forEach(function(layer){
var bk = layer + "_tmpprofile";
if(GEN.isLayerExists({job:job, layer:bk})){
GEN.workLayer({name:bk,display_number:2,clear_before:'yes'})
GEN.selAllFeat()
if(GEN.getSelectCount() > 0) {GEN.selDelete()}
}
GEN.workLayer({name:layer,display_number:2,clear_before:'yes'})
GEN.selectByFilter({profile:"out"})
if(GEN.getSelectCount() > 0){
GEN.selMoveOther({target_layer:bk,invert:'no',dx:0,dy:0,size:0})
}
})
GEN.clearLayers()
GEN.selClearFeature()
GEN.closeStep()
}
}
function mvOutProfile (props) {
var job = props.job;
var step = props.step;
var matrix = GEN.getMatrix({job:job})
var profile_layers = []
var layers = Object.keys(matrix)
layers.forEach(function(layer){
if( /^(.*)_tmpprofile$/ig.test(layer) && layers.indexOf(RegExp.$1) >= 0) {
profile_layers.push({
layer:RegExp.$1,
profile_layer:layer
})
}
})
if(profile_layers.length >= 0) {
GEN.openStep({job:job, name:step})
GEN.affectedLayer({affected:'no',mode:'all'})
GEN.clearLayers()
GEN.selClearFeature()
profile_layers.forEach(function(item){
GEN.workLayer({name:item.profile_layer,display_number:2,clear_before:'yes'})
GEN.selAllFeat()
if(GEN.getSelectCount() > 0) {
GEN.selMoveOther({target_layer:item.layer,invert:'no',dx:0,dy:0,size:0})
}
GEN.deleteLayer({job:job, layer:[item.profile_layer]})
})
GEN.clearLayers()
GEN.selClearFeature()
GEN.closeStep()
}
}
\ No newline at end of file
......@@ -289,12 +289,14 @@ try {
GEN.COM("delete_comp")
GEN.closeStep()
}
} else if ((/yucca/ig.test(par.customer))) {
var matrix = GEN.getMatrix({job:job,type:"array"})
matrix.layer_type.forEach(function(v, i){
if( v == "document") {
GEN.COM("matrix_layer_type,job="+job+",matrix=matrix,layer="+matrix.name[i]+",type=signal")
}
})
}
GEN.checkInout({job:job,mode:"out"}) // 结束保存料号 关闭料号
GEN.saveJob({ job: job });
GEN.checkInout({job:job,mode:"in"})
GEN.closeJob({job:job})
var steplist = GEN.getStepList({job:job})
GEN.openStep({job:job,name:steplist[0]})
// 额外操作
......@@ -310,6 +312,12 @@ try {
}
})
}
GEN.checkInout({job:job,mode:"out"}) // 结束保存料号 关闭料号
GEN.saveJob({ job: job });
GEN.checkInout({job:job,mode:"in"})
GEN.closeJob({job:job})
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){
......@@ -437,6 +445,7 @@ function importJob(props,delSameJob){
return "job "+name+" exist";
}
}
props.path = changePath(props.path)
IKM.msg(props)
GEN.importJob(props);
}
......@@ -511,4 +520,15 @@ function decompression(path, zips) {
return false
})
if(zipfiles.length) {decompression(path, zips)}
}
function changePath(path) {
return path.replace(/[^/]+\//ig, function(v){
if(v.length >= 10 && /\s/ig.test(v)) {
v = v.replace(" ", "")
return v.slice(0,6) + "~1/"
} else {
return v
}
})
}
\ No newline at end of file
......@@ -505,7 +505,7 @@
{
"valid": function(props){
var file = props.file;
return /.+\.art$|\.l\d+$|\.r1$|\.sb$|\.st$|\.d\d+-\d+|\.[bt]sm$|\.drwg$|\.p\d+p$/ig.test(file.name)
return /.+\.art$|\.l\d+$|\.r1$|\.sb$|\.st$|\.d\d+-\d+|\.[bt]sm$|\.drwg$|\.p\d+p$|\.gdo/ig.test(file.name)
},
"type": "Gerber274x",
"format": "Gerber274x_2",
......@@ -595,28 +595,34 @@
}
],
"tl_name": [
{"orig_name" : ["^pm_top","paste.pri|pripaste","ppst\\.art|spt\\.art","assy[_-]?top\\.art","past_top","paste_top"], "tl_name" : "past_top" },
{"orig_name" : ["^pm_bot","paste.sec|secpaste","spst\\.art|spb\\.art","assy[_-]?bott?o?m?\\.art","past_bot","paste_bot"], "tl_name" : "past_botm" },
{"orig_name" : ["^pm_top","paste.pri|pripaste|solderpaste_top","ppst\\.art|spt\\.art","assy[_-]?top\\.art","past_top","paste_top"], "tl_name" : "past_top" },
{"orig_name" : ["^pm_bot","paste.sec|secpaste|solderpaste_bottom","spst\\.art|spb\\.art","assy[_-]?bott?o?m?\\.art","past_bot","paste_bot"], "tl_name" : "past_botm" },
{"orig_name" : ["silk.pri","pleg\\.art|sst\\.art","^ss_top","silk_top"], "tl_name" : "silk_top" },
{"orig_name" : ["silk.sec","sleg\\.art|ssb\\.art","^ss_bot","silk_bot"], "tl_name" : "silk_bot" },
{"orig_name" : ["\\.st$|\\.tsm$","mask.top\\.art|smt\\.art","mask.pri\\.art","psm\\.art","sm_top"], "tl_name" : "sm_top" },
{"orig_name" : ["\\.sb$|\\.bsm$","mask.bot\\.art|smb\\.art","mask.sec\\.art","ssm\\.art","sm_bot"], "tl_name" : "sm_botm" },
{"orig_name" : ["main_board_top\\.art$","^top$","^top.art$"], "tl_name" : "top" },
{"orig_name" : ["\\.st$|\\.tsm$|soldermask_top","mask.top\\.art|smt\\.art","mask.pri\\.art","psm\\.art","sm_top"], "tl_name" : "sm_top" },
{"orig_name" : ["\\.sb$|\\.bsm$|soldermask_bottom","mask.bot\\.art|smb\\.art","mask.sec\\.art","ssm\\.art","sm_bot"], "tl_name" : "sm_botm" },
{"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" : ["int(\\d+)\\.art"], "tl_name" : "l_($1+1)"},
{"orig_name" : ["^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+)\\.art","layer_(\\d+)"], "tl_name" : "l_($1)"},
{"orig_name" : ["^bot\\.art$","main_board_bottom\\.art$","^bottom$","^bottom\\.art$"], "tl_name" : "bottom" },
{"orig_name" : ["(\\d+)-(\\d+)-([A-Za-z]+)\\.drl$","\\.d(\\d+)-(\\d+)([A-Za-z]+)$"], "tl_name" : "d($1)-($2)-($3)"},
{"orig_name" : ["^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" : ["\\.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" : ["\\.rou$","^rout$"], "tl_name" : "rout" },
{"orig_name" : "fab.art", "tl_name" : "fab.art" },
{"orig_name" : ["multipack.art","^array$"], "tl_name" : "array" },
{"orig_name" : ["\\.R1$","outline"], "tl_name" : "outline" },
{"orig_name" : ["^contour\\.gdo$","\\.R1$","outline"], "tl_name" : "outline" },
{"orig_name" : ["^pst\\.art$","top-enig","enig_top"], "tl_name" : "enig_top" },
{"orig_name" : ["^sst\\.art$","bot-enig","enig_bot"], "tl_name" : "enig_bot" }
],
"mergerule" : {
profile:["past_top","sm_top"]
profile:["past_top","sm_top"],
drill: [
{orig_rule:["contournonplated"],drill_type:"non_plated",shape:"slot"},
{orig_rule:["contourplated"],drill_type:"plated",shape:"slot"},
{orig_rule:["thruholenonplated"],drill_type:"non_plated",shape:"hole"},
{orig_rule:["thruholeplated"],drill_type:"plated",shape:"hole"},
]
},
"extra": [
{
......@@ -633,8 +639,12 @@
var filectx = fs.readFile(path)
var tmp = filectx.match(/Holesize \d\. = [\d\.]+ Tolerance = [\S]+ [\S]+ [\S]+ Quantity = \d+\n/igm)
if(tmp && tmp.length) {
var units = "mm"
var res = tmp.map(function(v,i) {
var tmp2 = /Holesize \d\. = ([\d\.]+) Tolerance = ([\S]+) ([\S]+) ([\S]+) Quantity = \d+\n/igm.exec(v);
if(/MILS/ig.test(tmp2[4])){
units = "inch"
}
return {
size: tmp2[1],
tolerance: tmp2[2],
......@@ -643,9 +653,9 @@
row: i+1
}
})
// [{"size":"0.100300","tolerance":"+0.020000/-0.020000","type":"PLATED","unit":"MM","row":1}]
GEN.units({type:"mm"})
var toolsInfo = GEN.getTool({job:job, step:step, layer:layer, units:"mm"})
// [{"size":"0.100300","tolerance":"+0.020000/-0.020000","type":"PLATED","unit":"MM" MILS,"row":1}]
GEN.units({type:units})
var toolsInfo = GEN.getTool({job:job, step:step, layer:layer, units:units})
GEN.COM("tools_show,layer="+layer)
// {"1":{"count":"01156","num":"1","type":"plated","min_tol":"0","max_tol":"0","finish_size":"1","drill_size":"1","slot_len":"0","type2":"standard","shape":"hole","bit":0}}
GEN.COM("tools_tab_reset")
......@@ -658,17 +668,15 @@
Object.keys(toolsInfo).forEach(function(row, i){
var info = toolsInfo[row];
var numberrow = i;
var k = units == "mm" ? 1000 : 1;
var type = res[numberrow]? res[numberrow].type.toLowerCase() : info.type.toLowerCase();
var min_tol = res[numberrow]? Math.abs( res[numberrow].tolerance.split("/")[1] * 1000 ): info.min_tol;
var max_tol = res[numberrow]? Math.abs(res[numberrow].tolerance.split("/")[0] * 1000) : info.max_tol;
var drill_size = res[numberrow]? res[numberrow].size * 1000 : info.drill_size;
var min_tol = res[numberrow]? Math.abs( res[numberrow].tolerance.split("/")[1] * k ): info.min_tol;
var max_tol = res[numberrow]? Math.abs(res[numberrow].tolerance.split("/")[0] * k) : info.max_tol;
var drill_size = res[numberrow]? res[numberrow].size * k : info.drill_size;
GEN.COM("tools_tab_add,num="+row+",shape="+info.shape+",type="+alltype[type]
+",min_tol="+min_tol+",max_tol="+max_tol+",bit=,finish_size="+drill_size+",drill_size="+drill_size);
})
GEN.COM("tools_set,layer="+layer+",thickness=0,user_params=,slots=by_length")
// {"layer":"gfp2_1216_lte_rl03_am_m1610201_r01-bl-2-3-laser.drl",
// "info":[{"size":"0.090300","tolerance":"+0.020000/-0.020000","type":"PLATED","unit":"MM","row":1}]}
}
})
}
......
......@@ -99,54 +99,18 @@ try {
if(GEN.checkInout({job:job,mode:"test"}) != 0){ throw "the job check" }
GEN.checkInout({job:job,mode:"out"});
}
job = "88880017_117";
var step = "cad"
var layer= "drl"
var step = "pcbdata"
var job = "88880026_126"
var matrix = GEN.getMatrix({job:job,type:"array"})
matrix.layer_type.forEach(function(v, i){
if( v == "document") {
GEN.COM("matrix_layer_type,job="+job+",matrix=matrix,layer="+matrix.name[i]+",type=signal")
}
})
var func = "function(prop){return GUI.showForm(prop) }"
var ret = IKM.command(func, {
title: "确认是否加减物件",
size: "200x120",
items: {
name: 'main',
type: 'FormGridLayout',
property: { margin: 18, spacing: 20, columns: 2 },
pack: {},
child: [
{
name: "chanegitem",
type: "RadioBox",
property: {
item_list:[
{name:"yes", text:"yes"},
{name:"yes", text:"yes"}
]
},
pack: {
label: "是否加减物件",
column_span: 2,
label_alignment: "Left"
},
},
{
type: 'stretch'
}
]
},
values: {},
self: this
}, 1);
IKM.msg(ret)
// 保存
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") {
$.QDfm.updateRow({table: "pdm_aimdfm_task",data: {progress: 33.33},where: { id: $.task_id }});
......@@ -168,3 +132,5 @@ try {
return (mode === "aimdfm") ? {status: Status, result_data: resultData} : "Error";
}
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