Commit d9a6c1ce authored by Scott Sun's avatar Scott Sun

s

parent fcb3acbc
......@@ -162,19 +162,48 @@ try {
return feat.type == "line" || feat.type == "arc"
})
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) {
for (var i2 = i+1; i2 < feats.length; 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 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 len4 = p2p({x1: feat1.xe, y1:feat1.ye, x2:feat2.xe ,y2:feat2.ye})
if(FlagTolerance(len1) || FlagTolerance(len2) || FlagTolerance(len3) || FlagTolerance(len4)) {
ret.push({
feat1: feat1,
feat2: feat2
})
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({
feat1: feat1,
feat2: feat2,
})
}
}
}
}
......@@ -186,22 +215,25 @@ try {
ret.forEach(function (item) {
var feat1 = item.feat1
var feat2 = item.feat2
var flag = false;
if(feat1.type == "arc" || feat2.type == "arc") {
flag = true
} else if (Math.abs((feat1.xe - feat1.xs)/(feat1.ye-feat1.ye) - (feat2.xe - feat2.xs)/(feat2.ye-feat2.ye)) <= 0.001) {
flag = true
}
var flag = true;
// if(feat1.type == "arc" || feat2.type == "arc") {
// flag = true
// } else if (Math.abs((feat1.xe - feat1.xs)/(feat1.ye-feat1.ye) - (feat2.xe - feat2.xs)/(feat2.ye-feat2.ye)) <= 0.001) {
// flag = true
// }
if(flag) {
GEN.selLayerFeat({layer:layer, index:feat1.index,operation:"select"})
GEN.selLayerFeat({layer:layer, index:feat2.index,operation:"select"})
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 {
function FlagTolerance(len) {
return len >= 0.001 && len <= data.tolerance/1000
return len > 0 && len <= data.tolerance/1000
}
// 保存料号
......@@ -256,6 +288,10 @@ try {
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} 过滤选项
......
......@@ -9,12 +9,6 @@ PARAMETER:
type : 'LineEdit',
property : {tool_tip : '目标step,默认是orig'}
},
{
name : 'workLayers',
title : 'workLayers',
type : 'LineEdit',
property : {tool_tip : '工作层'}
},
{
name : 'auto_save',
title : '自动保存',
......@@ -78,7 +72,7 @@ var par = PAR; // 接收参数
var default_par = { // 设置默认参数
step: "cad",
auto_save: "No",
workLayers:"out",
workLayers:"rout",
units: "mm"
};
for (var key in default_par) {
......@@ -111,13 +105,14 @@ try {
throw "未找到" + par.step
}
var workLayers = par.workLayers.split(";")
workLayers = workLayers.filter(function(l){return GEN.isLayerExists({job:job, layer:l})})
if(workLayers.length == 0) {
throw "没有找到工作层"
}
// var workLayers = par.workLayers.split(";")
// workLayers = workLayers.filter(function(l){return GEN.isLayerExists({job:job, layer:l})})
// if(workLayers.length == 0) {
// throw "没有找到工作层"
// }
var workLayers = getWorkLayer()
if (workLayers && workLayers.length > 0) {} else { throw "没有找到工作层"}
var func = 'function(props){return GUI.showForm({\
title: "去除重复线",\
size: "400x220",\
......@@ -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;
if(data.margin && data.max_line && data.min_line) {
if(data.hasOwnProperty("margin") && data.hasOwnProperty("max_line") && data.hasOwnProperty("min_line")) {
stepList.forEach(function (step) {
GEN.openStep({ job: job, name: step });
GEN.clearLayers(); //清除层显示
......@@ -167,12 +163,15 @@ try {
GEN.selClearFeature()
GEN.affectedLayer({affected:"yes", layer:workLayers})
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_run,chklist=valor_dfm_nflr,nact=1,area=profile")
// GEN.COM("chklist_close,chklist=valor_dfm_nflr,mode=hide")
GEN.COM("chklist_run,chklist=valor_dfm_nflr,nact=1,area=global")
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) {
// check_connect_line_and_connnect({layer:layer,step:step})
// })
......@@ -472,4 +471,58 @@ function check_connect_line_and_connnect(props){
IKM.msg(props.layer+"层连接位修复完成请仔细检查!")
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