Commit 5faae354 authored by Scott Sun's avatar Scott Sun

scott

parent 684776ec
...@@ -105,6 +105,7 @@ var GEN = $.gen; ...@@ -105,6 +105,7 @@ var GEN = $.gen;
var GUI = $.gui || {}; var GUI = $.gui || {};
var Job = $.job || $.job_name; var Job = $.job || $.job_name;
var JobId = $.job_id; var JobId = $.job_id;
var zip = require('topsin.zip');
var db = $.db || IKM.db var db = $.db || IKM.db
var PAR = {} var PAR = {}
if ($.par) { if ($.par) {
...@@ -534,6 +535,7 @@ try { ...@@ -534,6 +535,7 @@ try {
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;
if(GEN.isStepExists({job:job, step: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})){
...@@ -570,6 +572,7 @@ try { ...@@ -570,6 +572,7 @@ try {
} }
} }
}) })
}
}) })
// 删除 // 删除
...@@ -579,7 +582,6 @@ try { ...@@ -579,7 +582,6 @@ try {
where:{job_id:JobId} where:{job_id:JobId}
}) })
}); });
var seq_index = 1 ; var seq_index = 1 ;
Object.keys(drill_tool_info).forEach(function(layer){ Object.keys(drill_tool_info).forEach(function(layer){
var datalist = [] var datalist = []
...@@ -771,8 +773,8 @@ try { ...@@ -771,8 +773,8 @@ try {
}) })
var info = { var info = {
min_line_width: ["line","user_nor_line"], min_line_width: ["line","user_nor_line"],
min_line_spacing: ["l2l"], min_line_spacing: ["l2l","user_nor_line2nor_line"],
min_line2pad: ["p2line","user_bga2nor_line","user_smd2nor_line"], min_line2pad: ["p2line","user_010052nor_line","user_bga2nor_line-1","user_smd2nor_line","user_self_spacing_smd2l"],
min_pad2pad: ["p2p", "smd2smd", "smd2pad","via2via","bga2pad"], min_pad2pad: ["p2p", "smd2smd", "smd2pad","via2via","bga2pad"],
min_ar_laser:["laser_via_ar"], min_ar_laser:["laser_via_ar"],
min_ar_via:["via_ar"], min_ar_via:["via_ar"],
...@@ -855,6 +857,39 @@ try { ...@@ -855,6 +857,39 @@ try {
} }
}) })
} }
// 新增最小Pad/SM开窗
GEN.affectedLayer({affected:'no',mode:'all'})
GEN.selClearFeature()
GEN.workLayer({name:item.signalL,display_number:2,clear_before:'yes'})
GEN.selectByFilter({feat_types:"pad", profile:"in"})
if(GEN.getSelectCount() > 0){
selCopyLayer({job:job, layer:item.signalL + "_pad"})
var syms = GEN.getLayerSymsHist({job:job,step:step,layer:item.signalL + "_pad"})
save_layerinfo({
jobid: JobId,
layer: item.signalL,
layerinfohash: {
org_min_pad_size: getMinSym(syms)
}
})
if(item.solderL) {
GEN.workLayer({name:item.solderL,display_number:2,clear_before:'yes'})
GEN.selRefFeat({layers:item.signalL + "_pad", use:"filter", mode:"touch"})
if(GEN.getSelectCount() >0) {
selCopyLayer({job:job, layer:item.signalL + "_sm"})
var syms2 = GEN.getLayerSymsHist({job:job,step:step,layer:item.signalL + "_sm"})
save_layerinfo({
jobid: JobId,
layer: item.signalL,
layerinfohash: {
org_min_pad_sm_opening_size: getMinSym(syms2)
}
})
GEN.deleteLayer({job:job, layer:item.signalL + "_sm"})
}
}
GEN.deleteLayer({job:job, layer:item.signalL + "_pad"})
}
}) })
GEN.clearLayers() GEN.clearLayers()
GEN.affectedLayer({ affected: 'no', mode: 'all' }) GEN.affectedLayer({ affected: 'no', mode: 'all' })
...@@ -873,7 +908,6 @@ try { ...@@ -873,7 +908,6 @@ try {
return {layer:v,symbol:symbol,start:tmp_matrix[v]["drl_start"],end:tmp_matrix[v]["drl_end"]} return {layer:v,symbol:symbol,start:tmp_matrix[v]["drl_start"],end:tmp_matrix[v]["drl_end"]}
}) })
var drillRes = analysisDrill(drillToSignals,step) // 钻孔分析结果 var drillRes = analysisDrill(drillToSignals,step) // 钻孔分析结果
// fs.writeFile("/home/toplinker/samba/scott_test/tmp",_.toString(drillRes))
console.log("===============drillRes:" + _.toString(drillRes)); console.log("===============drillRes:" + _.toString(drillRes));
drillRes.forEach(function(item){ drillRes.forEach(function(item){
save_layerinfo({ save_layerinfo({
...@@ -918,7 +952,6 @@ try { ...@@ -918,7 +952,6 @@ try {
}) })
// signal层分析结果 // signal层分析结果
var res = analysisChkAttr({layers:signalLayers, info:info, step:step, job:job, oChecklistName:oChecklistName,jobpath:jobpath}) var res = analysisChkAttr({layers:signalLayers, info:info, step:step, job:job, oChecklistName:oChecklistName,jobpath:jobpath})
// 数据入库 // 数据入库
Object.keys(res).forEach(function(key){ Object.keys(res).forEach(function(key){
var val = res[key] var val = res[key]
...@@ -1580,16 +1613,27 @@ function analysis(props){ ...@@ -1580,16 +1613,27 @@ function analysis(props){
return milling.toFixed(4) return milling.toFixed(4)
} }
T_m_p.prototype.analysis_board_has_attr = function(props){ // board层中检查存在01005属性物件时 T_m_p.prototype.analysis_board_has_attr = function(props){ // board层中检查存在01005属性物件时
GEN.openStep({job:this.job,name:this.pcs_step}) var step = this.pcs_step
GEN.clearLayers() var job_path = GEN.getJobPath({job:job})
GEN.affectedLayer({affected:'yes',layer:this.matrixInfo.mBoardLayer,clear_before:'yes'}); var step_paths = fs.listDir(job_path + "/steps", 1).filter(function(item){return item.isDir}).map(function(item){return item.name})
GEN.selClearFeature() var ret = "no";
GEN.selectByFilter({attribute:props}) if(step_paths.indexOf(step) >= 0) {
var res = GEN.getSelectCount() > 0? "yes" : "no" var layers = fs.listDir(job_path + "/steps/" + step +"/layers", 1).filter(function(item){return item.isDir})
GEN.affectedLayer({affected:'no',mode:'all'}); layers = layers.filter(function(v){return v.name === "comp_+_bot" || v.name === "comp_+_top"})
GEN.selClearFeature() layers.forEach(function(item){
GEN.closeStep() fs.copyFile( item.path + "/components.Z", item.path + "/components.zip")
return res zip.unzip(item.path + "/components.zip");
if(fs.fileExists(item.path + "/components")){
var datas = fs.readFile(item.path + "/components")
datas.match(/PRP ALT_SYMBOLS '\([^)]*\)'/ig).forEach(function(v) {
if(/01005/.test(v)) {
ret = "yes"
}
})
}
})
}
return ret
} }
T_m_p.prototype.analysis_vc_src_EDGE_PLATING = function(props){ T_m_p.prototype.analysis_vc_src_EDGE_PLATING = function(props){
var res = "no" var res = "no"
...@@ -1734,7 +1778,7 @@ function smdAnalysis(props){ ...@@ -1734,7 +1778,7 @@ function smdAnalysis(props){
selCopyLayer({job:job,layer:tmp_layer}) selCopyLayer({job:job,layer:tmp_layer})
var symbols = GEN.getLayerSymsHist({job:job,layer:tmp_layer,step:step}) var symbols = GEN.getLayerSymsHist({job:job,layer:tmp_layer,step:step})
GEN.workLayer({name:tmp_layer,display_number:2,clear_before:'yes'}) GEN.workLayer({name:tmp_layer,display_number:2,clear_before:'yes'})
var symbolInfo = symbolAnalysis({symbols:symbols,filterReg:/^rect/}) var symbolInfo = symbolAnalysis({symbols:symbols,filterReg:/^(rect|oval)/})
if (!res.hasOwnProperty(layer.signalL)){ if (!res.hasOwnProperty(layer.signalL)){
res[layer.signalL] = {} res[layer.signalL] = {}
} }
...@@ -1757,7 +1801,7 @@ function smdAnalysis(props){ ...@@ -1757,7 +1801,7 @@ function smdAnalysis(props){
GEN.selClearFeature() GEN.selClearFeature()
GEN.workLayer({name:solderL_tmp,display_number:2,clear_before:"yes"}) GEN.workLayer({name:solderL_tmp,display_number:2,clear_before:"yes"})
var symbols_solder = GEN.getLayerSymsHist({job:job,layer:solderL_tmp,step:step}) var symbols_solder = GEN.getLayerSymsHist({job:job,layer:solderL_tmp,step:step})
var symbolInfo_solder = symbolAnalysis({symbols:symbols_solder,filterReg:/^rect/}) var symbolInfo_solder = symbolAnalysis({symbols:symbols_solder,filterReg:/^(rect|oval)/})
if(symbolInfo_solder["min_width"]){res[layer.signalL].min_smd_sm_width = symbolInfo_solder["min_width"]} if(symbolInfo_solder["min_width"]){res[layer.signalL].min_smd_sm_width = symbolInfo_solder["min_width"]}
if(symbolInfo_solder["min_length"]){res[layer.signalL].min_smd_sm_length = symbolInfo_solder["min_length"]} if(symbolInfo_solder["min_length"]){res[layer.signalL].min_smd_sm_length = symbolInfo_solder["min_length"]}
GEN.deleteLayer({job:job,layer:solderL_tmp}) GEN.deleteLayer({job:job,layer:solderL_tmp})
...@@ -1773,7 +1817,7 @@ function smdAnalysis(props){ ...@@ -1773,7 +1817,7 @@ function smdAnalysis(props){
function symbolAnalysis(props){ function symbolAnalysis(props){
var symbols = Object.keys(props.symbols).reduce(function(a,b){ var symbols = Object.keys(props.symbols).reduce(function(a,b){
if(props.filterReg.test(b)){ if(props.filterReg.test(b)){
var res = /^rect(\d+\.\d+|\d+)x(\d+\.\d+|\d+)/ig.exec(b).slice(1) var res = /^(?:rect|oval)(\d+\.\d+|\d+)x(\d+\.\d+|\d+)/ig.exec(b).slice(1)
var num1 = Number(res[0]), num2 = Number(res[1]) var num1 = Number(res[0]), num2 = Number(res[1])
if(num1 > num2){ if(num1 > num2){
var tmp = num2 var tmp = num2
...@@ -1918,11 +1962,12 @@ function analysisChkAttr(par) { ...@@ -1918,11 +1962,12 @@ function analysisChkAttr(par) {
nact: 1, nact: 1,
attr: v + "_min_" + type attr: v + "_min_" + type
}) })
if (a === "N/A" && /\d+/.test(tmp)) { console.log("===================== " + v + "_min_" + type + " -> " + tmp);
if (a === "N/A" && /^\d+\.?\d*$/.test(tmp)) {
tmp = Number(tmp) tmp = Number(tmp)
a = tmp.toFixed(2) a = tmp.toFixed(2)
} }
if (/\d+/.test(a) && /\d+/.test(tmp) && Number(tmp) < Number(a)) { if (/^\d+\.?\d*$/.test(a) && /^\d+\.?\d*$/.test(tmp) && Number(tmp) < Number(a)) {
tmp = Number(tmp) tmp = Number(tmp)
a = tmp.toFixed(2) a = tmp.toFixed(2)
} }
...@@ -2452,3 +2497,22 @@ function script_info(props){ // result_severity progress ...@@ -2452,3 +2497,22 @@ function script_info(props){ // result_severity progress
}); });
} }
} }
function getMinSym(sym) {
var min_size;
for (var key in sym) {
var info = sym[key]
if(info.size){info.size = Number(info.size)}
if(!info.size) {
var width = Number(info.width)
var height = Number(info.height)
info.size = width > height ? height : width;
}
if(info.size) {
if(!min_size){min_size = info.size}
else if (info.size < min_size) {
min_size = info.size
}
}
}
return min_size
}
\ No newline at end of file
...@@ -264,9 +264,7 @@ try { ...@@ -264,9 +264,7 @@ try {
if(all_layer.indexOf("outline") >= 0) { profileRule.unshift("outline")} if(all_layer.indexOf("outline") >= 0) { profileRule.unshift("outline")}
if(profileRule){ if(profileRule){
// 判断有没有profile // 判断有没有profile
var board_layer = all_layer.filter(function(v){
return tmp_matrix[v].context == "board"
})
var tmp_step = GEN.getStepList({job:job})[0] var tmp_step = GEN.getStepList({job:job})[0]
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})
...@@ -277,6 +275,10 @@ try { ...@@ -277,6 +275,10 @@ try {
throw "创建profile失败" throw "创建profile失败"
} }
} else { } else {
var now_matrix = GEN.getMatrix({job:job})
var board_layer = Object.keys(now_matrix).filter(function(v){
return now_matrix[v].context == "board"
})
GEN.affectedLayer({affected:'yes',layer: board_layer, clear_before:"yes"}) GEN.affectedLayer({affected:'yes',layer: board_layer, clear_before:"yes"})
GEN.selectByFilter({profile:"out"}) GEN.selectByFilter({profile:"out"})
if(GEN.getSelectCount() > 0){ if(GEN.getSelectCount() > 0){
......
...@@ -167,11 +167,9 @@ try { ...@@ -167,11 +167,9 @@ try {
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解压
jobFiles.forEach(function(item){ decompression(jobFile[0].path, [])
if(item.suffix === "zip"){
zip.unzip(item.path); jobFiles = fs.listDir(jobFile[0].path)
}
})
// 分析料号文件 得到料号导入信息 导入类型 // 分析料号文件 得到料号导入信息 导入类型
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 })
...@@ -502,3 +500,16 @@ function script_info(props){ // result_severity progress ...@@ -502,3 +500,16 @@ function script_info(props){ // result_severity progress
}); });
} }
} }
function decompression(path, zips) {
var files = fs.listDir(path)
var zipfiles = files.filter(function(item){
if(item.suffix === "zip" && zips.indexOf(item.path) < 0){
zips.push(item.path)
zip.unzip(item.path);
return true
}
return false
})
if(zipfiles.length) {decompression(path, zips)}
}
\ No newline at end of file
...@@ -565,16 +565,16 @@ ...@@ -565,16 +565,16 @@
} }
], ],
"tl_name": [ "tl_name": [
{"orig_name" : ["assytop\\.art","past_top","paste_top"], "tl_name" : "past_top" }, {"orig_name" : ["^pm_top","paste.pri","assytop\\.art","past_top","paste_top"], "tl_name" : "past_top" },
{"orig_name" : ["assybot\\.art","past_bot","paste_bot"], "tl_name" : "past_botm" }, {"orig_name" : ["^pm_bot","paste.sec","assybot\\.art","past_bot","paste_bot"], "tl_name" : "past_botm" },
{"orig_name" : ["pleg\\.art","^ss_top","silk_top"], "tl_name" : "silk_top" }, {"orig_name" : ["silk.pri","pleg\\.art","^ss_top","silk_top"], "tl_name" : "silk_top" },
{"orig_name" : ["sleg\\.art","^ss_bot","silk_bot"], "tl_name" : "silk_bot" }, {"orig_name" : ["silk.sec","sleg\\.art","^ss_bot","silk_bot"], "tl_name" : "silk_bot" },
{"orig_name" : ["mask_top\\.art","psm\\.art","sm_top"], "tl_name" : "sm_top" }, {"orig_name" : ["mask.top\\.art","mask.pri\\.art","psm\\.art","sm_top"], "tl_name" : "sm_top" },
{"orig_name" : ["mask_bot\\.art","ssm\\.art","sm_bot"], "tl_name" : "sm_botm" }, {"orig_name" : ["mask.bot\\.art","mask.sec\\.art","ssm\\.art","sm_bot"], "tl_name" : "sm_botm" },
{"orig_name" : ["^top$","^top.art$"], "tl_name" : "top" }, {"orig_name" : ["^top$","^top.art$"], "tl_name" : "top" },
{"orig_name" : ["^l(\\d+)_.*\\.art$","^0?(\\d+)_.*\\.art$","^l(\\d+)\\.art$","^0(\\d+).*ccp_ms","^s(\\d+)\\.art","lay(\\d+)\\.art","layer_(\\d+)"], "tl_name" : "l_($1)"}, {"orig_name" : ["\\.l(\d+)$","^l(\\d+).*\\.art$","^0?(\\d+)_.*\\.art$","^l(\\d+)\\.art$","^0(\\d+).*ccp_ms","^s(\\d+)\\.art","lay(\\d+)\\.art","layer_(\\d+)"], "tl_name" : "l_($1)"},
{"orig_name" : ["^bottom$","^bottom\\.art$"], "tl_name" : "bottom" }, {"orig_name" : ["^bottom$","^bottom\\.art$"], "tl_name" : "bottom" },
{"orig_name" : ["-(\\d+)-(\\d+)\\.drl$","(\\d+)-(\\d+)-laser\\.drl$","d(\\d+)-(\\d+)"], "tl_name" : "d_($1)-($2)"}, {"orig_name" : ["\\.d(\\d+)-(\\d+)$","-(\\d+)-(\\d+)\\.drl$","(\\d+)-(\\d+)-laser\\.drl$","d(\\d+)-(\\d+)"], "tl_name" : "d_($1)-($2)"},
{"orig_name" : ["\\.rou$","^rout$"], "tl_name" : "rout" }, {"orig_name" : ["\\.rou$","^rout$"], "tl_name" : "rout" },
{"orig_name" : "fab.art", "tl_name" : "fab.art" }, {"orig_name" : "fab.art", "tl_name" : "fab.art" },
{"orig_name" : ["multipack.art","^array$"], "tl_name" : "array" }, {"orig_name" : ["multipack.art","^array$"], "tl_name" : "array" },
...@@ -617,7 +617,10 @@ ...@@ -617,7 +617,10 @@
// {"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}} // {"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") GEN.COM("tools_tab_reset")
var alltype = { var alltype = {
plated: "plate" plated: "plate",
non_plated: "nplate",
laser: "via",
via: "via"
} }
Object.keys(toolsInfo).forEach(function(row){ Object.keys(toolsInfo).forEach(function(row){
var info = toolsInfo[row]; var info = toolsInfo[row];
......
...@@ -51,10 +51,13 @@ var mode = $.ikm ? "topcam" : "aimdfm"; ...@@ -51,10 +51,13 @@ var mode = $.ikm ? "topcam" : "aimdfm";
var IKM = $.ikm; var IKM = $.ikm;
if (IKM==undefined ) { IKM = require('topcam.ikm6')($) } if (IKM==undefined ) { IKM = require('topcam.ikm6')($) }
var GEN = $.gen; var GEN = $.gen;
require("topsin.genmath")
var zip = require('topsin.zip');
var GUI = $.gui || {}; var GUI = $.gui || {};
var Job = $.job || $.job_name; var Job = $.job || $.job_name;
var JobId = $.job_id; var JobId = $.job_id;
var db = $.db || IKM.db var db = $.db || IKM.db
var genMath = new GenMath();
var PAR = {} var PAR = {}
if ($.par) { if ($.par) {
PAR = $.par PAR = $.par
...@@ -101,54 +104,34 @@ try { ...@@ -101,54 +104,34 @@ try {
GEN.checkInout({job:job,mode:"out"}); GEN.checkInout({job:job,mode:"out"});
} }
var steplists = GEN.getStepList({job:job});
if(steplists.length == 0){return "该料号没有step"}
steplists = steplists.filter(function(name){
var reg = new RegExp(par.step, "ig")
return reg.test(name)
})
steplists.forEach(function(step){
GEN.openStep({job:job, name:step})
GEN.units({type:par.units})
GEN.affectedLayer({affected:'no',mode:'all'})
GEN.selClearFeature()
GEN.workLayer({name:par.rout,display_number:2,clear_before:'yes'})
var feats = GEN.getFeatures({job:job,step:step,layer:par.rout,options:"feat_index"}) var feats = GEN.getFeatures({job:job,step:"unit",layer:"tmp",options:"feat_index"})
// [{ IKM.msg(feats)
// "type": "arc", var drl_feats = [] // 重复的需要删除的孔
// "xs": "4.121787", feats.reduce(function(a,b){
// "ys": "3.7740178", var id = {};
// "xe": "4.1141847", for(var key in b){
// "ye": "3.8220052", var info = b[key]
// "xc": "3.7942278", if ( key != "index" && key != "attributes" ) {
// "yc": "3.7467211", id[key] = info
// "symbol": "r7.874", }
// "polarity": "positive",
// "direction": "cw",
// "attributes": []
// }]
feats = feats.filter(function(item){
return item.type === "arc" && item.xs === item.xe && item.ys === item.ye
})
feats = feats.filter(function(item){
var d = 2*Math.sqrt((item.xe - item.xc)*(item.xe - item.xc) + (item.ye - item.yc)*(item.ye - item.yc))
return d <= 6
})
feats.forEach(function(item) {
GEN.selLayerFeat({layer:par.rout, index:item.index,operation:"select"})
})
// npth move至drl
if(GEN.getSelectCount() >0 ) {
GEN.selMoveOther({target_layer:'ol_tmp',invert:'no',dx:0,dy:0,size:0})
GEN.workLayer({name:"ol_tmp",display_number:2,clear_before:'yes'})
GEN.COM("cur_atr_set,attribute=.drill,option=non_plated")
GEN.COM("sel_change_atr,mode=add")
GEN.selMoveOther({target_layer:'drl',invert:'no',dx:0,dy:0,size:0})
GEN.deleteLayer({job:job,layer:"ol_tmp"})
} }
id = JSON.stringify(id)
if (a.indexOf(id) < 0) {
a.push(id)
} else {
drl_feats.push(b)
}
return a
} , [])
drl_feats.forEach(function(item){
GEN.selLayerFeat({layer:"drl", index:item.index,operation:"select"})
}) })
// var feas = GEN.getFeatures({job:job,step:"unit",layer:"tmp", surface:1,options:"feat_index"})
// IKM.msg(feas[0].feats)
// var ret = genMath.profile2Polygon(feas[0].feats)
...@@ -182,3 +165,32 @@ try { ...@@ -182,3 +165,32 @@ try {
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 selCopyLayer(props){ // 拷贝选择的到辅助层
var layer = props.layer
var job = props.job
if(GEN.isLayerExists({job:job,layer:layer})){
GEN.deleteLayer({job:job,layer:layer})
}
GEN.selCopyOther({dest:'layer_name',target_layer:layer})
}
function getMinSym(sym) {
var min_size;
for (var key in sym) {
var info = sym[key]
if(info.size){info.size = Number(info.size)}
if(!info.size) {
var width = Number(info.width)
var height = Number(info.height)
info.size = width > height ? height : width;
}
if(info.size) {
if(!min_size){min_size = info.size}
else if (info.size < min_size) {
min_size = info.size
}
}
}
return min_size
}
...@@ -173,16 +173,21 @@ try { ...@@ -173,16 +173,21 @@ try {
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"}) } }
IKM.msg("创建套层")
var err = createCoverLayer() // 创建套层
if (err) {throw err}
GEN.PAUSE("end")
IKM.msg("分离文字和文字框")
var err = ssFrameSeparate() // 分离文字和文字框
if (err) {throw err}
GEN.PAUSE("end")
// var err = createCoverLayer() // 创建套层 IKM.msg("文字框优化")
// if (err) {throw err} var err = slBoxOptimize() // 文字框优化
if (err) {throw err}
// var err = ssFrameSeparate() // 分离文字和文字框 GEN.PAUSE("end")
// if (err) {throw err}
// var err = slBoxOptimize() // 文字框优化
// if (err) {throw err}
IKM.msg("文字优化")
var err = slOptimize() // 文字优化 var err = slOptimize() // 文字优化
if (err) {throw err} if (err) {throw err}
...@@ -601,9 +606,9 @@ function slBoxOptimize(){ ...@@ -601,9 +606,9 @@ function slBoxOptimize(){
var flag = true; var flag = true;
IKM.msg(work_layer + "层:请选择需放大的文字框,不需制作了请【左键框选空白处】") IKM.msg(work_layer + "层:请选择需放大的文字框,不需制作了请【左键框选空白处】")
while(flag){ while(flag){
var tmp_con = GEN.MOUSE({type:'r',text:"Please Select"});
GEN.workLayer({name:work_layer,display_number:1,clear_before:'yes'}); GEN.workLayer({name:work_layer,display_number:1,clear_before:'yes'});
GEN.displayLayer({name:ref_layer,number:2}); GEN.displayLayer({name:ref_layer,number:2});
var tmp_con = GEN.MOUSE({type:'r',text:"Please Select"});
GEN.COM("filter_area_strt") GEN.COM("filter_area_strt")
GEN.COM("filter_area_xy,x="+tmp_con.x1+",y="+tmp_con.y1) GEN.COM("filter_area_xy,x="+tmp_con.x1+",y="+tmp_con.y1)
GEN.COM("filter_area_xy,x="+tmp_con.x2+",y="+tmp_con.y2) GEN.COM("filter_area_xy,x="+tmp_con.x2+",y="+tmp_con.y2)
...@@ -763,6 +768,7 @@ function slBoxOptimize(){ ...@@ -763,6 +768,7 @@ function slBoxOptimize(){
var tmp_symbol = 'tl_script_tmp'; var tmp_symbol = 'tl_script_tmp';
GEN.workLayer({name:tmp1,display_number:1,clear_before:'yes'});
GEN.COM('sel_all_feat'); GEN.COM('sel_all_feat');
GEN.COM( "sel_create_sym,symbol="+tmp_symbol+",x_datum=0,y_datum=0,delete=no,fill_dx=0.1,fill_dy=0.1,attach_atr=no,retain_atr=no" ); GEN.COM( "sel_create_sym,symbol="+tmp_symbol+",x_datum=0,y_datum=0,delete=no,fill_dx=0.1,fill_dy=0.1,attach_atr=no,retain_atr=no" );
GEN.workLayer({name:work_layer,display_number:1,clear_before:'yes'}); GEN.workLayer({name:work_layer,display_number:1,clear_before:'yes'});
...@@ -783,7 +789,7 @@ function slBoxOptimize(){ ...@@ -783,7 +789,7 @@ function slBoxOptimize(){
}) })
} }
}) })
if(GEN.isLayerExists({job:job, layer:"tmp_ref_pad"})){GEN.deleteLayer({job:job, layer:["tmp_ref_pad"]})}
} }
...@@ -810,20 +816,64 @@ function slOptimize() { ...@@ -810,20 +816,64 @@ function slOptimize() {
workstep.forEach(function(step) { workstep.forEach(function(step) {
GEN.openStep({job:job, name:step}) GEN.openStep({job:job, name:step})
GEN.units({type:par.units}) GEN.units({type:par.units})
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();
work_layers.forEach(function(layer){ work_layers.forEach(function(layer){
var font_layer = layer + par.silk_suffix; var font_layer = layer + par.silk_suffix;
var tmp1 = font_layer + "_1"; var tmp1 = font_layer + "_1";
var tmp2 = font_layer + "_2"; var tmp2 = font_layer + "_2";
var tmp3 = font_layer + "_3";
var bk = font_layer + "_bk"; var bk = font_layer + "_bk";
[tmp1,tmp2,bk].forEach(function(v){ var bk2 = font_layer + "_bk2";
[tmp1,tmp2,tmp3,bk,bk2].forEach(function(v){
if(GEN.isLayerExists({job:job, layer:v})){GEN.deleteLayer({job:job,layer:[v]})} if(GEN.isLayerExists({job:job, layer:v})){GEN.deleteLayer({job:job,layer:[v]})}
}) })
GEN.copyLayer({source_job:job,source_step:step,source_layer:font_layer,dest_layer:tmp1, mode:"replace"}) GEN.copyLayer({source_job:job,source_step:step,source_layer:font_layer,dest_layer:tmp1, mode:"replace"})
GEN.copyLayer({source_job:job,source_step:step,source_layer:font_layer,dest_layer:tmp3, mode:"replace"})
GEN.copyLayer({source_job:job,source_step:step,source_layer:font_layer,dest_layer:bk2, mode:"replace"})
GEN.copyLayer({source_job:job,source_step:step,source_layer:font_layer,dest_layer:bk, mode:"replace"}) GEN.copyLayer({source_job:job,source_step:step,source_layer:font_layer,dest_layer:bk, mode:"replace"})
GEN.affectedLayer({affected:'no',mode:'all'}) GEN.affectedLayer({affected:'no',mode:'all'})
GEN.selClearFeature() GEN.selClearFeature()
GEN.workLayer({name:tmp1,display_number:2,clear_before:'yes'}) GEN.workLayer({name:tmp1,display_number:2,clear_before:'yes'})
GEN.selChangeSym({symbol:"r0.1"}) GEN.selChangeSym({symbol:"r0.1"})
// 利用tmp3 快速定位
GEN.workLayer({name:tmp3,display_number:2,clear_before:'yes'})
GEN.units({type:"mm"})
GEN.selChangeSym({symbol:"r1000"})
// 转铜皮 获取每一个铜皮的limits信息
GEN.selContourize()
var fast_features = GEN.getFeatures({job:job,step:step,layer:tmp3,options:"feat_index"})
fast_features.forEach(function(item){
var index = item.index;
GEN.selLayerFeat({layer:tmp3, index:index,operation:"select"});
if(GEN.getSelectCount() > 0){
item.limit = GEN.getLayerLimits({job:job,step:step,layer:tmp3,units:'mm', options:"select"})
item.limit.xsize = Number(item.limit.xsize);
item.limit.xmin = Number(item.limit.xmin);
item.limit.ysize = Number(item.limit.ysize);
item.limit.ymin = Number(item.limit.ymin);
item.xc = item.limit.xsize / 2 + item.limit.xmin
item.yc = item.limit.ysize / 2 + item.limit.ymin
GEN.selClearFeature()
}
})
fast_features.forEach(function(item){
GEN.workLayer({name:bk2,display_number:2,clear_before:'yes'})
GEN.COM("filter_area_strt")
GEN.COM("filter_area_xy,x="+item.limit.xmin+",y=" + item.limit.ymin)
GEN.COM("filter_area_xy,x="+item.limit.xmax+",y=" + item.limit.ymax)
GEN.COM("filter_area_end,layer=,filter_name=popup,operation=select,area_type=rectangle,inside_area=yes,intersect_area=yes")
if(GEN.getSelectCount() > 0 ) {
GEN.selTransform({mode:'anchor',oper:'scale',
x_anchor: item.xc,
y_anchor: item.yc,
x_scale:1.2,y_scale:1.2})
}
})
GEN.units({type:par.units})
GEN.workLayer({name:tmp1,display_number:2,clear_before:'yes'})
GEN.copyLayer({source_job:job,source_step:step,source_layer:tmp1,dest_layer:tmp2, mode:"replace"}) GEN.copyLayer({source_job:job,source_step:step,source_layer:tmp1,dest_layer:tmp2, mode:"replace"})
GEN.COM("sel_contourize,accuracy=0,break_to_islands=yes,clean_hole_size=0,clean_hole_mode=x_and_y") GEN.COM("sel_contourize,accuracy=0,break_to_islands=yes,clean_hole_size=0,clean_hole_mode=x_and_y")
GEN.affectedLayer({affected:'no',mode:'all'}) GEN.affectedLayer({affected:'no',mode:'all'})
...@@ -915,11 +965,38 @@ function slOptimize() { ...@@ -915,11 +965,38 @@ function slOptimize() {
} }
} }
}) })
GEN.workLayer({name:bk,display_number:2,clear_before:'yes'})
GEN.selAllFeat()
if(GEN.getSelectCount() > 0) { GEN.selMoveOther({target_layer:'_fail',invert:'no',dx:0,dy:0,size:0}) }
IKM.msg(layer + "层完毕,请确认,将正确的移动到_ok层") IKM.msg(layer + "层完毕,请确认,将正确的移动到_ok层")
GEN.PAUSE("PAUSE") GEN.PAUSE("PAUSE")
// 框选
GEN.workLayer({name:"_ok",display_number:2,clear_before:'yes'}) GEN.workLayer({name:"_ok",display_number:2,clear_before:'yes'})
// 将ok的移动到文字层 // 将ok的移动到文字层
GEN.workLayer({name:font_layer,display_number:2,clear_before:'yes'})
GEN.selDelete()
GEN.workLayer({name:"_ok",display_number:2,clear_before:'yes'})
GEN.selMoveOther({target_layer:font_layer,invert:'no',dx:0,dy:0,size:0})
GEN.PAUSE("check");
[tmp1,tmp2,tmp3,bk,bk2,"_ok","_fail"].forEach(function(v){
if(GEN.isLayerExists({job:job, layer:v})){GEN.deleteLayer({job:job,layer:[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