庄志凡
(特灵科技亚太研发中心,江苏 215400)
随着数字和自动化技术的发展,当代企业的产品具有迭代周期短、标准化程度高等特点。因此,在研发阶段,工程人员通常会制定相同的设计规则和流程来提升产品的开发效率以及统一数据的管理。在这过程中会产生许多带有重复性、批量式特点的操作,例如利用同一种方式创建、修改、替换产品模型及图纸,针对同一系列产品订制同一套组装方案以便于工厂部署产线等等。而这些工作又因为操作难度较低、需要修改或替换的数据差异不大,让计算机替代人去执行会更优。在三维机械设计软件Creo Parametric 4.0当中,有一个宏模块Mapkey,它能够帮助并提升完成这类型工作的效率和质量。
Mapkey中文名称为映射键,主要功能是使用键盘调用宏来自动反映并重现一些Creo的操作流程。用户一般可以使用手动录制的方法去创建一个Mapkey,但这样通常会让系统把许多非关键操作环节也自动记录进来,最终导致程序运行效率低下。当更新一个Mapkey时,相当于再重新录制一遍,因此维护起来也比较困难。另外,用户所录制的Mapkey有时需要在某种特定情况下才能够实现,不具有普遍性、规律性,不易推广。对于一些过多重复的操作,这种录制方法反而会增加用户的工作量。虽然目前已有PTC官方手册作为一手的培训资料,但是该手册的关注重点在于基本的使用方法,并未涉及到Mapkey在实际项目中的进阶运用,学习起来有一定的局限性。
本文目的通过研究Mapkey技术在Creo工程设计不同板块中的实际应用、程序的编写方法和实际案例来帮助企业或个人用户能够深入的了解并运用,从而解决上述人工录制时产生的一些问题,同时提升对它的使用效率。
Mapkey 的常用功能之一是快捷键。用户能够通过一些个性化的键位设置对Creo单个或者多个连续的命令做一个快捷键驱动的宏。它的主要特点就是方便输入和记忆,并减少了人为搜索及调用指令的时间。需要注意的是,Mapkey快捷键运行时具有一定的优先原则。例如有两个Mapkey,快捷键依次为a和ab,通常无法直接通过键盘运行程序ab,程序a在键盘输入上具有优先执行的能力,因此一般不建议设置单个字母或者字符的快捷键。
在使用Creo的时候,往往会需要做一些添加、删除或者替换某些对象的工程变更。当该对象只需进行单次操作时,通过人工就能快速处理,但当它需要按照特定规则重复操作的时候,人工操作的效率就会很低。利用Mapkey技术能够完成将一个周期较长且不限次数自动循环的操作,直到最后一个指令提示操作结束为止。因此,Mapkey能够提升在这类型批处理操作上带来的效率问题。
在Creo内进行组件的装配是产品研发中的一个重要环节,对于一些大型的装配而言,它占内存较大会导致模型的卡顿,因此人为进行切换和选择约束参照会变得十分缓慢和笨拙。另外,对于相同或者类似的装配组件和被装配组件,它们在Creo内部使用的约束及参照对象ID大多相同。在这种前提下,将这些固定选择类型的操作方式赋予Mapkey,同时让它自动读取并运行就能快速精准的进行装配。
图1 利用Mapkey进行快速装配流程
有些时候,全自动的设计往往不能够满足所有的需求,工程人员需要在其中某几个环节人工介入来做一些技术性的判断,从而达到人和机器两者相互合作的工作模式。Mapkey也能够提供这样的人机交互式的设计,通常在Mapkey进行自动处理期间,进入手动编辑模式,等待用户进行一些特殊的操作,再执行下一步。如图2所示,用户在执行一些自动操作前需要检查部分参数是否准确,再决定是否继续,继续则选择“Resume”,取消选择“Cancel”。
图2 暂停宏窗口示例
Mapkey由于自身缺乏逻辑运算使得它无法进行一些灵活的参数化设计,但使用一些第三方的工具进行编程就能够实现这一功能,用户可以对具体的参数进行定义并输入到第三方程序,同时将这些参数进行编程运算并转换成Mapkey语句,最终把得到的语句传输到Creo软件内部运行就能实现一次参数化的设计过程。
图3 Mapkey参数化设计流程
表1 Mapkey声明解析
Mapkey程序主要由Mapkey初始声明和主语句组成,初始声明的功能是为了定义该Mapkey以下基本信息:快捷键,短描述以及长描述,而长短描述一般是可选项,用户可以忽略。
表2 主语句命令
表3 主语句结构类型
如表2所示,Mapkey主语句的标准结构就是由Mapkey(continued)和执行命令组成,其中“;”和“”在主语句的作用与初始声明相同。
如表3所示,主语句结构通常有三类,第一类为段落式结构,由多行语句组成,每一行代表一个命令的执行,由Mapkey(continued) 和“;”“”之间做换行连接,直到执行完第N个命令之后末端删除续行符“”表示程序终止。这类型的结构层次分明,便于阅读,适合代码偏多的程序。第二类为组合式结构,只有一个Mapkey(continued),每个命令之间由“;”相隔且不换行。它的特点就是结构比较紧缩,相比段落式阅读起来比较困难,适合代码偏少的程序。第三类为单命令分解式结构,它与段落式结构相似,将同一个命令依次拆分成多个部分并且用Mapkey(continued)和“”换行,该命令除末尾行,每一行结尾是不需要分号的,表明还未执行完毕。该结构只适用于其中单一命令字符过长的程序。在实际编写的过程中,用户可根据需求来混合使用这三类的结构。
当Mapkey主程序的代码很多且部分代码语句重复出现的时候,编写起来耗时较长,维护时其难度也会随之增大,因此现有一种特殊的可嵌套结构,能够在一套程序的某个位置执行另一个Mapkey的程序,提升维护和阅读的效率,嵌套命令如表4所示。
如表5所示,通常有三类嵌套结构:第一类为标准嵌套结构,可以在快捷键ab中执行快捷键aa的命令1。第二类为同级嵌套结构,在快捷键ab中先后运行快捷键aa和ac的命令。第三种为多级嵌套结构,在快捷键ab中运行快捷键aa,而同时在快捷键aa的程序中调用快捷键ac的程序,这类结构能实现最多五级嵌套。
表4 嵌套命令
表5 嵌套结构类型
如表6所示,Mapkey有四种标准语句,主要由命令类型的声明和命令语句组成。标准命令能够在Creo内进行一些常规的操作;暂停命令能够实现人机交互,用户能够用它让程序在某个阶段暂停等待操作响应;系统命令通常可以做一些Creo平台之外的一些程序的操作,例如打开某个应用程序文件;菜单管理器命令一般处理在菜单管理器中的一些操作。
表6 Mapkey四种语句
由于标准命令在程序中的占比最高,下文着重分析标准命令语句字符的编写。通常它是由三类特殊的字符组成,行为字符、窗口字符以及参数字符,如图4所示:
图4 标准命令字符示例
Mapkey可以完成的标准语句事件类型很多,主要体现在对Creo每个功能块的执行特点,用户需要定义对应的行为字符来模拟这些特点的动作。如下表所示,通常Command 和Activate对应的事件就是按钮或复选框控件的操作;Update和input 这两类的事件是通过完成输入框填写来完成的,其中update更加的直接和高效;Select就是用户进行列表框、条目框、选项框的选择事件,它可以模拟在Creo内几乎所有的选择类型的操作。Mapkey还有其他的的行为字符,例如Key、Open、Close、Trail等等,由于这些字符的使用频率非常低,故不作具体的说明。
表7 行为字符列表
确定行为字符的事件类型之后,用户需要去判断该事件发生的窗口名称,在Mapkey内部会生成一个该窗口的字符。除了Command事件以外,一般都需要在行为字符之后输入相应的窗口字符,又因为从属关系需要把它分为一级和二级窗口,由于二级窗口被包含在一级窗口里面,因此它的字符位置通常在一级窗口之后。Creo内部的二级窗口字符数较多,下表展示的是部分常见的一级窗口列表:
表8 一级窗口字符列表
用户确定执行的事件以及窗口之后,就需要找到执行命令的字符,它就是参数字符。参数字符位置通常在窗口字符之后,它有许多种类型,主要由模拟事件类别所决定。第一类字符通常比较固定,该参数字符通常会和activate或者Command的事件结合使用,如果是复选框的参数,需要在字符后面添加复选框的值,真为1,假为0。第二类字符是在有限范围内的可变参数,该参数字符一般和select事件共用,根据选择的参数选择条件数量需在字符前面加上对应的数字,通常参数选择条件数量为1或者2。上述两者字符格式通常是固定的,否则会导致执行失败,而最后一类字符是最自由的,用户可以随意去定义这类型的参数,一般会应用在input和update事件。
表9 参数字符类型
下文主要通过一个具体的自动化案例:创建一个基于当前模型的工程图来说明利用Mapkey进行程序的设计的主要思路和具体操作方式。
图5 notepad++界面和默认配置
表10 创建图纸主要Mapkey字符
(1)分析得知工程图创建界面中无屏幕捕捉界面会强制终止Mapkey运行,并且图纸创建流程具有很强的通用性,因此选择使用Mapkey技术来设计自动化方案。本实例主要利用notepad++作为编程环境来写入Mapkey代码,注意在程序前面更改两个配置Mapkey_execution的值no_feedback以及visible_Mapkeys值no,前者能够防止Mapkey由于程序没找到指令而终止,后者能够在运行Mapkey的时候禁止屏幕刷新。
(2)如下图所示的手动操作顺序中,可以生成一些通用的操作:主要事件为选择、点击,其字符为Command、select、Activate。依次的窗口为“New”和“New drawing”,其字符为`new`、`dwg_create`,综上这些字符在创建图纸的时候是必不可少的。
图6 操作事件通用顺序
图7 创建工程图流程及其Mapkey分解步骤
(3)通过手动操作还能够找出需要用户介入的操作:填写图纸名称以及选择模板。因此,在设计这套流程的时候,需要在图6中序号1和2,3和4中间进入用户输入模式,即程序暂停。由此可得图7中的关键路径自动化流程。如果不定义二者的手动状态,程序会以默认的配置全自动执行,往往与实际情况不符。
(4)Creo内部除了标准实体还有许多其他类型的模型,主要为族表和装配。因此要兼顾这两类模型运行的有效性,需要分别对他们进行试错分析。根据实际操作结果得知,在程序执行到图纸界面,可能会出现两种提醒窗口,如图8所示。因此需要再额外添加两串命令关闭该界面:
两句指令分别点击界面“Select Instance”及“Open Representation”中的命令“Open”来关闭窗口,无论运行哪一种模型,系统能够选择性识别并关闭。
图8 族表模型(左)和装配模型(右)图纸创建提醒窗口
(5)由于Mapkey在创建图纸时会使Creo长期处于运行状态,用户无法预知程序执行完毕所需的时间,因此可以在执行程序的尾端添加系统dos弹窗命令作为程序终止的一个信号。
图9 dos弹窗
(6)最后对Mapkey语句进行整体的编码和调试。把该文件保存成.pro格式,并导入进Creo,用快捷键运行即可。一旦调试成功,再将流程图中填写图纸名称和选择图纸模板等用户操作前后的代码转换成可嵌套的子程序,可以得到两套主程序结构方案。图10是转换前后的程序示意图,通过比较得出标准程序的字符数量和行数 (709,15) 相对嵌套程序 (945,24) 较少,因此推荐使用标准程序作为该自动化程序的主要结构。
图10 标准程序(a)和嵌套程序(b)
综上所述,结合实际自动化需求去做分析,将所需求的通用性和特殊性做一个分类,来达到程序的标准统一,能够方便大多数的用户使用。再利用关键路径设计流程,用字符去更新维护Mapkey,提升模块使用和开发的效率。不用情况下的试错分析能够保证Mapkey执行的有效性和稳定性,满足日常的工作所需。这类方法的技术应用适合大多数Mapkey程序,不过需要注意的是,由于Creo的界面和功能从1.0版本至今变化较大,因此在使用不同版本Mapkey时要额外关注所书写指令能否通过或者已被迭代。最后,希望读者能够从本文中获得一些启发和感悟。