Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in / Register
Toggle navigation
S
Scott
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Scott Sun
Scott
Commits
21ea8dd5
Commit
21ea8dd5
authored
Jun 09, 2020
by
Scott Sun
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
s
parent
c7a97443
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
459 additions
and
75 deletions
+459
-75
analysis_test.js
ats/scott_test/analysis_test.js
+79
-7
format_test.js
ats/scott_test/format_test.js
+228
-19
input_test.js
ats/scott_test/input_test.js
+17
-8
config_ats.js
config_ats.js
+107
-41
scott_test.js
test/scott_test.js
+28
-0
No files found.
ats/scott_test/analysis_test.js
View file @
21ea8dd5
...
@@ -44,6 +44,38 @@
...
@@ -44,6 +44,38 @@
],
],
tool_tip:'是否自动保存料号开关'
tool_tip:'是否自动保存料号开关'
}
}
},
{
name : 'export_path',
title : '导出路径',
type : 'LineEdit',
property : {tool_tip : '导出路径'}
},
{
name : 'export_mode',
title : '导出模式',
type : 'RadioBox',
property : {
item_list:[
{name:'tar_gzip',text:'tar_gzip'},
{name:'tar',text:'tar'},
{name:'xml',text:'xml'},
{name:'directory',text:'directory'},
],
tool_tip:'导出模式'
}
},
{
name : 'export_submode',
title : '导出方式',
type : 'RadioBox',
property : {
item_list:[
{name:'full',text:'full'},
{name:'partial',text:'partial'},
],
tool_tip:'导出方式'
}
}
}
]
]
...
@@ -576,7 +608,7 @@ try {
...
@@ -576,7 +608,7 @@ try {
GEN
.
openStep
({
job
:
job
,
name
:
step
})
GEN
.
openStep
({
job
:
job
,
name
:
step
})
GEN
.
affectedLayer
({
affected
:
'no'
,
mode
:
'all'
})
GEN
.
affectedLayer
({
affected
:
'no'
,
mode
:
'all'
})
GEN
.
clearLayers
()
GEN
.
clearLayers
()
if
(
par
.
cam_type
==
"genesis"
){
if
(
GEN
.
GEN_TYPE
==
"genesis"
){
GEN
.
COM
(
"chklist_single,action=valor_cleanup_set_smd,show=yes"
)
GEN
.
COM
(
"chklist_single,action=valor_cleanup_set_smd,show=yes"
)
GEN
.
COM
(
"chklist_cupd,chklist=valor_cleanup_set_smd,nact=1,params=((pp_layer=.type=signal|mixed&side=top|bottom)(pp_drill=No)(pp_rotate=No)(pp_ignore_covered=Yes)(pp_sm=No)(pp_types=Square
\
;Rect
\
;Oval)(pp_other=)(pp_delete=No)),mode=regular"
)
GEN
.
COM
(
"chklist_cupd,chklist=valor_cleanup_set_smd,nact=1,params=((pp_layer=.type=signal|mixed&side=top|bottom)(pp_drill=No)(pp_rotate=No)(pp_ignore_covered=Yes)(pp_sm=No)(pp_types=Square
\
;Rect
\
;Oval)(pp_other=)(pp_delete=No)),mode=regular"
)
GEN
.
COM
(
"chklist_run,chklist=valor_cleanup_set_smd,nact=1,area=profile"
)
GEN
.
COM
(
"chklist_run,chklist=valor_cleanup_set_smd,nact=1,area=profile"
)
...
@@ -660,7 +692,6 @@ try {
...
@@ -660,7 +692,6 @@ try {
}
}
})
})
console
.
log
(
"================================> 9 copper_percent signal drill"
)
console
.
log
(
"================================> 9 copper_percent signal drill"
)
// 分析layer info
// 分析layer info
var
stepList
=
[
pcs_step
];
var
stepList
=
[
pcs_step
];
var
oChecklistName
=
"mychecklist"
var
oChecklistName
=
"mychecklist"
...
@@ -714,6 +745,13 @@ try {
...
@@ -714,6 +745,13 @@ try {
jobid
:
JobId
,
jobid
:
JobId
,
jobinfohash
:
{
ATS_surface_area_base_on
:
"Card"
}
jobinfohash
:
{
ATS_surface_area_base_on
:
"Card"
}
})
})
var
jobpath
if
(
GEN
.
GEN_TYPE
==
"genesis"
){
jobpath
=
GEN
.
getJobPath
({
job
:
job
})
}
else
{
jobpath
=
"/home/local_db/server_db/jobs/"
+
job
}
mkPath
(
jobpath
,[
"user"
,
"opcam"
,
"steps"
])
stepList
.
forEach
(
function
(
step
){
stepList
.
forEach
(
function
(
step
){
GEN
.
openStep
({
job
:
job
,
name
:
step
})
GEN
.
openStep
({
job
:
job
,
name
:
step
})
// GEN.units({type:'mm'})
// GEN.units({type:'mm'})
...
@@ -832,7 +870,7 @@ try {
...
@@ -832,7 +870,7 @@ try {
items
:
[
tmpitem
]
items
:
[
tmpitem
]
})
})
// signal层分析结果
// signal层分析结果
var
res
=
analysisChkAttr
({
layers
:
signalLayers
,
info
:
info
,
step
:
step
,
job
:
job
,
oChecklistName
:
oChecklistName
})
var
res
=
analysisChkAttr
({
layers
:
signalLayers
,
info
:
info
,
step
:
step
,
job
:
job
,
oChecklistName
:
oChecklistName
,
jobpath
:
jobpath
})
// 数据入库
// 数据入库
Object
.
keys
(
res
).
forEach
(
function
(
key
){
Object
.
keys
(
res
).
forEach
(
function
(
key
){
...
@@ -850,9 +888,9 @@ try {
...
@@ -850,9 +888,9 @@ try {
layerinfohash
:
val
layerinfohash
:
val
})
})
})
})
GEN
.
closeStep
()
GEN
.
closeStep
()
})
})
// 保存
// 保存
if
(
/yes/ig
.
test
(
par
.
auto_save
)){
if
(
/yes/ig
.
test
(
par
.
auto_save
)){
...
@@ -864,6 +902,17 @@ try {
...
@@ -864,6 +902,17 @@ try {
GEN
.
checkInout
({
job
:
job
,
mode
:
"in"
})
GEN
.
checkInout
({
job
:
job
,
mode
:
"in"
})
}
}
// 导出
if
(
par
.
export_path
!=
""
&&
par
.
export_mode
!=
""
&&
par
.
export_submode
!=
""
){
if
(
fs
.
exists
(
par
.
export_path
)){
GEN
.
COM
(
"export_job"
,{
job
:
job
,
path
:
par
.
export_path
,
mode
:
par
.
export_mode
,
submode
:
par
.
export_submode
,
overwrite
:
"yes"
,
format
:
"genesis"
,
output_name
:
job
})
GEN
.
COM
(
"disp_on"
)
GEN
.
COM
(
"origin_on"
)
}
else
{
resultData
.
push
({
type
:
"error"
,
title
:
"导出路径不存在!"
,
detail
:
[{
desc
:
par
.
export_path
}]
});
}
}
QDfm
.
updateRow
({
QDfm
.
updateRow
({
table
:
"pdm_aimdfm_task"
,
table
:
"pdm_aimdfm_task"
,
...
@@ -968,8 +1017,8 @@ function ANALYSIS_STACKUP(props){
...
@@ -968,8 +1017,8 @@ function ANALYSIS_STACKUP(props){
layer
.
drl_to_num
=
layer_count
;
layer
.
drl_to_num
=
layer_count
;
layer
.
type
=
'main_drill'
;
layer
.
type
=
'main_drill'
;
}
}
else
if
(
/^ftdrill
(\d
+
)
-
(\d
+
)
l$
/
.
test
(
layer
.
odb_name
)){
// /^d(\d+)\-(\d+)$/
else
if
(
/^ftdrill
(\d
+
)
-
(\d
+
)
/
.
test
(
layer
.
odb_name
)){
// /^d(\d+)\-(\d+)$/
var
tmp
=
/^ftdrill
(\d
+
)
-
(\d
+
)
l$
/
.
exec
(
layer
.
odb_name
)
var
tmp
=
/^ftdrill
(\d
+
)
-
(\d
+
)
/
.
exec
(
layer
.
odb_name
)
var
drl_star
=
tmp
[
1
];
var
drl_star
=
tmp
[
1
];
var
drl_end
=
tmp
[
2
];
var
drl_end
=
tmp
[
2
];
layer
.
drl_start_num
=
drl_star
;
layer
.
drl_start_num
=
drl_star
;
...
@@ -1740,6 +1789,7 @@ function analysisChkAttr(par) {
...
@@ -1740,6 +1789,7 @@ function analysisChkAttr(par) {
var
job
=
par
.
job
;
var
job
=
par
.
job
;
var
oChecklistName
=
par
.
oChecklistName
var
oChecklistName
=
par
.
oChecklistName
layers
.
forEach
(
function
(
v
)
{
layers
.
forEach
(
function
(
v
)
{
saveMeans
({
job
:
job
,
step
:
par
.
step
,
chklist
:
oChecklistName
,
nact
:
1
,
layer
:
v
,
jobpath
:
par
.
jobpath
})
hash
[
v
]
=
{}
hash
[
v
]
=
{}
Object
.
keys
(
info
).
forEach
(
function
(
key
)
{
Object
.
keys
(
info
).
forEach
(
function
(
key
)
{
var
val
=
info
[
key
]
var
val
=
info
[
key
]
...
@@ -2243,4 +2293,26 @@ function unSelect(){
...
@@ -2243,4 +2293,26 @@ function unSelect(){
GEN
.
selectByFilter
({
attribute
:[{
attribute
:
'.drill'
,
option
:
'non_plated'
}],
profile
:
'all'
,
operation
:
"unselect"
})
GEN
.
selectByFilter
({
attribute
:[{
attribute
:
'.drill'
,
option
:
'non_plated'
}],
profile
:
'all'
,
operation
:
"unselect"
})
}
}
function
mkPath
(
path
,
list
)
{
console
.
log
(
"--path:"
+
path
);
if
(
list
.
length
){
var
newPath
=
path
+
'/'
+
list
.
shift
()
if
(
!
fs
.
dirExists
(
newPath
)){
fs
.
mkdir
(
newPath
)
console
.
log
(
"--mkdir:"
+
newPath
);
}
return
mkPath
(
newPath
,
list
)
}
else
{
return
path
}
}
function
saveMeans
(
props
){
var
job
=
props
.
job
var
step
=
props
.
step
var
chklist
=
props
.
chklist
var
nact
=
props
.
nact
var
layer
=
props
.
layer
// 获取meas
var
meas
=
GEN
.
getCheckMeas
({
job
:
job
,
step
:
step
,
chklist
:
chklist
,
nact
:
nact
,
layer
:
layer
})
var
basepath
=
props
.
jobpath
+
"/user/opcam/steps"
var
respath
=
mkPath
(
basepath
,[
step
,
"chk"
,
chklist
+
"_"
+
nact
,
layer
])
fs
.
writeFile
(
respath
+
"/meas"
,
meas
.
join
(
"
\n
"
))
}
\ No newline at end of file
ats/scott_test/format_test.js
View file @
21ea8dd5
...
@@ -99,9 +99,75 @@ try {
...
@@ -99,9 +99,75 @@ try {
console
.
log
(
"Checkout====== ========================>"
)
console
.
log
(
"Checkout====== ========================>"
)
GEN
.
checkInout
({
job
:
job
,
mode
:
"out"
});
GEN
.
checkInout
({
job
:
job
,
mode
:
"out"
});
console
.
log
(
"Checkout success==============================>"
)
console
.
log
(
"Checkout success==============================>"
)
// if(config.hasOwnProperty("merge_drill")){ // todo
var
profileRule
// mergeDrill({job:job})
if
(
custCfg
.
hasOwnProperty
(
"mergerule"
)){
// }
var
mergeRule
=
custCfg
.
mergerule
if
(
mergeRule
.
drill
){
if
(
/string/ig
.
test
(
typeof
(
mergeRule
.
drill
[
0
]))){
// drill层 计算
var
drill_layers
=
[]
var
matrix
=
GEN
.
getMatrix
({
job
:
job
})
// 计算最大值
var
layers
=
Object
.
keys
(
matrix
)
var
maxnum
=
[]
layers
.
forEach
(
function
(
v
){
var
hasrule
mergeRule
.
drill
.
forEach
(
function
(
rule
){
var
reg
=
new
RegExp
(
rule
,
"ig"
)
if
(
reg
.
test
(
v
)){
hasrule
=
rule
}
})
if
(
hasrule
){
var
reg
=
new
RegExp
(
hasrule
,
"ig"
)
var
tmp
=
reg
.
exec
(
v
)
var
num1
=
Number
(
tmp
[
1
])
var
num2
=
Number
(
tmp
[
2
])
if
(
num1
==
1
){
drill_layers
.
push
({
num1
:
num1
,
num2
:
num2
,
layer
:
v
})
}
maxnum
.
push
(
num1
)
maxnum
.
push
(
num2
)
}
})
var
max
=
maxnum
.
sort
(
function
(
a
,
b
){
return
b
-
a
})[
0
]
var
drill_layer
=
drill_layers
.
filter
(
function
(
v
){
return
v
.
num2
==
max
})
if
(
drill_layer
.
length
){
drill_layer
=
drill_layer
[
0
].
layer
GEN
.
COM
(
"matrix_rename_layer"
,{
job
:
job
,
matrix
:
"matrix"
,
layer
:
drill_layer
,
new_name
:
"drill"
})
}
}
else
if
(
/object/ig
.
test
(
typeof
(
mergeRule
.
drill
[
0
]))){
// drill: [
// {orig_rule:["contournonplated"],drill_type:"non_plated",shape:"slot"},
// {orig_rule:["contourplated"],drill_type:"plated",shape:"slot"},
// {orig_rule:["thruholenonplated"],drill_type:"non_plated",shape:"hole"},
// {orig_rule:["thruholeplated"],drill_type:"plated",shape:"hole"},
// ],
var
matrix
=
GEN
.
getMatrix
({
job
:
job
})
// 计算最大值
var
layers
=
Object
.
keys
(
matrix
)
var
tmp_step
=
GEN
.
getStepList
({
job
:
job
})
GEN
.
openStep
({
job
:
job
,
name
:
tmp_step
[
0
]})
layers
.
forEach
(
function
(
layer
){
var
tmp
=
mergeRule
.
drill
.
filter
(
function
(
item
){
var
reg
=
new
RegExp
(
item
.
orig_rule
,
"ig"
)
return
reg
.
test
(
layer
)
})
if
(
tmp
.
length
){
tmp
=
tmp
[
0
]
GEN
.
workLayer
({
name
:
layer
,
display_number
:
2
,
clear_before
:
'yes'
})
GEN
.
COM
(
"cur_atr_set,attribute=.drill,option="
+
tmp
.
drill_type
)
GEN
.
COM
(
"sel_change_atr,mode=add"
)
GEN
.
selCopyOther
({
dest
:
'layer_name'
,
target_layer
:
'drill'
,
invert
:
'no'
,
dx
:
0
,
dy
:
0
,
size
:
0
})
}
})
GEN
.
closeStep
()
}
}
if
(
mergeRule
.
laser
){
mergeLaser
({
job
:
job
,
mergeRule
:
mergeRule
.
laser
})
}
if
(
mergeRule
.
profile
){
profileRule
=
mergeRule
.
profile
}
}
// start martix_tl_name
// start martix_tl_name
console
.
log
(
"get matrix ====== ======== job:"
+
job
);
console
.
log
(
"get matrix ====== ======== job:"
+
job
);
var
matrix
=
GEN
.
getMatrix
({
job
:
job
});
var
matrix
=
GEN
.
getMatrix
({
job
:
job
});
...
@@ -124,6 +190,56 @@ try {
...
@@ -124,6 +190,56 @@ try {
err
=
reName
({
job
:
job
,
matrix
:
after_sort_matrix
,
cfg
:
format_cfg
})
err
=
reName
({
job
:
job
,
matrix
:
after_sort_matrix
,
cfg
:
format_cfg
})
if
(
err
){
throw
err
}
if
(
err
){
throw
err
}
var
tmp_matrix
=
GEN
.
getMatrix
({
job
:
job
})
// 钻孔名称再次更改
var
ftdrill_layer
=
Object
.
keys
(
tmp_matrix
).
filter
(
function
(
v
){
return
tmp_matrix
[
v
].
layer_type
==
"drill"
&&
tmp_matrix
[
v
].
context
==
"board"
})
var
hasMainDrill
=
Boolean
(
ftdrill_layer
.
indexOf
(
"ftdrill"
)
>=
0
)
var
layer_count
=
GEN
.
getLayerCount
({
job
:
job
})
ftdrill_layer
.
forEach
(
function
(
v
){
if
(
/
(\d
+
)
-
(\d
+
)
/
.
test
(
v
)){
var
tmp
=
/
(\d
+
)
-
(\d
+
)
/
.
exec
(
v
)
var
num1
=
Number
(
tmp
[
1
])
var
num2
=
Number
(
tmp
[
2
])
var
chabie
=
num2
-
num1
if
(
num1
==
1
&&
num2
==
layer_count
&&
!
hasMainDrill
){
GEN
.
renameLayer
({
job
:
job
,
layer
:
v
,
new_name
:
"ftdrill"
})
if
(
ftdrill_layer
[
ftdrill_layer
.
length
-
1
]
!=
v
){
GEN
.
matrixMoveRow
({
job
:
job
,
layer
:
"ftdrill"
,
after
:
ftdrill_layer
[
ftdrill_layer
.
length
-
1
]
})
}
}
else
if
(
chabie
>
1
&&
chabie
<
layer_count
-
1
){
// 改名
GEN
.
renameLayer
({
job
:
job
,
layer
:
v
,
new_name
:
v
.
substr
(
0
,
v
.
length
-
1
)})
}
}
})
var
all_layer
=
Object
.
keys
(
tmp_matrix
)
// 没有outline层
if
(
profileRule
&&
all_layer
.
indexOf
(
"outline"
)
<
0
){
// 判断有没有profile
var
board_layer
=
all_layer
.
filter
(
function
(
v
){
return
tmp_matrix
[
v
].
context
==
"board"
})
var
tmp_step
=
GEN
.
getStepList
({
job
:
job
})[
0
]
GEN
.
openStep
({
job
:
job
,
name
:
tmp_step
})
var
now_profile
=
GEN
.
getProfile
({
job
:
job
,
step
:
tmp_step
})
if
(
now_profile
.
match
(
/
\n
/ig
).
length
==
1
){
// 如果没有profile
createOutline
({
job
:
job
,
step
:
tmp_step
,
matrix
:
tmp_matrix
,
profileRule
:
profileRule
})
var
hasProfile
=
GEN
.
getProfile
({
job
:
job
,
step
:
tmp_step
})
if
(
hasProfile
.
match
(
/
\n
/ig
).
length
==
1
){
throw
"创建profile失败"
}
}
else
{
GEN
.
affectedLayer
({
affected
:
'yes'
,
layer
:
board_layer
,
clear_before
:
"yes"
})
GEN
.
selectByFilter
({
profile
:
"out"
})
if
(
GEN
.
getSelectCount
()
>
0
){
GEN
.
selDelete
()
}
}
}
// end
// end
GEN
.
checkInout
({
job
:
job
,
mode
:
"out"
})
// 结束保存料号 关闭料号
GEN
.
checkInout
({
job
:
job
,
mode
:
"out"
})
// 结束保存料号 关闭料号
...
@@ -268,8 +384,8 @@ function sortLayer(props){ // 排序方法 {job:要排序的料号, rule: {要
...
@@ -268,8 +384,8 @@ function sortLayer(props){ // 排序方法 {job:要排序的料号, rule: {要
}
}
sortNames.forEach(function(v,i,arr){
sortNames.forEach(function(v,i,arr){
if(i !== 0){
if(i !== 0){
GEN.matrixMoveRow({ job:job,layer:v.name,after:arr[i-1].name })
GEN.matrixMoveRow({ job:job,layer:v.name,after:arr[i-1].name })
}
}
GEN.matrixLayerAttr(_.assign({job:job,layer:v.name},v.attr));
GEN.matrixLayerAttr(_.assign({job:job,layer:v.name},v.attr));
})
})
}
}
...
@@ -389,29 +505,43 @@ function reName(props) { // 改名 par{job:要改名的料号, rule: {要改名
...
@@ -389,29 +505,43 @@ function reName(props) { // 改名 par{job:要改名的料号, rule: {要改名
}
}
}
}
function mergeDrill(props){ // 合并钻孔
function mergeLaser(props){ // 合并钻孔
var newdrills = []
if(!props.mergeRule){return}
var mergeRuleRegs = props.mergeRule.regs
var mergeTlname = props.mergeRule.tl_name
var newdrills = []
var merge_info = {}
var regs = mergeRuleRegs
var job = props.job;
var job = props.job;
var step = GEN.getStepList({job:job})[0];
var step = GEN.getStepList({job:job})[0];
var maxDrill = {name:"",value:0};
var maxDrill = {name:"",value:0};
function getDrl(str){
function getDrl(str, r){
var num = /(
\
d+)-(
\
d+)
\
.drl/ig.exec(str); // 匹配出 num-num
var reg = new RegExp(r,"
ig
")
var num = reg.exec(str); // 匹配出 num-num
var tmp = [];
var tmp = [];
for(var i = Number(num[1]);i<num[2];i++){
for(var i = Number(num[1]);i<num[2];i++){
if(i == 1){
if(i == 1){
maxDrill = Number(num[2]) > maxDrill.value? {name:str,value:Number(num[2])} : maxDrill;
maxDrill = Number(num[2]) > maxDrill.value? {name:str,value:Number(num[2])} : maxDrill;
}
}
tmp.push("
L
"+i+"
-
"+(i+1));
var layername = mergeTlname.replace("
(
$1
)
", i)
layername = layername.replace("
(
$2
)
", i+1)
tmp.push(layername);
}
}
return tmp;
return tmp;
}
}
var matrix = GEN.getMatrix({job:job});
var matrix = GEN.getMatrix({job:job});
GEN.openStep({job : job,name:step});
GEN.openStep({job : job,name:step});
for(var key in matrix){
for(var key in matrix){
var val = matrix[key];
var val = matrix[key];
if(val.layer_type == "
drill
" && /(
\
d+)-(
\
d+)
\
.drl/ig.test(val.name)){
var tmpregs = regs.filter(function(v){
var mergeTo = getDrl(val.name) // 要合并到的地方
var reg = new RegExp(v,"
ig
")
mergeTo.forEach(function(layerName){
return reg.test(val.name)
})
if(tmpregs.length > 0){
var reg = tmpregs[0]
var mergeTo = getDrl(val.name, reg) // 要合并到的地方
merge_info[val.name] = mergeTo
mergeTo.forEach(function(layerName){
if(GEN.isLayerExists({job : job ,layer:layerName.toLowerCase()}) && newdrills.indexOf(layerName.toLowerCase()) < 0){
if(GEN.isLayerExists({job : job ,layer:layerName.toLowerCase()}) && newdrills.indexOf(layerName.toLowerCase()) < 0){
GEN.deleteLayer({job:job, layer:layerName.toLowerCase()})
GEN.deleteLayer({job:job, layer:layerName.toLowerCase()})
}
}
...
@@ -423,12 +553,91 @@ function mergeDrill(props){ // 合并钻孔
...
@@ -423,12 +553,91 @@ function mergeDrill(props){ // 合并钻孔
GEN.copyLayer({source_job:job ,mode:'append',source_step:step,source_layer:val.name,dest_layer:layerName.toLowerCase()});
GEN.copyLayer({source_job:job ,mode:'append',source_step:step,source_layer:val.name,dest_layer:layerName.toLowerCase()});
})
})
}
}
}
}
GEN.createLayer({job:job,layer:"
b1
-
"+maxDrill.value,conext:'board',type:'drill'});
GEN.workLayer({name:"
b1
-
"+maxDrill.value,display_number:1,clear_before:'yes'});
GEN.copyLayer({source_job:job ,mode:'append',source_step:step,source_layer:maxDrill.name,dest_layer:"
b1
-
"+maxDrill.value});
GEN.affectedLayer({affected:"
no
",mode:"
all
"});
GEN.affectedLayer({affected:"
no
",mode:"
all
"});
GEN.clearLayers();
GEN.clearLayers();
GEN.closeStep();
GEN.closeStep();
}
}
function createOutline(props){
var profileRule = props.profileRule
var job = props.job
var step = props.step
var matrix = props.matrix
var outlines = Object.keys(matrix).filter(function(v){
var flag = false
profileRule.forEach(function(rule){
var reg = new RegExp(rule,"
ig
")
if(reg.test(v)){
flag = true
}
})
return flag
})
var drill_layer = Object.keys(matrix).filter(function(v){return matrix[v].layer_type=="
drill
" && matrix[v].context == "
board
"})
var tmp_outline
if(outlines.length){
if( outlines.length){
for(var i =0;i<outlines.length;i++){
tmp_outline = outlines[i]
if(cl(tmp_outline)) {
return true
}else{
continue
}
}
} else {
return cl(outlines[0])
}
}else{return false}
function cl(l){
GEN.openStep({job:job, name:step})
GEN.affectedLayer({affected:'no',mode:'all'})
GEN.workLayer({name:l,display_number:2,clear_before:"
yes
"})
var bk = l + "
_bk
"
selCopyLayer({job:job,layer:bk})
GEN.workLayer({name:bk,display_number:2,clear_before:"
yes
"})
l = bk
GEN.selectByFilter({feat_types:"
line
\
;
arc
"})
GEN.selReverse()
if(GEN.getSelectCount()>0){GEN.selDelete()}
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.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'})
if(GEN.getSelectCount() > 0){
var tmp_outline2 = l + "
_tmp
"
selCopyLayer({job:job,layer:tmp_outline2})
GEN.workLayer({name:l,display_number:2,clear_before:"
yes
"})
GEN.selAllFeat()
GEN.selDelete()
GEN.workLayer({name:tmp_outline2,display_number:2,clear_before:"
yes
"})
GEN.COM("
sel_surf2outline
,
width
=
1
")
GEN.selAllFeat()
selCopyLayer({job:job,layer:l})
GEN.workLayer({name:l,display_number:2,clear_before:"
yes
"})
GEN.selClearFeature()
GEN.selCreateProfile()
GEN.selectByFilter({profile:"
in
"})
if(GEN.getSelectCount()> 0){GEN.selDelete()}
GEN.deleteLayer({job:job, layer:tmp_layer})
GEN.deleteLayer({job:job, layer:tmp_outline2})
GEN.renameLayer({job:job, layer:l,new_name:'outline'})
return true
}
GEN.deleteLayer({job:job, layer:tmp_layer})
return false
}
}
function selCopyLayer(props){ // 拷贝选择的到辅助层
var layer = props.layer
var job = props.job
if(GEN.isLayerExists({job:job,layer:layer})){
GEN.deleteLayer({job:job,layer:layer})
}
GEN.selCopyOther({dest:'layer_name',target_layer:layer})
}
\ No newline at end of file
ats/scott_test/input_test.js
View file @
21ea8dd5
...
@@ -70,6 +70,7 @@ var JobId = $.job_id;
...
@@ -70,6 +70,7 @@ var JobId = $.job_id;
var
db
=
$
.
db
;
var
db
=
$
.
db
;
var
Status
=
'ok'
;
var
Status
=
'ok'
;
var
resultData
=
[];
var
resultData
=
[];
var
import_info
=
[]
var
PAR
=
{};
var
PAR
=
{};
if
(
$
.
hasOwnProperty
(
'script_parameter'
)){
if
(
$
.
hasOwnProperty
(
'script_parameter'
)){
PAR
=
JSON
.
parse
(
$
.
script_parameter
);
PAR
=
JSON
.
parse
(
$
.
script_parameter
);
...
@@ -156,10 +157,9 @@ try {
...
@@ -156,10 +157,9 @@ try {
if
(
jobInfo
.
data
.
length
==
0
){
throw
"file error"
}
if
(
jobInfo
.
data
.
length
==
0
){
throw
"file error"
}
var
importOk
=
false
;
// 是否成功导入
var
importOk
=
false
;
// 是否成功导入
if
(
/odb/ig
.
test
(
jobInfo
.
type
)){
// odb导入
if
(
/odb/ig
.
test
(
jobInfo
.
type
)){
// odb导入
fs
.
writeFile
(
"./tmp.js"
,
_
.
toString
(
jobInfo
.
data
))
if
(
jobInfo
.
data
.
length
==
1
){
// 只分析到一个tgz文件 直接导入
if
(
jobInfo
.
data
.
length
==
1
){
// 只分析到一个tgz文件 直接导入
resultData
.
push
(
{
type
:
"info"
,
title
:
"读取"
+
jobInfo
.
data
[
0
].
file
.
name
,
import_info
.
push
({
name
:
jobInfo
.
data
[
0
].
file
.
name
,
type
:
"odb++"
,
date
:
now
(),
user
:
$
.
user_name
})
detail
:
[{
desc
:
_
.
toString
({
format
:
"odb++"
,
date
:
now
(),
user
:
$
.
user_name
})}]})
var
err
=
importJob
({
name
:
job
,
db
:
custCfg
.
db
,
path
:
jobInfo
.
data
[
0
].
file
.
path
},
config
.
delSameJob
)
var
err
=
importJob
({
name
:
job
,
db
:
custCfg
.
db
,
path
:
jobInfo
.
data
[
0
].
file
.
path
},
config
.
delSameJob
)
if
(
err
){
throw
err
}
if
(
err
){
throw
err
}
}
else
{
// 多个tgz文件 说明需要合并
}
else
{
// 多个tgz文件 说明需要合并
...
@@ -168,8 +168,7 @@ try {
...
@@ -168,8 +168,7 @@ try {
var
path
=
item
.
file
.
path
var
path
=
item
.
file
.
path
var
tmp_job_name
=
job
+
"_tmp_"
+
i
var
tmp_job_name
=
job
+
"_tmp_"
+
i
var
err
=
importJob
({
name
:
tmp_job_name
,
db
:
custCfg
.
db
,
path
:
path
},
config
.
delSameJob
)
var
err
=
importJob
({
name
:
tmp_job_name
,
db
:
custCfg
.
db
,
path
:
path
},
config
.
delSameJob
)
resultData
.
push
(
{
type
:
"info"
,
title
:
"读取"
+
item
.
file
.
name
,
import_info
.
push
({
name
:
item
.
file
.
name
,
type
:
"odb++"
,
date
:
now
(),
user
:
$
.
user_name
})
detail
:
[{
desc
:
_
.
toString
({
format
:
"odb++"
,
date
:
now
(),
user
:
$
.
user_name
})}]})
if
(
err
){
throw
err
}
if
(
err
){
throw
err
}
return
{
return
{
name
:
tmp_job_name
,
name
:
tmp_job_name
,
...
@@ -233,7 +232,7 @@ try {
...
@@ -233,7 +232,7 @@ try {
var
gerberInfo
=
jobInfo
.
data
.
map
(
function
(
item
){
var
gerberInfo
=
jobInfo
.
data
.
map
(
function
(
item
){
var
gerberCfg
=
JSON
.
parse
(
JSON
.
stringify
(
item
.
format
));
var
gerberCfg
=
JSON
.
parse
(
JSON
.
stringify
(
item
.
format
));
var
file
=
item
.
file
var
file
=
item
.
file
gerberCfg
.
layer
=
file
.
name
.
toLowerCase
()
gerberCfg
.
layer
=
file
.
name
.
toLowerCase
()
.
split
(
" "
).
join
(
"-"
)
gerberCfg
.
path
=
file
.
path
gerberCfg
.
path
=
file
.
path
gerberCfg
.
format
=
item
.
type
gerberCfg
.
format
=
item
.
type
gerberCfg
.
job
=
job
gerberCfg
.
job
=
job
...
@@ -242,8 +241,8 @@ try {
...
@@ -242,8 +241,8 @@ try {
})
})
GEN
.
COM
(
"input_manual_reset"
)
GEN
.
COM
(
"input_manual_reset"
)
gerberInfo
.
forEach
(
function
(
v
){
gerberInfo
.
forEach
(
function
(
v
){
resultData
.
push
(
{
type
:
"info"
,
title
:
"读取"
+
v
.
layer
,
import_info
.
push
({
name
:
v
.
layer
,
type
:
"gerber274x"
,
date
:
now
(),
user
:
$
.
user_name
})
detail
:
[{
desc
:
_
.
toString
({
format
:
v
.
format
,
date
:
now
(),
user
:
$
.
user_name
})}]})
GEN
.
COM
(
"input_manual_set"
,
v
)
GEN
.
COM
(
"input_manual_set"
,
v
)
})
})
GEN
.
COM
(
"input_manual"
)
GEN
.
COM
(
"input_manual"
)
...
@@ -278,6 +277,16 @@ try {
...
@@ -278,6 +277,16 @@ try {
},
},
where
:
{
id
:
$
.
task_id
}
where
:
{
id
:
$
.
task_id
}
});
});
// name type date user
resultData
.
push
({
type
:
"info"
,
title
:
"导入资料列表"
,
detail
:
[{
desc
:
import_info
.
map
(
function
(
item
){
var
name
=
item
.
name
var
type
=
item
.
type
var
date
=
item
.
date
var
user
=
item
.
user
return
"导入资料:"
+
name
+
", 类型:"
+
type
+
", 导入时间:"
+
date
+
", 操作用户:"
+
user
}).
join
(
"
\n
"
)
}]
})
if
(
GEN
.
hasError
())
{
if
(
GEN
.
hasError
())
{
Status
=
'error'
;
Status
=
'error'
;
resultData
.
push
({
type
:
"error"
,
title
:
"GEN错误!"
,
detail
:
[{
desc
:
_
.
join
(
GEN
.
STATUS
,
"
\n
"
)
}]
});
resultData
.
push
({
type
:
"error"
,
title
:
"GEN错误!"
,
detail
:
[{
desc
:
_
.
join
(
GEN
.
STATUS
,
"
\n
"
)
}]
});
...
...
config_ats.js
View file @
21ea8dd5
...
@@ -245,26 +245,6 @@
...
@@ -245,26 +245,6 @@
"merge_by_rule"
:
"no"
,
"merge_by_rule"
:
"no"
,
"signed_coords"
:
"no"
,
"signed_coords"
:
"no"
,
"text_line_width"
:
0.0024
"text_line_width"
:
0.0024
},
"IPC356A_1"
:{
"nf1"
:
2
,
"nf2"
:
4
,
"units"
:
"inch"
,
"zeroes"
:
"none"
,
"decimal"
:
"no"
,
"nf_comp"
:
0
,
"break_sr"
:
"yes"
,
"data_type"
:
"ascii"
,
"separator"
:
"*"
,
"threshold"
:
200
,
"drill_only"
:
"no"
,
"multiplier"
:
1
,
"resolution"
:
3
,
"tool_units"
:
"inch"
,
"coordinates"
:
"absolute"
,
"merge_by_rule"
:
"no"
,
"signed_coords"
:
"no"
,
"text_line_width"
:
0.0024
}
}
},
},
"customer"
:
{
"customer"
:
{
...
@@ -680,10 +660,10 @@
...
@@ -680,10 +660,10 @@
{
{
"valid"
:
function
(
props
){
"valid"
:
function
(
props
){
var
file
=
props
.
file
;
var
file
=
props
.
file
;
return
/.+
\.
btd$
|.+
\.
rou$
/ig
.
test
(
file
.
name
)
return
/.+
\.
btd$/ig
.
test
(
file
.
name
)
},
},
"type"
:
"IPC356
A
"
,
"type"
:
"IPC356"
,
"format"
:
"IPC356
A
_1"
"format"
:
"IPC356_1"
},
},
{
{
"valid"
:
function
(
props
){
"valid"
:
function
(
props
){
...
@@ -761,7 +741,7 @@
...
@@ -761,7 +741,7 @@
{
{
"valid"
:
function
(
props
){
"valid"
:
function
(
props
){
var
file
=
props
.
file
;
var
file
=
props
.
file
;
return
/.+
\.
drl$/ig
.
test
(
file
.
name
)
return
/.+
\.
drl$
|
\.
rou$
/ig
.
test
(
file
.
name
)
},
},
"type"
:
"Excellon2"
,
"type"
:
"Excellon2"
,
"format"
:
"Excellon2_4"
,
"format"
:
"Excellon2_4"
,
...
@@ -809,10 +789,10 @@
...
@@ -809,10 +789,10 @@
{
"orig_name"
:
[
"^smt
\\
.art$"
,
"
\\
.sma$"
,
"SoldMask1Top
\\
.ger"
,
"sm_top"
],
"tl_name"
:
"sm_top"
},
{
"orig_name"
:
[
"^smt
\\
.art$"
,
"
\\
.sma$"
,
"SoldMask1Top
\\
.ger"
,
"sm_top"
],
"tl_name"
:
"sm_top"
},
{
"orig_name"
:
[
"^smb
\\
.art$"
,
"
\\
.smb$"
,
"SoldMask1Bot
\\
.ger"
,
"sm_bot"
],
"tl_name"
:
"sm_botm"
},
{
"orig_name"
:
[
"^smb
\\
.art$"
,
"
\\
.smb$"
,
"SoldMask1Bot
\\
.ger"
,
"sm_bot"
],
"tl_name"
:
"sm_botm"
},
{
"orig_name"
:
[
"^top$"
,
"^top.art$"
],
"tl_name"
:
"top"
},
{
"orig_name"
:
[
"^top$"
,
"^top.art$"
],
"tl_name"
:
"top"
},
{
"orig_name"
:
[
"^g(
\\
d+)
\\
.art$"
,
"^s(
\\
d+)
\\
.art$"
,
"
\\
.l(
\\
d+)$"
,
"Copper(
\\
d+)
\\
.ger$"
,
"^layer_(
\\
d+)"
],
"tl_name"
:
"l_($1)"
},
{
"orig_name"
:
[
"^
v(
\\
d+)
\\
.art$"
,
"^
g(
\\
d+)
\\
.art$"
,
"^s(
\\
d+)
\\
.art$"
,
"
\\
.l(
\\
d+)$"
,
"Copper(
\\
d+)
\\
.ger$"
,
"^layer_(
\\
d+)"
],
"tl_name"
:
"l_($1)"
},
{
"orig_name"
:
[
"^bot
\\
.art$"
,
"^bottom$"
,
"^bottom.art$"
],
"tl_name"
:
"bottom"
},
{
"orig_name"
:
[
"^bot
\\
.art$"
,
"^bottom$"
,
"^bottom.art$"
],
"tl_name"
:
"bottom"
},
{
"orig_name"
:
[
"
\\
.d(
\\
d+)$"
],
"tl_name"
:
"d_($1)-($1+1)"
},
{
"orig_name"
:
[
"
\\
.d(
\\
d+)$"
],
"tl_name"
:
"d_($1)-($1+1)"
},
{
"orig_name"
:
[
"
ThruHolePlated_(
\\
d+)_(
\\
d+)
\\
.ncd$"
,
"d(
\\
d+)-(
\\
d+)
"
],
"tl_name"
:
"d_($1)-($2)"
},
{
"orig_name"
:
[
"
thruHolePlated_(
\\
d+)_(
\\
d+)
\\
.ncd"
,
"^drill(
\\
d+)-(
\\
d+)$"
,
"^d_(
\\
d+)-(
\\
d+)$
"
],
"tl_name"
:
"d_($1)-($2)"
},
{
"orig_name"
:
[
"ThruHoleNonPlated
\\
.ncd$"
,
"^drill$"
],
"tl_name"
:
"drill"
},
{
"orig_name"
:
[
"ThruHoleNonPlated
\\
.ncd$"
,
"^drill$"
],
"tl_name"
:
"drill"
},
{
"orig_name"
:
[
"
\\
.rou$"
,
"^rout$"
],
"tl_name"
:
"rout"
},
{
"orig_name"
:
[
"
\\
.rou$"
,
"^rout$"
],
"tl_name"
:
"rout"
},
{
"orig_name"
:
"fab.art"
,
"tl_name"
:
"fab.art"
},
{
"orig_name"
:
"fab.art"
,
"tl_name"
:
"fab.art"
},
...
@@ -820,7 +800,15 @@
...
@@ -820,7 +800,15 @@
{
"orig_name"
:
[
"
\\
.bol$"
,
"PnlContourNonPlated
\\
.ger"
,
"^outline"
],
"tl_name"
:
"outline"
},
{
"orig_name"
:
[
"
\\
.bol$"
,
"PnlContourNonPlated
\\
.ger"
,
"^outline"
],
"tl_name"
:
"outline"
},
{
"orig_name"
:
[
"top-enig"
,
"enig_top"
],
"tl_name"
:
"enig_top"
},
{
"orig_name"
:
[
"top-enig"
,
"enig_top"
],
"tl_name"
:
"enig_top"
},
{
"orig_name"
:
[
"bot-enig"
,
"enig_bot"
],
"tl_name"
:
"enig_bot"
},
{
"orig_name"
:
[
"bot-enig"
,
"enig_bot"
],
"tl_name"
:
"enig_bot"
},
]
],
"mergerule"
:
{
drill
:
[
"(
\\
d+)-(
\\
d+)
\\
.drl$"
],
profile
:[
"^drill.
\\
art$"
],
laser
:
{
tl_name
:
"drill($1)-($2)"
,
regs
:
[
"(
\\
d+)-(
\\
d+)
\\
.drl$"
]
}
}
},
},
"Vivo"
:{
"Vivo"
:{
"step"
:
"cad"
,
"step"
:
"cad"
,
...
@@ -844,7 +832,7 @@
...
@@ -844,7 +832,7 @@
{
{
"valid"
:
function
(
props
){
"valid"
:
function
(
props
){
var
file
=
props
.
file
;
var
file
=
props
.
file
;
return
/
\.
gdo$/ig
.
test
(
file
.
name
)
return
/
\.
gdo$
|
\.
pho$
/ig
.
test
(
file
.
name
)
},
},
"type"
:
"Gerber274x"
,
"type"
:
"Gerber274x"
,
"format"
:
"Gerber274x_4"
"format"
:
"Gerber274x_4"
...
@@ -852,32 +840,110 @@
...
@@ -852,32 +840,110 @@
{
{
"valid"
:
function
(
props
){
"valid"
:
function
(
props
){
var
file
=
props
.
file
;
var
file
=
props
.
file
;
return
/.+
\.
ncd$/ig
.
test
(
file
.
name
)
||
/.+
\.
d
\d
+$/ig
.
test
(
file
.
name
)
return
/.+
\.
ncd$
|
\.
drl
/ig
.
test
(
file
.
name
)
||
/.+
\.
d
\d
+$/ig
.
test
(
file
.
name
)
},
},
"type"
:
"Excellon2"
,
"type"
:
"Excellon2"
,
"format"
:
"Excellon2_5"
"format"
:
"Excellon2_5"
}
}
],
],
"tl_name"
:
[
"tl_name"
:
[
{
"orig_name"
:
[
"solderpastetop"
,
"past_top"
],
"tl_name"
:
"past_top"
},
{
"orig_name"
:
[
"
OSP-Top
\\
.pho"
,
"
solderpastetop"
,
"past_top"
],
"tl_name"
:
"past_top"
},
{
"orig_name"
:
[
"solderpastebottom"
,
"past_botm"
],
"tl_name"
:
"past_botm"
},
{
"orig_name"
:
[
"
OSP-Bottom
\\
.pho"
,
"
solderpastebottom"
,
"past_botm"
],
"tl_name"
:
"past_botm"
},
{
"orig_name"
:
[
"pleg
\\
.art"
,
"^ss_top"
,
"silk_top"
],
"tl_name"
:
"silk_top"
},
{
"orig_name"
:
[
"pleg
\\
.art"
,
"^ss_top"
,
"silk_top"
],
"tl_name"
:
"silk_top"
},
{
"orig_name"
:
[
"sleg
\\
.art"
,
"^ss_bot"
,
"silk_bot"
],
"tl_name"
:
"silk_bot"
},
{
"orig_name"
:
[
"sleg
\\
.art"
,
"^ss_bot"
,
"silk_bot"
],
"tl_name"
:
"silk_bot"
},
{
"orig_name"
:
[
"soldermasktop"
,
"sm_top"
],
"tl_name"
:
"sm_top"
},
{
"orig_name"
:
[
"Top solder mask
\\
.pho"
,
"soldermasktop"
,
"sm_top"
],
"tl_name"
:
"sm_top"
},
{
"orig_name"
:
[
"soldermaskbottom"
,
"sm_bot"
],
"tl_name"
:
"sm_botm"
},
{
"orig_name"
:
[
"Bottom solder mask
\\
.pho"
,
"soldermaskbottom"
,
"sm_bot"
],
"tl_name"
:
"sm_botm"
},
{
"orig_name"
:
[
"^top$"
,
"layertop"
],
"tl_name"
:
"top"
},
{
"orig_name"
:
[
"Top
\\
.pho"
,
"^top$"
,
"layertop"
],
"tl_name"
:
"top"
},
{
"orig_name"
:
[
"layer(
\\
d+)
\\
.gdo"
,
"layer_(
\\
d+)"
],
"tl_name"
:
"l_($1)"
},
{
"orig_name"
:
[
"^lay_(
\\
d+)"
,
"layer(
\\
d+)
\\
.gdo"
,
"layer_(
\\
d+)"
],
"tl_name"
:
"l_($1)"
},
{
"orig_name"
:
[
"^bottom$"
,
"layerbottom"
],
"tl_name"
:
"bottom"
},
{
"orig_name"
:
[
"^Bottom
\\
.pho$"
,
"^bottom$"
,
"layerbottom"
],
"tl_name"
:
"bottom"
},
{
"orig_name"
:
[
"-(
\\
d+)-(
\\
d+)
\\
.drl$"
,
"(
\\
d+)-(
\\
d+)-laser
\\
.drl$"
,
"d(
\\
d+)-(
\\
d+)"
],
"tl_name"
:
"d_($1)-($2)"
},
{
"orig_name"
:
[
"(
\\
d)-(
\\
d)
\\
.drl$"
,
"drill(
\\
d+)-(
\\
d+)"
,
"d(
\\
d+)-(
\\
d+)"
],
"tl_name"
:
"d_($1)-($2)"
},
{
"orig_name"
:
[
"^drill$"
],
"tl_name"
:
"drill"
},
{
"orig_name"
:
[
"
\\
.rou$"
,
"^rout$"
],
"tl_name"
:
"rout"
},
{
"orig_name"
:
[
"
\\
.rou$"
,
"^rout$"
],
"tl_name"
:
"rout"
},
{
"orig_name"
:
"fab.art"
,
"tl_name"
:
"fab.art"
},
{
"orig_name"
:
"fab.art"
,
"tl_name"
:
"fab.art"
},
{
"orig_name"
:
[
"
pcb-set
"
,
"^array$"
],
"tl_name"
:
"array"
},
{
"orig_name"
:
[
"
PCB-SET
\\
.pho"
,
"^pcb-set$
"
,
"^array$"
],
"tl_name"
:
"array"
},
{
"orig_name"
:
[
"^outline"
],
"tl_name"
:
"outline"
},
{
"orig_name"
:
[
"^outline"
],
"tl_name"
:
"outline"
},
{
"orig_name"
:
[
"au_mask_bottom
\\
.gdo"
,
"enig_top"
],
"tl_name"
:
"enig_top"
},
{
"orig_name"
:
[
"au_mask
-bottom
\\
.gdo"
,
"au_mask
_bottom
\\
.gdo"
,
"enig_top"
],
"tl_name"
:
"enig_top"
},
{
"orig_name"
:
[
"au_mask_top
\\
.gdo"
,
"enig_bot"
],
"tl_name"
:
"enig_bot"
},
{
"orig_name"
:
[
"au_mask
-top
\\
.gdo"
,
"au_mask
_top
\\
.gdo"
,
"enig_bot"
],
"tl_name"
:
"enig_bot"
},
{
"orig_name"
:
[
"cavitytop"
,
"cavity_top"
],
"tl_name"
:
"cavity_top"
},
{
"orig_name"
:
[
"cavitytop"
,
"cavity_top"
],
"tl_name"
:
"cavity_top"
},
{
"orig_name"
:
[
"cavitybottom"
,
"cavity_bot"
],
"tl_name"
:
"cavity_bot"
},
{
"orig_name"
:
[
"cavitybottom"
,
"cavity_bot"
],
"tl_name"
:
"cavity_bot"
},
]
],
"mergerule"
:
{
drill
:
[
{
orig_rule
:[
"contournonplated"
],
drill_type
:
"non_plated"
,
shape
:
"slot"
},
{
orig_rule
:[
"contourplated"
],
drill_type
:
"plated"
,
shape
:
"slot"
},
{
orig_rule
:[
"thruholenonplated"
],
drill_type
:
"non_plated"
,
shape
:
"hole"
},
{
orig_rule
:[
"thruholeplated"
],
drill_type
:
"plated"
,
shape
:
"hole"
},
],
profile
:[
"enig_bot"
],
laser
:
{
tl_name
:
"drill($1)-($2)"
,
regs
:
[
"(
\\
d+)-(
\\
d+)plated
\\
.ncd$"
]
}
}
},
"1352"
:{
"step"
:
"cad"
,
"rules"
:
[
{
"valid"
:
function
(
props
){
var
file
=
props
.
file
;
return
/.+
\.
tgz$/ig
.
test
(
file
.
name
)
},
"type"
:
"ODB"
,
"format"
:
"ODB"
},
{
"valid"
:
function
(
props
){
var
file
=
props
.
file
;
return
/.+
\.
ipc$/ig
.
test
(
file
.
name
)
},
"type"
:
"IPC356"
,
"format"
:
"IPC356_1"
},
{
"valid"
:
function
(
props
){
var
file
=
props
.
file
;
return
/.+
\.
art$/ig
.
test
(
file
.
name
)
},
"type"
:
"Gerber274x"
,
"format"
:
"Gerber274x_3"
},
{
"valid"
:
function
(
props
){
var
file
=
props
.
file
;
return
/.+
\.
drl$/ig
.
test
(
file
.
name
)
},
"type"
:
"Excellon2"
,
"format"
:
"Excellon2_4"
}
],
"tl_name"
:
[
{
"orig_name"
:
[
"pasttop.art"
,
"past_top"
],
"tl_name"
:
"past_top"
},
{
"orig_name"
:
[
"pastbotm.art"
,
"past_botm"
],
"tl_name"
:
"past_botm"
},
{
"orig_name"
:
[
"^sst
\\
.art$"
,
"
\\
.ssa$"
,
"SilkScrnTop
\\
.ger"
,
"silk_top"
],
"tl_name"
:
"silk_top"
},
{
"orig_name"
:
[
"^ssb
\\
.art$"
,
"
\\
.ssb$"
,
"SilkScrnBot
\\
.ger"
,
"silk_bot"
],
"tl_name"
:
"silk_bot"
},
{
"orig_name"
:
[
"soldtop.art"
,
"sm_top"
],
"tl_name"
:
"sm_top"
},
{
"orig_name"
:
[
"soldbotm
\\
.art"
,
"sm_bot"
],
"tl_name"
:
"sm_botm"
},
{
"orig_name"
:
[
"^top$"
,
"^top.art$"
],
"tl_name"
:
"top"
},
{
"orig_name"
:
[
"^art(
\\
d+)
\\
.art$"
,
"^l_(
\\
d+)"
],
"tl_name"
:
"l_($1)"
},
{
"orig_name"
:
[
"^bot
\\
.art$"
,
"^bottom$"
,
"^bottom.art$"
],
"tl_name"
:
"bottom"
},
{
"orig_name"
:
[
"
\\
.d(
\\
d+)$"
],
"tl_name"
:
"d_($1)-($1+1)"
},
{
"orig_name"
:
[
"^drill(
\\
d+)-(
\\
d+)$"
,
"^d_(
\\
d+)-(
\\
d+)$"
],
"tl_name"
:
"d_($1)-($2)"
},
{
"orig_name"
:
[
"^drill$"
],
"tl_name"
:
"drill"
},
{
"orig_name"
:
[
"
\\
.rou$"
,
"^rout$"
],
"tl_name"
:
"rout"
},
{
"orig_name"
:
"fab.art"
,
"tl_name"
:
"fab.art"
},
{
"orig_name"
:
[
"multipack.art"
,
"^array$"
],
"tl_name"
:
"array"
},
{
"orig_name"
:
[
"
\\
.bol$"
,
"PnlContourNonPlated
\\
.ger"
,
"^outline"
],
"tl_name"
:
"outline"
},
{
"orig_name"
:
[
"top-enig"
,
"enig_top"
],
"tl_name"
:
"enig_top"
},
{
"orig_name"
:
[
"bot-enig"
,
"enig_bot"
],
"tl_name"
:
"enig_bot"
},
],
"mergerule"
:
{
drill
:[
"(
\\
d+)-(
\\
d+)
\\
.drl$"
],
laser
:
{
tl_name
:
"drill($1)-($2)"
,
regs
:
[
"(
\\
d+)-(
\\
d+)
\\
.drl$"
]
}
}
}
}
},
},
"data_format"
:
[
"data_format"
:
[
...
...
test/scott_test.js
View file @
21ea8dd5
...
@@ -46,6 +46,7 @@ var GEN = $.gen;
...
@@ -46,6 +46,7 @@ var GEN = $.gen;
var
Job
=
$
.
job_name
;
var
Job
=
$
.
job_name
;
var
db
=
$
.
db
;
var
db
=
$
.
db
;
var
JobId
=
$
.
job_id
;
var
JobId
=
$
.
job_id
;
var
process
=
require
(
'process'
);
var
Status
=
'ok'
;
var
Status
=
'ok'
;
var
resultData
=
[];
var
resultData
=
[];
var
PAR
=
{};
var
PAR
=
{};
...
@@ -54,6 +55,19 @@ if ($.hasOwnProperty('script_parameter')){
...
@@ -54,6 +55,19 @@ if ($.hasOwnProperty('script_parameter')){
}
}
try
{
try
{
var
job
=
Job
.
toLowerCase
()
console
.
log
(
"job---------:"
+
job
);
console
.
log
(
"GENESIS_DIR---------:"
+
GEN
.
GENESIS_DIR
);
console
.
log
(
"GEN_TYPE---------:"
+
GEN
.
GEN_TYPE
);
var
jobpath
=
GEN
.
getJobPath
({
job
:
job
})
console
.
log
(
"_____jobpath______:"
+
_
.
toString
(
jobpath
));
console
.
log
(
"______path:"
+
GEN
.
dbutil
(
'path jobs '
+
jobname
));
// mkPath( jobpath,["user","opcam","steps"])
QDfm
.
updateRow
({
QDfm
.
updateRow
({
table
:
"pdm_aimdfm_task"
,
table
:
"pdm_aimdfm_task"
,
data
:
{
data
:
{
...
@@ -81,3 +95,17 @@ catch (e) {
...
@@ -81,3 +95,17 @@ catch (e) {
resultData
.
push
({
type
:
"error"
,
title
:
"脚本执行出错!"
,
detail
:
[{
desc
:
_
.
toString
(
e
)}]});
resultData
.
push
({
type
:
"error"
,
title
:
"脚本执行出错!"
,
detail
:
[{
desc
:
_
.
toString
(
e
)}]});
return
{
status
:
Status
,
result_data
:
resultData
};
return
{
status
:
Status
,
result_data
:
resultData
};
}
}
function
mkPath
(
path
,
list
)
{
console
.
log
(
"--path:"
+
path
);
if
(
list
.
length
){
var
newPath
=
path
+
'/'
+
list
.
shift
()
if
(
!
fs
.
dirExists
(
newPath
)){
fs
.
mkdir
(
newPath
)
console
.
log
(
"--mkdir:"
+
newPath
);
}
return
mkPath
(
newPath
,
list
)
}
else
{
return
path
}
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment