/* NAME: DESCRIPTION: 描述; PARAMETER: [ { name : 'step', title : 'step', type : 'LineEdit', property : {tool_tip : '目标step,默认是orig'} }, { name : 'auto_save', title : '自动保存', type : 'RadioBox', property : { item_list:[ {name:'yes',text:'YES'}, {name:'no',text:'NO'}, ], tool_tip:'是否自动保存料号开关' } } ] VERSION_HISTORY: V1.00 2021-03-08 Scott Sun 1.新版本 HELP:

功能简介

标题

参数配置

step信息


注意事项


*/ // 引入模块 包 外部参数 var $ = require('topcam.scriptfunc').argv(); var fs = require('fs'); var _ = require('lodash'); var mode = $.ikm ? "topcam" : "aimdfm"; var IKM = $.ikm ? $.ikm : require('topcam.ikm6')($); var GEN = $.gen; var Job = $.job || $.job_name; var JobId = $.job_id; var db = $.db || IKM.db; var gui_piug = require('topsin.gengui'); var GUI = gui_piug.newGui(gui_piug.__dirname); var PAR = {}; if ($.par) { PAR = $.par } else if ($.hasOwnProperty('script_parameter')) { PAR = JSON.parse($.script_parameter); } if (mode === "aimdfm") { var database = require("topsin.database"); database.addConnection($.conf.database_conf, "DFM"); var QDfm = database.query("DFM"); $.QDfm = QDfm; if ($.conf.product_type == "aimdfm") { QDfm.updateRow({ table: "pdm_aimdfm_task", data: { current_process_title: $.process_title }, where: { id: $.task_id } }); } } var Status = 'ok'; var resultData = []; var par = PAR; // 接收参数 var default_par = { // 设置默认参数 step: "orig", auto_save: "No", units: "mm" } for (var key in default_par) { if (!par.hasOwnProperty(key) || par[key] == "") { par[key] = default_par[key] } } // 定义变量 var job = Job; try { // 常规验证 准备工作 if (!GEN.isJobExists({ job: job })) { throw "料号" + job + "不存在" } if (!GEN.isJobOpen({ job: job })) { GEN.openJob({ job: job }) } if (mode == "aimdfm") { if (GEN.checkInout({job: job,mode: "test"}) != 0) { throw "the job check" } GEN.checkInout({job: job,mode: "out"}); } // 主体 var stepList = GEN.getStepList({job:job}) // 工作step列表 stepList = stepList.filter(function(step){ var reg = new RegExp(par.step,"ig"); return reg.test(step); }) var verification = function(size) { return size <= 500 } var drills = getLayer({layer_type:"drill",name:"drl"}) stepList.forEach(function(step) { GEN.openStep({ job: job, name: step }); GEN.clearLayers(); //清除层显示 GEN.affectedLayer({ mode: 'all', affected: 'no' }); //设置影响层全部不影响 GEN.COM("sel_options,clear_mode=clear_after,display_mode=all_layers,area_inout=inside,area_select=select,select_mode=standard,area_touching_mode=exclude"); GEN.units({ type: par.units }); //单位初始化 GEN.zoomHome(); //窗口显示回到原始位置 GEN.selClearFeature() drills.forEach(function(drl) { GEN.workLayer({name:drl,display_number:2,clear_before:'yes'}) var sys = GEN.getLayerSymsHist({job:Job,step:'net',layer:drl,units:'mm'}) var includesys = []; // r700":{"symbol":"r700","line":"0","pad":"400","arc":"0","size":"700"}, Object.keys(sys).forEach(function(key){ var symbolinfo = sys[key]; if(!symbolinfo.size && symbolinfo.width){ symbolinfo.size = symbolinfo.width > symbolinfo.height ? symbolinfo.width : symbolinfo.height; } if(symbolinfo.size){ symbolinfo.size = symbolinfo.size - 0; if(verification(symbolinfo.size)){ includesys.push(symbolinfo.symbol) } } }) if(includesys.length){ GEN.selectByFilter({include_syms:includesys.join(";")}) if(GEN.getSelectCount()>0){ GEN.COM("cur_atr_set,attribute=.drill,option=via") GEN.COM("sel_change_atr,mode=add") } } }) }) // 保存料号 if (/yes/ig.test(par.auto_save)) { GEN.checkInout({ job: job, mode: "out" }); GEN.saveJob({ job: job }); } GEN.checkInout({ job: job, mode: "in" }); // 结尾返回 固定写法 var Return = "Done" if (mode === "aimdfm") { $.QDfm.updateRow({ table: "pdm_aimdfm_task", data: { progress: 100 }, where: { id: $.task_id } }); var tmperr = { type: "info", title: "操作完成, 请注意检查!" } if (GEN.hasError()) { Status = 'error'; tmperr = { type: "error", title: "GEN错误!", detail: [{ desc: GEN.STATUS.join("\n") }] } } resultData.push(tmperr); Return = { status: Status, result_data: resultData }; } return Return } catch (e) { if(GEN.STATUS.length > 0) { IKM.msg(GEN.STATUS.join("\n")); } IKM.msg(e); Status = 'error'; resultData.push({ type: "error", title: "脚本执行出错!", detail: [{ desc: _.toString(e) }] }); return (mode === "aimdfm") ? { status: Status, result_data: resultData } : "Error"; } function getLayer(props){ // 获取层 if (!props) { return } if (!props.context) { props.context = "board" } var matrix = GEN.getMatrix({job:job}) return Object.keys(matrix).reduce(function(a,b){ var info = matrix[b]; var ret = true; for (var key in props) { if (!Array.isArray(props[key])) { props[key] = [props[key]] } if (info[key] && props[key].indexOf(info[key]) < 0) { ret = false } } if (ret) { a.push(props.res == "info" ? info : b) } return a },[]) }