Commit d9a6c1ce authored by Scott Sun's avatar Scott Sun

s

parent fcb3acbc
...@@ -162,22 +162,51 @@ try { ...@@ -162,22 +162,51 @@ try {
return feat.type == "line" || feat.type == "arc" return feat.type == "line" || feat.type == "arc"
}) })
var ret = []; var ret = [];
var indexObj = {}
var keys = {}
feats.forEach(function (feat) {
var x = feat.xs + (feat.xe - feat.xs) / 2
var y = feat.ys + (feat.ye - feat.ys) / 2
keys[x+ "_" + y] = true
})
feats.forEach(function (feat1, i) { feats.forEach(function (feat1, i) {
for (var i2 = i+1; i2 < feats.length; i2++) { for (var i2 = i+1; i2 < feats.length; i2++) {
var feat2 = feats[i2] var feat2 = feats[i2]
if(feat2) { if(feat2 && lineLength(feat1) > 0.2 && lineLength(feat2) > 0.2) {
var len1 = p2p({x1: feat1.xs, y1:feat1.ys, x2:feat2.xs ,y2:feat2.ys}) var len1 = p2p({x1: feat1.xs, y1:feat1.ys, x2:feat2.xs ,y2:feat2.ys})
var len2 = p2p({x1: feat1.xs, y1:feat1.ys, x2:feat2.xe ,y2:feat2.ye}) var len2 = p2p({x1: feat1.xs, y1:feat1.ys, x2:feat2.xe ,y2:feat2.ye})
var len3 = p2p({x1: feat1.xe, y1:feat1.ye, x2:feat2.xs ,y2:feat2.ys}) var len3 = p2p({x1: feat1.xe, y1:feat1.ye, x2:feat2.xs ,y2:feat2.ys})
var len4 = p2p({x1: feat1.xe, y1:feat1.ye, x2:feat2.xe ,y2:feat2.ye}) var len4 = p2p({x1: feat1.xe, y1:feat1.ye, x2:feat2.xe ,y2:feat2.ye})
if(FlagTolerance(len1) || FlagTolerance(len2) || FlagTolerance(len3) || FlagTolerance(len4)) { if(FlagTolerance(len1) || FlagTolerance(len2) || FlagTolerance(len3) || FlagTolerance(len4)) {
var flag = true
var midx;
var midy;
if (FlagTolerance(len1)) {
midx = feat1.xs + (feat2.xs - feat1.xs)/2
midy = feat1.ys + (feat2.ys - feat1.ys)/2
} else if (FlagTolerance(len2)) {
midx = feat1.xs + (feat2.xe - feat1.xs)/2
midy = feat1.ys + (feat2.ye - feat1.ys)/2
} else if (FlagTolerance(len3)) {
midx = feat1.xe + (feat2.xs - feat1.xe)/2
midy = feat1.ye + (feat2.ys - feat1.ye)/2
} else if (FlagTolerance(len4)) {
midx = feat1.xe + (feat2.xe - feat1.xe)/2
midy = feat1.ye + (feat2.ye - feat1.ye)/2
}
var key = midx + "_" + midy
if (!indexObj[feat1.index] && !indexObj[feat2.index] && flag && !keys[key]) {
indexObj[feat1.index] = true
indexObj[feat2.index] = true
ret.push({ ret.push({
feat1: feat1, feat1: feat1,
feat2: feat2 feat2: feat2,
}) })
} }
} }
} }
}
}) })
if(ret.length > 0) { if(ret.length > 0) {
...@@ -186,22 +215,25 @@ try { ...@@ -186,22 +215,25 @@ try {
ret.forEach(function (item) { ret.forEach(function (item) {
var feat1 = item.feat1 var feat1 = item.feat1
var feat2 = item.feat2 var feat2 = item.feat2
var flag = false; var flag = true;
if(feat1.type == "arc" || feat2.type == "arc") { // if(feat1.type == "arc" || feat2.type == "arc") {
flag = true // flag = true
} else if (Math.abs((feat1.xe - feat1.xs)/(feat1.ye-feat1.ye) - (feat2.xe - feat2.xs)/(feat2.ye-feat2.ye)) <= 0.001) { // } else if (Math.abs((feat1.xe - feat1.xs)/(feat1.ye-feat1.ye) - (feat2.xe - feat2.xs)/(feat2.ye-feat2.ye)) <= 0.001) {
flag = true // flag = true
} // }
if(flag) { if(flag) {
GEN.selLayerFeat({layer:layer, index:feat1.index,operation:"select"}) GEN.selLayerFeat({layer:layer, index:feat1.index,operation:"select"})
GEN.selLayerFeat({layer:layer, index:feat2.index,operation:"select"}) GEN.selLayerFeat({layer:layer, index:feat2.index,operation:"select"})
if(GEN.getSelectCount() == 2) { if(GEN.getSelectCount() == 2) {
GEN.COM("sel_design2rout,det_tol="+data.tolerance+",con_tol="+data.tolerance+",rad_tol=10") // GEN.PAUSE(0)
// GEN.COM("sel_design2rout,det_tol="+data.tolerance+",con_tol="+data.tolerance+",rad_tol=10")
// GEN.PAUSE(1)
} }
GEN.selClearFeature() // GEN.selClearFeature()
} }
}) })
GEN.PAUSE(0)
} }
}) })
...@@ -213,7 +245,7 @@ try { ...@@ -213,7 +245,7 @@ try {
function FlagTolerance(len) { function FlagTolerance(len) {
return len >= 0.001 && len <= data.tolerance/1000 return len > 0 && len <= data.tolerance/1000
} }
// 保存料号 // 保存料号
...@@ -256,6 +288,10 @@ try { ...@@ -256,6 +288,10 @@ try {
return mode === "aimdfm" ? { status: Status, result_data: resultData } : "Error"; return mode === "aimdfm" ? { status: Status, result_data: resultData } : "Error";
} }
function lineLength(line) {
return Math.sqrt((line.xe - line.xs)*(line.xe - line.xs) + (line.ye - line.ys)*(line.ye - line.ys))
}
/** /**
* 获取层别 * 获取层别
* @param {Object} 过滤选项 * @param {Object} 过滤选项
......
...@@ -9,12 +9,6 @@ PARAMETER: ...@@ -9,12 +9,6 @@ PARAMETER:
type : 'LineEdit', type : 'LineEdit',
property : {tool_tip : '目标step,默认是orig'} property : {tool_tip : '目标step,默认是orig'}
}, },
{
name : 'workLayers',
title : 'workLayers',
type : 'LineEdit',
property : {tool_tip : '工作层'}
},
{ {
name : 'auto_save', name : 'auto_save',
title : '自动保存', title : '自动保存',
...@@ -78,7 +72,7 @@ var par = PAR; // 接收参数 ...@@ -78,7 +72,7 @@ var par = PAR; // 接收参数
var default_par = { // 设置默认参数 var default_par = { // 设置默认参数
step: "cad", step: "cad",
auto_save: "No", auto_save: "No",
workLayers:"out", workLayers:"rout",
units: "mm" units: "mm"
}; };
for (var key in default_par) { for (var key in default_par) {
...@@ -111,13 +105,14 @@ try { ...@@ -111,13 +105,14 @@ try {
throw "未找到" + par.step throw "未找到" + par.step
} }
var workLayers = par.workLayers.split(";") // var workLayers = par.workLayers.split(";")
workLayers = workLayers.filter(function(l){return GEN.isLayerExists({job:job, layer:l})}) // workLayers = workLayers.filter(function(l){return GEN.isLayerExists({job:job, layer:l})})
if(workLayers.length == 0) { // if(workLayers.length == 0) {
throw "没有找到工作层" // throw "没有找到工作层"
} // }
var workLayers = getWorkLayer()
if (workLayers && workLayers.length > 0) {} else { throw "没有找到工作层"}
var func = 'function(props){return GUI.showForm({\ var func = 'function(props){return GUI.showForm({\
title: "去除重复线",\ title: "去除重复线",\
size: "400x220",\ size: "400x220",\
...@@ -151,12 +146,13 @@ try { ...@@ -151,12 +146,13 @@ try {
}]\ }]\
}]\ }]\
},\ },\
values: { min_line: 0, max_line: 508,margin:0 },\ values: { min_line: 0, max_line: 508,margin:-10 },\
}) }'; }) }';
workLayers = workLayers.map(function (item) {
return item.name
});
var data = IKM.command(func, {}, 1).data; var data = IKM.command(func, {}, 1).data;
if(data.hasOwnProperty("margin") && data.hasOwnProperty("max_line") && data.hasOwnProperty("min_line")) {
if(data.margin && data.max_line && data.min_line) {
stepList.forEach(function (step) { stepList.forEach(function (step) {
GEN.openStep({ job: job, name: step }); GEN.openStep({ job: job, name: step });
GEN.clearLayers(); //清除层显示 GEN.clearLayers(); //清除层显示
...@@ -167,11 +163,14 @@ try { ...@@ -167,11 +163,14 @@ try {
GEN.selClearFeature() GEN.selClearFeature()
GEN.affectedLayer({affected:"yes", layer:workLayers}) GEN.affectedLayer({affected:"yes", layer:workLayers})
GEN.COM("chklist_single,action=valor_dfm_nflr,show=yes") GEN.COM("chklist_single,action=valor_dfm_nflr,show=yes")
GEN.COM("chklist_cupd,chklist=valor_dfm_nflr,nact=1,params=((pp_layer=.affected)(pp_min_line="+data.min_line+")(pp_max_line="+data.max_line+")(pp_margin="+data.margin+")(pp_remove_item=Line\;Arc)(pp_delete=Covered)(pp_work=Features)(pp_remove_mark=Remove)),mode=regular") GEN.COM("chklist_cupd,chklist=valor_dfm_nflr,nact=1,params=((pp_layer=.affected)(pp_min_line="+data.min_line+")(pp_max_line="+data.max_line+")(pp_margin="+data.margin+")(pp_remove_item=Line\;Arc)(pp_delete=Covered)(pp_work=Features)(pp_remove_mark=Remove)),mode=regular")
GEN.COM("chklist_run,chklist=valor_dfm_nflr,nact=1,area=profile") GEN.COM("chklist_run,chklist=valor_dfm_nflr,nact=1,area=global")
// GEN.COM("chklist_close,chklist=valor_dfm_nflr,mode=hide") GEN.COM("chklist_single,action=valor_dfm_nflr,show=yes")
GEN.COM("chklist_cupd,chklist=valor_dfm_nflr,nact=1,params=((pp_layer=.affected)(pp_min_line="+data.min_line+")(pp_max_line="+data.max_line+")(pp_margin="+data.margin+")(pp_remove_item=Line\;Arc)(pp_delete=Duplicated)(pp_work=Features)(pp_remove_mark=Remove)),mode=regular")
GEN.COM("chklist_run,chklist=valor_dfm_nflr,nact=1,area=global")
GEN.COM("chklist_close,chklist=valor_dfm_nflr,mode=hide")
// workLayers.forEach(function (layer) { // workLayers.forEach(function (layer) {
// check_connect_line_and_connnect({layer:layer,step:step}) // check_connect_line_and_connnect({layer:layer,step:step})
...@@ -473,3 +472,57 @@ function check_connect_line_and_connnect(props){ ...@@ -473,3 +472,57 @@ function check_connect_line_and_connnect(props){
IKM.msg(props.layer+"层连接位修复完成请仔细检查!") IKM.msg(props.layer+"层连接位修复完成请仔细检查!")
GEN.PAUSE('Please Check!'); GEN.PAUSE('Please Check!');
} }
function getWorkLayer() {
var matrix = GEN.getMatrix({ job: job });
return GUI.selectLayer({
title: "请选择层",
//filter: ".*", // regular expression
selectmode: "multiple", // single, multiple
context: "all", // all, board, misc
layertype: par.workLayers, // default type of layertypelist
defaultsize: [600, 400], // window size
layermatrix: matrix,
layertypelist: [{
name: "all",
display_name: "All",
filter: function filter(x) {
return true;
}
}, {
name: "outer",
display_name: "Outer",
filter: function filter(x) {
return x.layer_type == "signal" && /top|bot/.test(x.side);
}
}, {
name: "inner",
display_name: "Inner",
filter: function filter(x) {
return (/signal|power_ground/.test(x.layer_type) && /inner/.test(x.side)
);
}
}, {
name: "solder_mask",
display_name: "Solder Mask",
filter: function filter(x) {
return (/solder_mask/.test(x.layer_type)
);
}
}, {
name: "silk_screen",
display_name: "Silk Screen",
filter: function filter(x) {
return (/silk_screen/.test(x.layer_type)
);
}
}, {
name: "rout",
display_name: "Rout",
filter: function filter(x) {
return (/rout/.test(x.layer_type) || /outline/.test(x.name));
}
}],
gen: GEN
});
}
\ No newline at end of file
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