Commit ae709692 authored by Scott Sun's avatar Scott Sun

scott

parent 1eaa49b3
......@@ -180,12 +180,12 @@ try {
// var err = ssFrameSeparate() // 分离文字和文字框
// if (err) {throw err}
var err = slBoxOptimize() // 文字框优化
if (err) {throw err}
// var err = slOptimize() // 文字优化
// var err = slBoxOptimize() // 文字框优化
// if (err) {throw err}
var err = slOptimize() // 文字优化
if (err) {throw err}
......@@ -810,9 +810,119 @@ function slOptimize() {
var matrix = GEN.getMatrix({job:job})
IKM.msg(work_layers)
workstep.forEach(function(step) {
GEN.openStep({job:job, name:step})
GEN.units({type:par.units})
work_layers.forEach(function(layer){
var font_layer = layer + par.silk_suffix;
var tmp1 = font_layer + "_1";
var tmp2 = font_layer + "_2";
var bk = font_layer + "_bk";
[tmp1,tmp2,bk].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: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"})
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'})
GEN.clearLayers()
var features = GEN.getFeatures({job:job,step:step,layer:tmp1,options:"feat_index"})
var indexes = []
features.forEach(function(item){
GEN.workLayer({name:tmp1,display_number:2,clear_before:'yes'})
var index = item.index;
// 选中index 将它复制到tmp3 获取信息
GEN.selLayerFeat({layer:tmp1, index:index,operation:"select"})
if(GEN.getSelectCount() > 0){
item.limit = GEN.getLayerLimits({job:job,step:step,layer:tmp1,units:'mm', options:"select"})
}
})
var xs = {};
var ys = {};
features.forEach(function(item){
surfaceAnalysis(item)
indexes.push({
index:item.index,
xmin : item.limit.xmin,
ymin : item.limit.ymin,
xmax : item.limit.xmax,
ymax : item.limit.ymax,
xc:item.xc,
yc:item.yc
})
if(!ys[turnFix(item.yc)]){ys[turnFix(item.yc)] = []}
ys[turnFix(item.yc)].push(item)
if(!xs[turnFix(item.xc)]){xs[turnFix(item.xc)] = []}
xs[turnFix(item.xc)].push(item)
})
var limitinfo = []
indexes = sameDirection(ys, "xc", limitinfo, indexes)
indexes = sameDirection(xs, "yc", limitinfo, indexes)
if(GEN.isLayerExists({job:job,layer:"_ok"})){GEN.deleteLayer({job:job,layer:["_ok"]})}
if(GEN.isLayerExists({job:job,layer:"_fail"})){GEN.deleteLayer({job:job,layer:["_fail"]})}
GEN.createLayer({job:job,layer:'_ok',conext:'misc',type:'document'})
GEN.createLayer({job:job,layer:'_fail',conext:'misc',type:'document'})
limitinfo.forEach(function(item){
GEN.workLayer({name:bk,display_number:2,clear_before:'yes'})
GEN.COM("filter_area_strt")
GEN.COM("filter_area_xy,x="+item.xmin+",y=" + item.ymin)
GEN.COM("filter_area_xy,x="+item.xmax+",y=" + item.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.selMoveOther({target_layer:'transform_temp',invert:'no',dx:0,dy:0,size:0})
GEN.workLayer({name:"transform_temp",display_number:2,clear_before:'yes'})
GEN.selTransform({mode:'anchor',oper:'scale',
x_anchor: item.xmin + Math.abs(item.xmax - item.xmin) / 2,
y_anchor: item.ymin + Math.abs(item.ymax - item.ymin) / 2,
x_scale:1.2,y_scale:1.2})
// 与成功层touch 有碰移动到失败层 没碰移动到成功层
GEN.selRefFeat({layers:"_ok",use:"filter",mode:"touch"})
if(GEN.getSelectCount() > 0) {
GEN.selClearFeature()
GEN.selMoveOther({target_layer:'_fail',invert:'no',dx:0,dy:0,size:0})
} else {
GEN.selMoveOther({target_layer:'_ok',invert:'no',dx:0,dy:0,size:0})
}
}
})
indexes.forEach(function(item){
var xc = item.xc;
var yc = item.yc;
GEN.workLayer({name:bk,display_number:2,clear_before:'yes'})
GEN.COM("filter_area_strt")
GEN.COM("filter_area_xy,x="+item.xmin+",y=" + item.ymin)
GEN.COM("filter_area_xy,x="+item.xmax+",y=" + item.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.selMoveOther({target_layer:'transform_temp',invert:'no',dx:0,dy:0,size:0})
GEN.workLayer({name:"transform_temp",display_number:2,clear_before:'yes'})
GEN.selTransform({mode:'anchor',oper:'scale',x_anchor: xc,y_anchor: yc,
x_scale:1.2,y_scale:1.2})
// 与成功层touch 有碰移动到失败层 没碰移动到成功层
GEN.selRefFeat({layers:"_ok",use:"filter",mode:"touch"})
if(GEN.getSelectCount() > 0) {
GEN.selClearFeature()
GEN.selMoveOther({target_layer:'_fail',invert:'no',dx:0,dy:0,size:0})
} else {
GEN.selMoveOther({target_layer:'_ok',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'})
})
})
}
......@@ -1006,4 +1116,70 @@ function getRodate(props){
var x = xe - xs;
var r = Math.atan(y / x)
return r*180/Math.PI
}
\ No newline at end of file
}
function sameDirection(xory, type, res, indexes) {
for (var key in xory) {
var current = -1;
var data = xory[key];
data.sort(function(a,b){return a[type] - b[type]})
data.forEach(function(item, i){
if (i > current){
var ret = [item];
current = searchFont(item, data, i, ret,type)
if(ret.length > 1) {
ret.forEach(function(item) {
indexes = indexes.filter(function(item2){
return item2.index != item.index
})
})
res.push(ret.reduce(function(a,b){
if(Number(b.limit.xmin) < Number(a.xmin)){
a.xmin = b.limit.xmin
}
if(Number(b.limit.ymin) < Number(a.ymin)){
a.ymin = b.limit.ymin
}
if(Number(b.limit.xmax) > Number(a.xmax)){
a.xmax = b.limit.xmax
}
if(Number(b.limit.ymax) > Number(a.ymax)){
a.ymax = b.limit.ymax
}
return a
},{
xmin: item.limit.xmin,
ymin: item.limit.ymin,
xmax: item.limit.xmax,
ymax: item.limit.ymax
}))
}
}
})
}
return indexes
}
function searchFont(l ,arr, i, ret, type){
if(arr[i+1]){
var len = Math.abs(l[type] - arr[i+1][type])
if(len <= 1.5){
ret.push(arr[i+1])
return searchFont(arr[i+1], arr, i+1, ret, type)
} else {return i}
}
return i+1
}
function turnFix(data) {
return parseFloat(data).toFixed(2)
}
function surfaceAnalysis(props){
props.limit.xmin = props.limit.xmin - 0;
props.limit.ymin = props.limit.ymin - 0;
props.limit.xmax = props.limit.xmax - 0;
props.limit.ymax = props.limit.ymax - 0;
props.limit.xsize = props.limit.xsize - 0;
props.limit.ysize = props.limit.ysize - 0;
props.xc = props.limit.xsize / 2 + props.limit.xmin
props.yc = props.limit.ysize / 2 + props.limit.ymin
}
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