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

scott

parent 684776ec
......@@ -264,9 +264,7 @@ try {
if(all_layer.indexOf("outline") >= 0) { profileRule.unshift("outline")}
if(profileRule){
// 判断有没有profile
var board_layer = all_layer.filter(function(v){
return tmp_matrix[v].context == "board"
})
var tmp_step = GEN.getStepList({job:job})[0]
GEN.openStep({job:job, name:tmp_step})
var now_profile = GEN.getProfile({job:job, step:tmp_step})
......@@ -277,6 +275,10 @@ try {
throw "创建profile失败"
}
} 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.selectByFilter({profile:"out"})
if(GEN.getSelectCount() > 0){
......
......@@ -167,11 +167,9 @@ try {
GEN.COM("config_edit,name=iol_fix_ill_polygon,value=yes,mode=user")
// 将jobFile下的zip解压
jobFiles.forEach(function(item){
if(item.suffix === "zip"){
zip.unzip(item.path);
}
})
decompression(jobFile[0].path, [])
jobFiles = fs.listDir(jobFile[0].path)
// 分析料号文件 得到料号导入信息 导入类型
var jobInfo = analyJobFiles({jobFiles:jobFiles.filter(function(v){return v.isFile}),custCfg:custCfg,config:config,job:job })
......@@ -501,4 +499,17 @@ function script_info(props){ // result_severity progress
where: { id: $.task_id }
});
}
}
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 @@
}
],
"tl_name": [
{"orig_name" : ["assytop\\.art","past_top","paste_top"], "tl_name" : "past_top" },
{"orig_name" : ["assybot\\.art","past_bot","paste_bot"], "tl_name" : "past_botm" },
{"orig_name" : ["pleg\\.art","^ss_top","silk_top"], "tl_name" : "silk_top" },
{"orig_name" : ["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_bot\\.art","ssm\\.art","sm_bot"], "tl_name" : "sm_botm" },
{"orig_name" : ["^pm_top","paste.pri","assytop\\.art","past_top","paste_top"], "tl_name" : "past_top" },
{"orig_name" : ["^pm_bot","paste.sec","assybot\\.art","past_bot","paste_bot"], "tl_name" : "past_botm" },
{"orig_name" : ["silk.pri","pleg\\.art","^ss_top","silk_top"], "tl_name" : "silk_top" },
{"orig_name" : ["silk.sec","sleg\\.art","^ss_bot","silk_bot"], "tl_name" : "silk_bot" },
{"orig_name" : ["mask.top\\.art","mask.pri\\.art","psm\\.art","sm_top"], "tl_name" : "sm_top" },
{"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" : ["^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" : ["-(\\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" : "fab.art", "tl_name" : "fab.art" },
{"orig_name" : ["multipack.art","^array$"], "tl_name" : "array" },
......@@ -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}}
GEN.COM("tools_tab_reset")
var alltype = {
plated: "plate"
plated: "plate",
non_plated: "nplate",
laser: "via",
via: "via"
}
Object.keys(toolsInfo).forEach(function(row){
var info = toolsInfo[row];
......
......@@ -51,10 +51,13 @@ var mode = $.ikm ? "topcam" : "aimdfm";
var IKM = $.ikm;
if (IKM==undefined ) { IKM = require('topcam.ikm6')($) }
var GEN = $.gen;
require("topsin.genmath")
var zip = require('topsin.zip');
var GUI = $.gui || {};
var Job = $.job || $.job_name;
var JobId = $.job_id;
var db = $.db || IKM.db
var genMath = new GenMath();
var PAR = {}
if ($.par) {
PAR = $.par
......@@ -101,56 +104,36 @@ try {
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"})
// [{
// "type": "arc",
// "xs": "4.121787",
// "ys": "3.7740178",
// "xe": "4.1141847",
// "ye": "3.8220052",
// "xc": "3.7942278",
// "yc": "3.7467211",
// "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"})
var feats = GEN.getFeatures({job:job,step:"unit",layer:"tmp",options:"feat_index"})
IKM.msg(feats)
var drl_feats = [] // 重复的需要删除的孔
feats.reduce(function(a,b){
var id = {};
for(var key in b){
var info = b[key]
if ( key != "index" && key != "attributes" ) {
id[key] = info
}
}
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)
// 保存
......@@ -181,4 +164,33 @@ try {
Status = 'error';
resultData.push({type: "error", title: "脚本执行出错!", detail: [{desc: _.toString(e)}]});
return (mode === "aimdfm") ? {status: Status, result_data: resultData} : "Error";
}
\ No newline at end of file
}
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 {
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"}) } }
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() // 创建套层
// if (err) {throw err}
// var err = ssFrameSeparate() // 分离文字和文字框
// if (err) {throw err}
// var err = slBoxOptimize() // 文字框优化
// if (err) {throw err}
IKM.msg("文字框优化")
var err = slBoxOptimize() // 文字框优化
if (err) {throw err}
GEN.PAUSE("end")
IKM.msg("文字优化")
var err = slOptimize() // 文字优化
if (err) {throw err}
......@@ -601,9 +606,9 @@ function slBoxOptimize(){
var flag = true;
IKM.msg(work_layer + "层:请选择需放大的文字框,不需制作了请【左键框选空白处】")
while(flag){
var tmp_con = GEN.MOUSE({type:'r',text:"Please Select"});
GEN.workLayer({name:work_layer,display_number:1,clear_before:'yes'});
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_xy,x="+tmp_con.x1+",y="+tmp_con.y1)
GEN.COM("filter_area_xy,x="+tmp_con.x2+",y="+tmp_con.y2)
......@@ -763,6 +768,7 @@ function slBoxOptimize(){
var tmp_symbol = 'tl_script_tmp';
GEN.workLayer({name:tmp1,display_number:1,clear_before:'yes'});
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.workLayer({name:work_layer,display_number:1,clear_before:'yes'});
......@@ -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() {
workstep.forEach(function(step) {
GEN.openStep({job:job, name:step})
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){
var font_layer = layer + par.silk_suffix;
var tmp1 = font_layer + "_1";
var tmp2 = font_layer + "_2";
var tmp3 = font_layer + "_3";
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]})}
})
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.affectedLayer({affected:'no',mode:'all'})
GEN.selClearFeature()
GEN.workLayer({name:tmp1,display_number:2,clear_before:'yes'})
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.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'})
......@@ -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层")
GEN.PAUSE("PAUSE")
// 框选
GEN.workLayer({name:"_ok",display_number:2,clear_before:'yes'})
// 将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