test.js 4.46 KB
"use strict";
/*
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 2020-09-01 Scott Sun
        1.新版本
        
 HELP:
    <html><body bgcolor="#DDECFE">
        <font size="3" color="#003DB2"><p>功能简介</p></font>
        <p> 标题 </p>
        <br>
        <font size="3" color="#003DB2"><p>参数配置</p></font>
        <p> step信息 </p>
        <br>
        <font size="3" color="#003DB2"><p>注意事项</p></font>
        <p> 无 </p>
        <br>
    </body></html>
*/
// 引入模块 包
var $ = require('topcam.scriptfunc').argv();
var fs = require('fs');
var _ = require('lodash');
var mode = $.ikm ? "topcam" : "aimdfm";
var IKM = $.ikm;
if (IKM == undefined) {
    IKM = require('topcam.ikm6')($);
}
var GEN = $.gen;
var GUI = $.gui || {};
var Job = $.job || $.job_name;
var JobId = $.job_id;
var db = $.db || IKM.db;
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 (_.isEmpty(job)) {
        throw "参数job不存在";
    }
    else {
        job = job.toLowerCase();
    }
    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";
        }
        else {
            GEN.checkInout({ job: job, mode: "out" });
        }
    }
    var stepList = GEN.getStepList({ job: job });
    stepList = stepList.filter(function (step) {
        var reg = new RegExp(par.step, "ig");
        return reg.test(step);
    });
    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.closeStep();
    });
    // 保存 
    if (/yes/ig.test(par.auto_save)) {
        GEN.checkInout({ job: job, mode: "out" });
        GEN.saveJob({ job: job });
        GEN.checkInout({ job: job, mode: "in" });
        GEN.closeJob({ job: job });
    }
    else {
        GEN.checkInout({ job: job, mode: "in" });
    }
    if (mode === "aimdfm") {
        $.QDfm.updateRow({ table: "pdm_aimdfm_task", data: { progress: 33.33 }, where: { id: $.task_id } });
        if (GEN.hasError()) {
            Status = 'error';
            resultData.push({ type: "error", title: "GEN错误!", detail: [{ desc: _.join(GEN.STATUS, "\n") }] });
            return { status: Status, result_data: resultData };
        }
        else {
            resultData.push({ type: "info", title: "操作完成, 请注意检查!" });
            return { status: Status, result_data: resultData };
        }
    }
    else {
        return "Done";
    }
}
catch (e) {
    IKM.msg(_.join(GEN.STATUS, "\n"));
    IKM.msg(e);
    Status = 'error';
    resultData.push({ type: "error", title: "脚本执行出错!", detail: [{ desc: _.toString(e) }] });
    return (mode === "aimdfm") ? { status: Status, result_data: resultData } : "Error";
}