From 0d4bbd5eaf109be15cb464899bd5ac651d8ace72 Mon Sep 17 00:00:00 2001
From: "scott.sun" <scott.sun@topibd.com>
Date: Wed, 30 Sep 2020 15:10:05 +0800
Subject: [PATCH] scott

---
 ats/topcam/ATS_AIM_customer_data_analysis.js  |  2 +-
 ...ame_and_sort.js => ATS_AIM_data_format.js} | 60 +++++++++++++++----
 ...IM_input_data.js => ATS_AIM_data_input.js} |  0
 template.js                                   | 17 +-----
 4 files changed, 51 insertions(+), 28 deletions(-)
 rename ats/topcam/{ATS_AIM_layer_rename_and_sort.js => ATS_AIM_data_format.js} (92%)
 rename ats/topcam/{ATS_AIM_input_data.js => ATS_AIM_data_input.js} (100%)

diff --git a/ats/topcam/ATS_AIM_customer_data_analysis.js b/ats/topcam/ATS_AIM_customer_data_analysis.js
index 42c3e4c..a326e2d 100644
--- a/ats/topcam/ATS_AIM_customer_data_analysis.js
+++ b/ats/topcam/ATS_AIM_customer_data_analysis.js
@@ -984,7 +984,7 @@ try {
 
 
     IKM.msg("export")
-
+    
 
     script_info({ result_severity: "analysis export" })
 	script_info({ progress: 95 })
diff --git a/ats/topcam/ATS_AIM_layer_rename_and_sort.js b/ats/topcam/ATS_AIM_data_format.js
similarity index 92%
rename from ats/topcam/ATS_AIM_layer_rename_and_sort.js
rename to ats/topcam/ATS_AIM_data_format.js
index 105ed3d..8fcdd31 100644
--- a/ats/topcam/ATS_AIM_layer_rename_and_sort.js
+++ b/ats/topcam/ATS_AIM_data_format.js
@@ -305,10 +305,10 @@ try {
 				var hasProfile = GEN.getProfile({job:job, step:tmp_step})
 				GEN.closeStep()
 				if(hasProfile.match(/\n/ig).length == 1){
-					createOutline({job:job, step:tmp_step, matrix: tmp_matrix, profileRule:profileRule})
+					createOutline({job:job, step:tmp_step,  profileRule:profileRule})
 				}
 			} else {
-				createOutline({job:job, step:tmp_step, matrix: tmp_matrix, profileRule:profileRule})
+				createOutline({job:job, step:tmp_step,  profileRule:profileRule})
 			}
 			var hasProfile = GEN.getProfile({job:job, step:tmp_step})
 			if(hasProfile.match(/\n/ig).length == 1){
@@ -660,7 +660,7 @@ function createOutline(props){
 	
     var job = props.job
     var step = props.step
-    var matrix = props.matrix
+    var matrix = GEN.getMatrix({job:job})
 	var outlines = Object.keys(matrix).filter(function(v){
 		var flag = false
 		profileRule.forEach(function(rule){
@@ -672,7 +672,14 @@ function createOutline(props){
 		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";
+	if(GEN.isLayerExists({job:job, layer:tmp})) { GEN.deleteLayer({job:job, layer:tmp})}
+	GEN.openStep({job:job, name:step})
+		GEN.affectedLayer({affected:'yes',layer:drill_layer})
+		GEN.selCopyOther({dest:'layer_name',target_layer:tmp,invert:'no',dx:0,dy:0,size:0})
+	GEN.closeStep()
+
     var tmp_outline
     if(outlines.length){
         if( outlines.length){
@@ -693,7 +700,9 @@ function createOutline(props){
         GEN.affectedLayer({affected:'no',mode:'all'})
 		GEN.workLayer({name:l,display_number:2,clear_before:"yes"})
 		var bk = l + "_bk"
+		var bk2 = l + "_bk2"
 		selCopyLayer({job:job,layer:bk})
+		selCopyLayer({job:job,layer:bk2})
 		GEN.workLayer({name:bk,display_number:2,clear_before:"yes"})
 		l = bk
 		GEN.selectByFilter({feat_types:"line\;arc"})
@@ -708,14 +717,29 @@ function createOutline(props){
 		GEN.selReverse()
 		if(GEN.getSelectCount()>0){GEN.selDelete()}
 		GEN.selContourize()
-		GEN.selectByFilter({feat_types:"surface"})
-		GEN.selReverse()
-		if(GEN.getSelectCount()>0){GEN.selDelete()}
+		if(!/1352/ig.test(PAR.customer) ){
+			GEN.selectByFilter({feat_types:"surface"})
+			GEN.selReverse()
+			if(GEN.getSelectCount()>0){GEN.selDelete()}
+		}
 		var tmp_layer = l+"+++"
-        GEN.selRefFeat({layers:drill_layer[0],use:'filter',mode:'touch'})
+        GEN.selRefFeat({layers:tmp,use:'filter',mode:'touch'})
         if(GEN.getSelectCount() > 0){
             var tmp_outline2 = l + "_tmp"
-            selCopyLayer({job:job,layer:tmp_outline2})
+			selCopyLayer({job:job,layer:tmp_outline2})
+			if(/1352/ig.test(PAR.customer) ){
+				// 1. worklayer bk2 删除非线 递归touch tmp_outline2
+				GEN.workLayer({name:bk2,display_number:2,clear_before:"yes"})
+				GEN.selectByFilter({feat_types:"pad;surface;text"})
+				if(GEN.getSelectCount() > 0) {GEN.selDelete()}
+				touch(tmp_outline2)
+				// 2. worklayer tmp_outline2 cuttingdata selContourize
+				GEN.workLayer({name:tmp_outline2,display_number:2,clear_before:"yes"})
+				GEN.COM("sel_cut_data,det_tol=1,con_tol=1,rad_tol=0.1,filter_overlaps=no,delete_doubles=no,use_order=yes,ignore_width=yes,ignore_holes=none,start_positive=yes,polarity_of_touching=same")
+				GEN.selContourize()
+				GEN.deleteLayer({job:job, layer:bk2})
+				GEN.deleteLayer({job:job, layer:tmp_outline2 + "+++"})
+			}
 			GEN.workLayer({name:l,display_number:2,clear_before:"yes"})
             GEN.selAllFeat()
             GEN.selDelete()
@@ -725,7 +749,7 @@ function createOutline(props){
             GEN.selAllFeat()
             selCopyLayer({job:job,layer:l})
 			GEN.workLayer({name:l,display_number:2,clear_before:"yes"})
-            GEN.selClearFeature()
+			GEN.selClearFeature()
 			GEN.selCreateProfile()
 			GEN.selectByFilter({profile:"in"})
 			if(GEN.getSelectCount()> 0){GEN.selDelete()}
@@ -736,10 +760,22 @@ function createOutline(props){
             GEN.deleteLayer({job:job, layer:l})
             return true
         }
-            GEN.deleteLayer({job:job, layer:l})
-			GEN.deleteLayer({job:job, layer:[tmp_layer]})
+		GEN.deleteLayer({job:job, layer:l})
+		GEN.deleteLayer({job:job, layer:bk2})
+		GEN.deleteLayer({job:job, layer:[tmp_layer]})
+		GEN.deleteLayer({job:job, layer:[tmp_layer]})
         return false
 	}
+
+	GEN.deleteLayer({job:job, layer:[tmp]})
+}
+
+function touch(layer) {
+	GEN.selRefFeat({layers:layer,use:"filter",mode:"touch"})
+	if(GEN.getSelectCount() > 0) {
+		GEN.selMoveOther({target_layer:layer,invert:'no',dx:0,dy:0,size:0})
+		touch(layer)
+	}
 }
 
 function selCopyLayer(props){  // 拷贝选择的到辅助层
diff --git a/ats/topcam/ATS_AIM_input_data.js b/ats/topcam/ATS_AIM_data_input.js
similarity index 100%
rename from ats/topcam/ATS_AIM_input_data.js
rename to ats/topcam/ATS_AIM_data_input.js
diff --git a/template.js b/template.js
index 4289746..80c2907 100644
--- a/template.js
+++ b/template.js
@@ -86,22 +86,9 @@ try {
 		var reg = new RegExp(par.step,"ig")
 		return reg.test(step)
 	})
-    stepList.forEach(function(step){
-        GEN.openStep({job:job,name:step})
-		GEN.clearLayers();  //清除层显示
-		GEN.affectedLayer({ mode: 'all', affected: 'no' });  //设置影响层全部不影响
-		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.units({ type: par.units }); 
-        GEN.zoomHome(); 
-
-
-
-
-
-		
-		GEN.closeStep()
-	})
 
+	GEN.PAUSE("Ok")
+	IKM.msg("Ok")
 
 
 	// 保存 
-- 
2.21.0