/* NAME: DESCRIPTION: 圆弧调整; PARAMETER: [ { name : 'step', title : 'step', type : 'LineEdit', property : {tool_tip : '目标step,默认是orig'} }, { name : 'workLayers', title : 'workLayers', type : 'LineEdit', property : {tool_tip : '工作层'} }, { name : 'auto_save', title : '自动保存', type : 'RadioBox', property : { item_list:[ {name:'yes',text:'YES'}, {name:'no',text:'NO'}, ], tool_tip:'是否自动保存料号开关' } } ] VERSION_HISTORY: V1.00 2021-04-08 template 1.新版本 HELP: <html><body bgcolor="#DDECFE"> <font size="3" color="#003DB2"><p>功能简介</p></font> <p> template </ 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> */ // 引入模块 包 外部参数 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 plugin = require('topsin.gengui'); var GUI = plugin.newGui(plugin.__dirname); var PAR = {}; if ($.par) { PAR = $.par; } else if ($.hasOwnProperty('script_parameter')) { PAR = JSON.parse($.script_parameter); } if (mode === "aimdfm") { IKM.crud("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: "cad", auto_save: "No", workLayers:"out", units: "mm" }; for (var key in default_par) { if (!par.hasOwnProperty(key) || par[key] == "") { par[key] = default_par[key]; } } // 定义变量 var job = Job.toLowerCase(); require("topsin.genmath"); var genMath = new GenMath(); 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 }); stepList = stepList.filter(function (v) { var tmpreg = new RegExp(par.step, "ig"); return tmpreg.test(v); }); if (stepList.length == 0) { throw "未找到" + par.step } var workLayers = par.workLayers.split(";") workLayers = workLayers.filter(function(l){return GEN.isLayerExists({job:job, layer:l})}) if(workLayers.length == 0) { throw "没有找到工作层" } stepList.forEach(function (step) { GEN.openStep({ job: job, name: step }); GEN.clearLayers(); //清除层显示 GEN.affectedLayer({ mode: 'all', affected: 'no' }); //设置影响层全部不影响 GEN.COM("sel_options, =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(); GEN.affectedLayer({affected:"yes", layer:workLayers}); // 现有做法:使用InCAM Pro 中的Simplify Lines/Arcs功能将连续的线段转化为弧或线 // 通过公差调整,但不能完全去除线段或圆弧(只是线段减少) GEN.affectedLayer({ mode: 'all', affected: 'no' }); //设置影响层全部不影响 GEN.clearLayers(); //清除层显示 }); // 保存料号 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") { IKM.crud("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) { var showGUI = true; if (GEN.STATUS.length > 0) { if (GEN.STATUS.indexOf("Pause Exit:0") >= 0) { showGUI = false; } e = _.toString(e) + "\n" + GEN.STATUS.join("\n"); } if (showGUI) { IKM.msg(e); } Status = 'error'; resultData.push({ type: "error", title: "脚本执行出错!", detail: [{ desc: _.toString(e) }] }); return mode === "aimdfm" ? { status: Status, result_data: resultData } : "Error"; } /** * 获取层别 * @param {Object} 过滤选项 * @returns {Array} */ function getLayer(props) { if (!props) { props = {}; } 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 (info[_key]) { if (/object string|object number/ig.test({}.toString.call(props[_key]))) { if (props[_key] != info[_key]) { ret = false; } } if (/object RegExp/ig.test({}.toString.call(props[_key]))) { if (!props[_key].test(info[_key])) { ret = false; } } if (/object function/ig.test({}.toString.call(props[_key]))) { if (!props[_key](info[_key])) { ret = false; } } } } if (ret) { a.push(props.res == "info" ? info : b); } return a; }, []); }