Commit 431f8581 authored by Scott Sun's avatar Scott Sun

s

parent f35174ce
...@@ -429,8 +429,9 @@ try { ...@@ -429,8 +429,9 @@ try {
depth_drilling: {api:"layer_exist", props:"depth_drill"}, // yes|no :存在 depth_drill 层时 ,存yes depth_drilling: {api:"layer_exist", props:"depth_drill"}, // yes|no :存在 depth_drill 层时 ,存yes
depth_routing: {api:"layer_exist", props:"depth_routing"}, // tmp yes|no :存在 depth_routing 层时,,存yes depth_routing: {api:"layer_exist", props:"depth_routing"}, // tmp yes|no :存在 depth_routing 层时,,存yes
laser_via_on_buried_hole: true, // via孔在埋孔上时,存yes laser_via_on_buried_hole: true, // via孔在埋孔上时,存yes
milling_bit_size: true, // todo 检查array中pcs的最小间距值 milling_bit_size: false, // todo 检查array中pcs的最小间距值
milling_length: true, // todo 检查array中铣切长度 milling_length_card: true,
milling_length_array: true,
vc_src_01005_pad_result: {api:"board_has_attr", props:vc_src_01005_pad_result}, // 本地使用 .pth_pad ats 01005_pad vc_src_01005_pad_result: {api:"board_has_attr", props:vc_src_01005_pad_result}, // 本地使用 .pth_pad ats 01005_pad
ATS_technology_25dc: {api:"layer_exist", props:["bot_coverlay","top_coverlay"]}, // yes|no:存在cavity层别时存yes ATS_technology_25dc: {api:"layer_exist", props:["bot_coverlay","top_coverlay"]}, // yes|no:存在cavity层别时存yes
ATS_technology_25dr: {api:"layer_exist", props:["bot_coverlay","top_coverlay"]}, // yes|no:存在cavity层别时存yes ATS_technology_25dr: {api:"layer_exist", props:["bot_coverlay","top_coverlay"]}, // yes|no:存在cavity层别时存yes
...@@ -468,6 +469,7 @@ try { ...@@ -468,6 +469,7 @@ try {
jobInfo[key] = analysis_obj["analysis_"+key](props) jobInfo[key] = analysis_obj["analysis_"+key](props)
} }
} catch (e) { } catch (e) {
console.log("========================================error:");
console.log(e); console.log(e);
jobInfo[key] = "_error" jobInfo[key] = "_error"
} }
...@@ -1464,8 +1466,60 @@ function analysis(props){ ...@@ -1464,8 +1466,60 @@ function analysis(props){
T_m_p.prototype.analysis_milling_bit_size = function(){ // todo T_m_p.prototype.analysis_milling_bit_size = function(){ // todo
return "_todo" return "_todo"
} }
T_m_p.prototype.analysis_milling_length = function(){ // todo T_m_p.prototype.analysis_milling_length_card = function(){ // todo
return "_todo" var allStep = [this.pcs_step, this.array_step]
var res = 0
var that = this;
console.log("============analysis_milling_length_card=============");
console.log("========step========:"+_.toString(allStep));
var steps = GEN.getStepList({job:this.job})
allStep.forEach(function(step){
if(steps.indexOf(step)>=0){
GEN.openStep({job:that.job,name:step})
var tmp = "length_tmp"
if(GEN.isLayerExists({job:that.job,layer:tmp})){GEN.deleteLayer({job:that.job,layer:[tmp]})}
GEN.createLayer({job:that.job,layer:tmp,conext:'misc',type:'document'})
GEN.COM("profile_to_rout,layer="+tmp+",width=1")
var feautres = GEN.getFeatures({job:that.job,step:step,layer:tmp,units:"mm"})
fs.writeFile("/home/samba/tmp/tmp.js", _.toString(feautres))
// 根据feautres 算出周长
var milling = Object.keys(feautres).reduce(function(a,b){
var value = feautres[b]
if (value.type=="line"){
length = Math.sqrt((Number(value.xe)-Number(value.xs))*(Number(value.xe)-Number(value.xs)) + (Number(value.ye)-Number(value.ys))*(Number(value.ye)-Number(value.ys)))
a += length
} else if (value.type=="arc") {
a += arcLength(Number(value.xs),Number(value.ys),Number(value.xe),Number(value.ye),Number(value.xc),Number(value.yc))
}
return a
}, 0)
console.log("========milling:"+milling);
res += milling
console.log("========res:"+res);
GEN.deleteLayer({job:that.job,layer:[tmp]})
}
})
return res.toFixed(3)
}
T_m_p.prototype.analysis_milling_length_array = function(){ // todo
if(!this.array_step){return "_error"}
GEN.openStep({job:this.job,name:this.array_step})
var tmp = "length_tmp"
GEN.COM("profile_to_rout,layer="+tmp+",width=1")
var feautres = GEN.getFeatures({job:this.job,step:this.array_step,layer:tmp,units:"mm"})
// 根据feautres 算出周长
var milling = Object.keys(feautres).reduce(function(a,b){
var value = feautres[b]
if (value.type=="line"){
length = Math.sqrt((value.xe-value.xs)*(value.xe-value.xs) + (value.ye-value.ys)*(value.ye-value.ys))
a += length
} else if (value.type=="arc") {
a += arcLength(Number(value.xs),Number(value.ys),Number(value.xe),Number(value.ye),Number(value.xc),Number(value.yc))
}
return a
}, 0)
GEN.closeStep()
return milling
} }
T_m_p.prototype.analysis_board_has_attr = function(props){ // board层中检查存在01005属性物件时 T_m_p.prototype.analysis_board_has_attr = function(props){ // board层中检查存在01005属性物件时
GEN.openStep({job:this.job,name:this.pcs_step}) GEN.openStep({job:this.job,name:this.pcs_step})
...@@ -1544,7 +1598,7 @@ function analysis(props){ ...@@ -1544,7 +1598,7 @@ function analysis(props){
} else if (solder_paste_info.length == 1) { } else if (solder_paste_info.length == 1) {
res = /top/ig.test(solder_paste_info[0]) ? "FRONT1" : "BACK1" res = /top/ig.test(solder_paste_info[0]) ? "FRONT1" : "BACK1"
} else { } else {
res = "FRONT1_BACK1" res = "FRONT1;BACK1"
} }
return res return res
} }
...@@ -2322,3 +2376,12 @@ function saveMeans(props){ ...@@ -2322,3 +2376,12 @@ function saveMeans(props){
fs.writeFile(respath+"/meas",meas.join("\n")) fs.writeFile(respath+"/meas",meas.join("\n"))
fs.chmod(respath+"/meas",777) fs.chmod(respath+"/meas",777)
} }
// 算弧长
function arcLength(x1,y1,x2,y2,x3,y3){
var cos0 = +((x3-x1)*(x2-x3) + (y3-y1)*(y2-y3)) / (Math.pow((Math.pow(x2-x3,2) + Math.pow(y2-y3,2)),0.5) * Math.pow((Math.pow(x3-x1,2) + Math.pow(y3-y1,2)),0.5))
var tmp = Math.acos(cos0)
var sin0 = Math.sin(tmp)
var length = +Math.sqrt(Math.pow(x2-x1,2) + Math.pow(y2-y1,2)) / sin0 * tmp
return length
}
\ No newline at end of file
...@@ -255,7 +255,6 @@ try { ...@@ -255,7 +255,6 @@ try {
var now_profile = GEN.getProfile({job:job, step:tmp_step}) var now_profile = GEN.getProfile({job:job, step:tmp_step})
if(now_profile.match(/\n/ig).length == 1){ // 如果没有profile if(now_profile.match(/\n/ig).length == 1){ // 如果没有profile
createOutline({job:job, step:tmp_step, matrix: tmp_matrix, profileRule:profileRule}) createOutline({job:job, step:tmp_step, matrix: tmp_matrix, profileRule:profileRule})
throw "tmp"
var hasProfile = GEN.getProfile({job:job, step:tmp_step}) var hasProfile = GEN.getProfile({job:job, step:tmp_step})
if(hasProfile.match(/\n/ig).length == 1){ if(hasProfile.match(/\n/ig).length == 1){
throw "创建profile失败" throw "创建profile失败"
...@@ -636,6 +635,7 @@ function createOutline(props){ ...@@ -636,6 +635,7 @@ function createOutline(props){
if(GEN.getSelectCount()>0){GEN.selDelete()} if(GEN.getSelectCount()>0){GEN.selDelete()}
GEN.selClearFeature() GEN.selClearFeature()
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.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.selectByFilter({feat_types:"surface"}) GEN.selectByFilter({feat_types:"surface"})
GEN.selReverse() GEN.selReverse()
if(GEN.getSelectCount()>0){GEN.selDelete()} if(GEN.getSelectCount()>0){GEN.selDelete()}
...@@ -648,6 +648,7 @@ function createOutline(props){ ...@@ -648,6 +648,7 @@ function createOutline(props){
GEN.selAllFeat() GEN.selAllFeat()
GEN.selDelete() GEN.selDelete()
GEN.workLayer({name:tmp_outline2,display_number:2,clear_before:"yes"}) GEN.workLayer({name:tmp_outline2,display_number:2,clear_before:"yes"})
GEN.COM("sel_clean_holes,max_size=200,clean_mode=x_and_y")
GEN.COM("sel_surf2outline,width=1") GEN.COM("sel_surf2outline,width=1")
GEN.selAllFeat() GEN.selAllFeat()
selCopyLayer({job:job,layer:l}) selCopyLayer({job:job,layer:l})
......
...@@ -1008,6 +1008,7 @@ ...@@ -1008,6 +1008,7 @@
], ],
"mergerule" : { "mergerule" : {
drill:["(\\d+)-(\\d+)\\.drl$"], drill:["(\\d+)-(\\d+)\\.drl$"],
profile:["sm_top"],
laser : { laser : {
tl_name: "drill($1)-($2)", tl_name: "drill($1)-($2)",
regs: ["(\\d+)-(\\d+)\\.drl$"] regs: ["(\\d+)-(\\d+)\\.drl$"]
......
This diff is collapsed.
...@@ -11,14 +11,6 @@ var JobId = $.job_id; ...@@ -11,14 +11,6 @@ var JobId = $.job_id;
try { try {
return "Done" return "Done"
} catch (e) { } catch (e) {
return "Error" return "Error"
......
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