JTG_ORG_create_outline_aim.js 4.96 KB
Newer Older
Scott Sun's avatar
Scott Sun committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
/*
NAME: 
DESCRIPTION: ;
PARAMETER:
    [
		{
			name : 'ref_outline',
			title : '参考层',
			type : 'LineEdit',
			property : {tool_tip : '参考层,默认是gm1'},
		},
		{
			name : 'outline',
			title : '外形层',
			type : 'LineEdit',
			property : {tool_tip : '外形层,默认是gko'},
		},
		{
			name : 'outline_width',
			title : '外形线宽',
			type : 'LineEdit',
			property : {tool_tip : '外形线宽,默认是0.2mm'},
		},
		{
            name : 'auto_save',
			title : '自动保存',
            type : 'RadioBox',
            property : {
				item_list:[
					{name:'yes',text:'YES'},
					{name:'no',text:'NO'},
				],
				tool_tip:'是否自动保存料号开关'
			}
        }
	]
	
 VERSION_HISTORY:
	V1.00 2020-04-20 Scott Sun
	    1.新版本
		
 HELP:
 	<html><body bgcolor="#DDECFE">
		<font size="3" color="#003DB2"><p>功能简介</p></font>
		<p> 创建GKO </p>
		<br>
		<font size="3" color="#003DB2"><p>参数配置</p></font>
		<p> 客户配置 </p>
		<br>
		<font size="3" color="#003DB2"><p>注意事项</p></font>
		<p> 无 </p>
		<br>
	</body></html>	
*/
//////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////
console.log("==============================>create_outline");
// 引入模块 包
var $ = require('topcam.scriptfunc').argv();
var fs = require('fs');
var _ = require('lodash');
var database = require("topsin.database");
database.addConnection($.conf.database_conf, "DFM");
var QDfm = database.query("DFM");
if ($.conf.product_type == "aimdfm") {
	QDfm.updateRow({
		table: "pdm_aimdfm_task",
		data: {
			current_process_title: $.process_title
		},
		where: { id: $.task_id }
	});
}
var GEN = $.gen;
var Job = $.job_name;
var db = $.db
var Status = 'ok';
var resultData = [];
var PAR = {};
if ($.hasOwnProperty('script_parameter')){
	PAR = JSON.parse($.script_parameter);
}

try {
    var par = PAR;
	var default_par = {
		ref_outline: "gm1",
		outline: "gko",
		outline_width: "0.2mm",
		auto_save: "No",
	}
	for(var key in default_par){  // 设置默认属性
		if (!par.hasOwnProperty(key) || par[key] == ""){
			par[key] = default_par[key]
		}
	}
	var outline_symbol;
	if(par.outline == "" || par.outline == undefined || par.outline == null || par.outline == "null"){
		outline_symbol = "null";
	} else {
		par.outline_width = parseFloat(par.outline_width)
		outline_symbol = "r" + String(par.outline_width * 1000);
	}
	
	var ref_outline = par.ref_outline;
	var outline = par.outline;
	if(_.isEmpty(Job)){throw "参数Job不存在"}
	var job = Job.toLowerCase()
	// 检查料号是否存在
	if(!GEN.isJobExists({job:job})){throw "料号已经:"+job+"不存在"}
	// 检查料号是否被打开
	if(!GEN.isJobOpen({job:job})){ GEN.openJob({job:job}) }
	// 检查料号是否能够check out
	if(GEN.checkInout({job:job,mode:"test"}) != 0){ throw "the job check" }
    GEN.checkInout({job:job,mode:"out"});
	// 判断参考层(ref_outline)是否存在并不为空
Scott Sun's avatar
s  
Scott Sun committed
117 118 119 120 121 122
	var is_outline_exist = GEN.isLayerExists({job:job,layer:outline})
	if(!GEN.isLayerExists({job:job,layer:ref_outline})){
		if(!is_outline_exist){
			throw "外形层不存在"
		}
	}
Scott Sun's avatar
Scott Sun committed
123
	var steplist = GEN.getStepList({job:job})
Scott Sun's avatar
s  
Scott Sun committed
124 125 126 127 128 129 130
	if(!is_outline_exist){
		steplist.forEach(function(step){
			if(!GEN.isLayerEmpty({job:job,step:step,layer:ref_outline})){
				// 创建新的外形层(outline)
				GEN.openStep({job:job,name:step})
				GEN.createLayer({job:job,layer:outline,conext:"board",type:"rout"})
				// 将参考层copy到外形层中
Scott Sun's avatar
Scott Sun committed
131
				GEN.selClearFeature()
Scott Sun's avatar
s  
Scott Sun committed
132 133 134 135
				GEN.workLayer({name:ref_outline,display_number:2,clear_before:'yes'})
				GEN.selAllFeat()
				GEN.selCopyOther({dest:"layer_name", target_layer:outline})
				GEN.closeStep()
Scott Sun's avatar
Scott Sun committed
136
			}
Scott Sun's avatar
s  
Scott Sun committed
137 138 139 140 141 142 143 144 145 146 147
		})
	}
	
	steplist.forEach(function(step){
		// 修改外形层
		GEN.openStep({job:job,name:step})
		GEN.affectedLayer({affected:'no',mode:'all'})
		GEN.selClearFeature()
		GEN.workLayer({name:outline,display_number:2,clear_before:'yes'})
		if(outline_symbol != "null"){
			GEN.selChangeSym({symbol: outline_symbol})
Scott Sun's avatar
Scott Sun committed
148
		}
Scott Sun's avatar
s  
Scott Sun committed
149 150 151
		GEN.selCreateProfile()
		GEN.clearLayers()
		GEN.closeStep()
Scott Sun's avatar
Scott Sun committed
152 153
	})

Scott Sun's avatar
s  
Scott Sun committed
154

Scott Sun's avatar
Scott Sun committed
155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191
	// 保存 
	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"})
	}


    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
		};
	}
} catch (e) {
    Status = 'error';
    resultData.push({type: "error", title: "脚本执行出错!", detail: [{desc: _.toString(e)}]});
    return {status: Status, result_data: resultData};
}