基于Mapkey和Excel的一种Creo Parametric二次开发技术
庄志凡,陈宾宾
(特灵科技亚太研发中心,江苏太仓215400)
0引言
当工程师利用PTC的CAD产品Creo Parametric进行产品设计研发的过程当中,会经常遇到很多重复性、标准化的任务,因此要做到简化并自动执行这些任务就需要对
Creo进行一些具备企业风格的二次开发。
假设完成一款CAD软件的二次开发,需要开发者同时具备编程语言、算法设计、CAD高级建模等多学科应用能力。而工程师是用户或需求方,通常并不具备其中的软件开发能力,企业往往会让二次开发部门或者外部供应商来帮助进行开发,这其中需要花费很多的沟通和测试的时间。另外,长期的维护成本也是企业管理者考虑的一个重要的因素。
当前笔者所阐述的一种基于Excel和Mapkey的二次开发技术,具有简单、快速等特点,其学习的难度和成本较低,主要因为创建这个开发环境不需要大量的编程知识和构架能力,因而可以让需求者(工程师)自主开发自己需要的二次开发软件,来实现工作效率和质量的提升。1与常见二次开发技术的比较
目前Creo的主流二次开发程序有两种,Pro/toolkit和VB API。
Pro/toolkit是一款PTC官方的开发模块,它有一套独立的工具包并且需要购买MS Visual Studio等付费开发软件,其成本高昂。另外,开发者需要掌握基本的C语言和C++框架才能够使用它进行开发。Pro/toolkit技术已趋近成熟,开发周期通常比较长,国内已有相关的企业和大学对其开发模式进行深入的研究。
VB API则是另一种PTC官方提供的二次开发包,这种开发模式相比较Pro/toolkit而言价格会比较低廉,只要用VB代码就可以完成创建。但是它仍然需要开发者去学习及查询PTC API的英文手册并进行实践,同时也需要开发者掌握VB编程的基本知识和实践能力。它能够实现的功能比较局限,运行的效率一般,其开发的周期也是相对较长的,目前在国内仍处于探索阶段[1]。
相比前两者开发工具,本文所描述的二次开发技术主要基于Excel和Mapkey这两大平台。Excel是一款微软平台上常用的综合性图表软件,它拥有丰富的计算和数据分析模块,其内嵌的VBA语言适合初级软件开发者学习并使用。也由于它有很强的通用性,适合各个不同专业领域的用户使用,其上手的难度比较低。因此将Excel作为这类二次开发平台的客户端和执行语言。Mapkey作为Creo 内置的宏模块,它和Creo的兼容性非常好,能够涵盖软件内部许多不同的设计模块。使用这类技术开发门槛比较低,可以通过手动录制的方法随时设计自己所需的流程和代码,它的代码字符通常也是和界面命令相似,便于开发
者理解使用。同时因为它和Creo处于同一独立的模式和进程,执行程序时并不影响其他软件的使用效率,甚至能够提高Creo内部运行的速度。因此选用Mapkey作为开发的底层语言模块。
综合运用Excel和Mapkey两个模块的二次开发技术,可以更好地结合两者独立的优势,来达到开发和使用的
摘要:针对目前三维CAD软件Creo Parametric二次开发难度较大和效率不足等问题,主要通过对Mapkey编码及MS Excel两者的关键技术在二次开发中的应用价值进行研究,并用实际操作来完成一个异步模式下简易的软件二次开发,其开发模式高效、简单,最终能够实现工程师的设计自动化。
关键词:Excel;VBA;Mapkey;Creo;二次开发
中图分类号:TP391.7文献标志码:A文章编号:1002-2333(2021)02-0083-05 Secondary Development Technology of Creo Parametric Based on Mapkey and Excel
ZHUANG Zhifan,CHEN Binbin
(Trane Technologies Engineering Technology Center-Asia Pacific,Taicang215400,China)
Abstract:In view of the difficulty of secondary development and insufficient efficiency of the current3D
CAD software Creo Parametric,this paper studies the application value of the key technologies of Mapkey coding and MS Excel in secondary development,and uses actual operations to complete a simple software secondary development in asynchronous mode.Its development mode is efficient and simple,and ultimately can realize the design automation of engineers. Keywords:Excel;VBA;Mapkey;Creo;secondary development
开发模式
特点
Pro/toolkit C 语言难度大;运行速度快;兼容性好;功能齐全VB API VB 语言难度适中;运行速度一般;兼容性一般
Excel&Mapkey Excel 功能齐全;Excel 客户端通用性强;Mapkey 兼容性好;Mapkey 开发效率高;Mapkey 运行速度较快效率提升。
2二次开发的知识储备和主要流程
在搭建开发环境之前,需要准备两部分内容,第一部分需要准备一个notepad++工具来编辑及储存Mapkey ,第二部分需要准备一个Excel 来进行VBA 简易编程,其中要求开发者至少入门应用这两种基
本的编程技术:Mapkey 和VBA 。
Mapkey 编码技术:Creo 内置二次开发宏模块,它主要功能是模拟用户操作轨迹并且重复执行,搭建这个二次开发则需要用户会录制和解读简单的Mapkey ,来完成一些流程设计即可。
VBA 技术:VBA 是VB 基于Excel 做的一个拓展包,其底层的知识结构大致和VB 一样,在当前这类二次开发技术中VBA 只是作为一个基本框架和模板,无需开发者单独设计具体算法。
主要流程:首先需要利用VBA 从Excel 端口创建一个自定义宏文件→同时利用VBA 创建自定义的Mapkey 并且传递储存至创建好的自定义宏文件→设计一个Mapkey 执的Mapkey→创
建一个启动器
和Creo 进行连接并唤醒
Mapkey 执行器
完成二次开发环境的最终环节。二次开
发流程如图1
所示。
3二次开发的实战操作3.1自定义宏文件的搭建
Mapkey 的主要特点就是其宏的独特性和单一性,但是在实际应用中用户的流程和需求是千变万化的,需要更多地考虑灵活性和通用性。让Creo 每次都能够接受不同的用户信号并快速地运用Mapkey 去运行。因此,笔者采用了创建临时自定义宏文件的方案,目的就是可以随时调用其中的Mapkey 宏,这个文件是由用户按照特定的规则创造,且可以生成不同的自动化流程。它需要具备以下几大特点:1)文件必须是临时的,且不会永久地修改Creo 的设置和一切宏;2)文件储存的区域必须是已知有效的本地通用路径;3)文件需要自己独立的名称,避免与其他文件的文件名冲突;4)文件格式和编码必须和默认宏文件一致。
笔者在设计这个宏文件的自动创建流程时采用的是
VBA 工作簿启动事件,目的是在Excel 用户开发工具启动
的同时识别或创建该文件,自定义宏文件开发流程如图2所示,具体代码如图3所示。
其中:变量SourceFile 为笔者公司系统默认宏储存路径和名称config.pro ;变量DestinationFile 为笔者定义自定宏的储存路径和名称USER.pro 。
该程序主要先利用IF 语句判断自定宏文件是否存在,当用户第一次使用该工作簿时,系统会自动复制同目录下的config 文件到自定义宏文件,同时打开该文件并清空内容。而用户第二次启动时,则会识别到该文件而自动退出程序,目的就是确保自定义宏文件的成功创建为后续的开发作安全保障。
3.2自定义Mapkey 的创建及传递
当完成自定义宏文件的创建之后,需要开发者继续定义创建Mapkey 的方法并且把Mapkey 传递及储存到自定义宏文件中去。针对这种流程,笔者采取的是VBA 编程技术,主要需要完成大致两项内容:Mapkey 创建和动态参数关联,以及Mapkey 代码到自定义宏文件的传递。Mapkey 创建及传递流程如图4所示。
表1不同开发模式特点对比
图1二次开发流程(总)Excel 端口
VBA 创建
自定义宏文件VBA 储存
自定义mapkey
启动器mapkey 执行器
mapkey
Creo 端口
指定路径创建自
定义宏文件
Exit sub
自定义宏文件是否存在
Start sub 图2自定义宏文件开发流程
图3自定义宏文件程序代码
i =i +1
静态参数
Start Sub
打开自定义宏文件
动态参数
用户关联参数
输出代码
End Sub
动态循环参数与第i 行参数关联
输出第i 行代码
是否继续添加下一行代码?
否图4Mapkey 创建及传递流程
3.2.1Mapkey创建和动态参数关联
通常在VBA编程里会利用Print命令去输出需要的Mapkey代码字符。对于一个静态参数的Mapkey代码,它的处理方式比较简单,只需要依次输入print的字符串就可以将整套程序代码生成出来。图5所示是一个实现打开
其中:Print#1是指在1号通道输出该值,1号通道由开发者定义,引号内部则是该Mapkey主要代码。
对于带有动态参数的Mapkey程序,除了输出常规的语句之后,需要对动态参数语句进行和输入端口的一个关联,通常将静态和动态两种参数作一个关联语句就能够完成匹配。例如,输入端口为单元格A1的值,那输出的语句为print#1“Text1”&Range(“A1”),这样就能够返回用户在A1内输入的值的Mapkey 字符串。图6所示是一个实现打开用户输入的零件Mapkey动态参数语句。
其中:Range(“A1”)为单元格A1的参数。
当用户输入的信号是多种,数量不定的动态参数的时候,单一输出的语句就无法满足该类型的Mapkey
创建,因此在VBA程序内部就需要添加一个基于参数清单的循环语句,实现批量打开零件语句代码实例如图7所示。
本案例的目标就是在Creo连续循环打开清单内的模型号码直到最后一个为止。其中第一句是Mapkey的起始句,它仅能够出现一次,因此它不在循环语句内,主语句根据Excel A列清单做了一个循环过程,分别依次输出基于当前单元格的Mapkey语句,最终执行到最后的单元格的时候用if语句来判断并执行,最后一行末端换行符“\”的移除表示程序终止。这就是一个简单的循环动态参数的设定。基于有时候代码的数量会比较多,建议将字符都赋给一个变量,从而简化代码的字符数量和行数[2]。3.2.2Mapkey代码到自定义宏文件的传递
将Mapkey代码用print输出字符后,需要定向地将其储存传递到自定义宏文件内,因此可以建立一个文本文件字符串的添加事件,来完成Mapkey字符串填写并储存。其格式通常为:
Open"自定义宏文件地址"For Output As#1[宏文件的打开及清空]
Print#1,…[Mapkey创建代码] Close#1[宏文件的设置保存及关闭]
总而言之,从open→print→close的一个过程,可以完成一个简易Mapkey创建及传递,其中自定义宏文件的地址一定是先前工作簿启动事件的地址。针对不同的二次开发程序,一般只需套用此类模板,对Ma
pkey创建代码区域进行编辑修改即可,Mapkey的快捷键位必须设置成同一种,目的为后续执行器的设计提供统一的标准,笔者采用的标准快捷键位为“\\”,主语句设计则结合实际需求进行定制。
3.3Mapkey执行器创建
当自定义宏文件及其内部Mapkey代码搭建完成后,需要去加载执行该宏内的代码。笔者的解决方案则是设计一个Mapkey执行器,目的是载入自定义宏文件并运行其内部用户创建的自定义Mapkey,来完成单批次的自动
该Mapkey功能是快速地调用已存在的USER.PRO文件,即自定义宏文件,并再运行其内部的Mapkey宏\\,即自定义Mapkey的快捷键位。
需要注意的是:1)该宏代码建议储存在默认配置文件config.pro中,重启Creo即可,作用是让用户下一次启动Creo时能够自动载入该配置。2)==和\\是笔者根据自己偏好设置的Mapkey快捷键,在定义之前需要从当前可用的Mapkey清单内检查是否有快捷键冲突的键位,避免Mapkey失效问题。3)不同版本Creo,该Mapkey代码可能会稍有区别,笔者所用的当前版本为4.0M050。
3.4启动器设计
自定义宏创建及内部Mapkey的传递完成之后,就需要让Creo自行启动Mapkey执行器来完成自定义Map
key的运行。要实现这一步操作需要介入一些编程算法,由于此前所采用的都是Excel的VBA技术,为了保证代码的兼容性,笔者仍旧利用该语言去进行启动器代码的异步算法设计,当下有3类常用的启动器设计方法:
3.4.1Creo parametric辅助窗口启动器
该技术需要对Mapkey执行器进行进一步的修改,先设计一个Mapkey辅助窗口,再定义执行该窗口下的
图5静态参数语句
图6动态参数语句
图7动态循环参数语句
图8Mapkey执行器代码
图9Mapkey 辅助窗口代码
图12VB API 启动器代码resume 按钮就可以运行Mapkey 执行器,Mapkey 代码如图9所示,Creo 辅助窗口如图10所示。
拟键盘事件就可以使Creo 执
行该辅助窗口的程序运行按钮,代码如图11所示。
利用这种启动器运行程序,需要首先在Creo 窗口用Mapkey 的快捷键唤醒图10的
辅助窗口,本案例所采用的是
键位是“GE ”,然后再运行图11代码完成启动器程序的执行,其中的If 语句目的是为了判断辅助窗口是否被打开,再选择是否继续执行。
3.4.2
VB API 启动器
利用VB API 技术到Excel 与Creo 窗口的接口,并执行Mapkey 执行器的宏代码,代码如图12所示。
首先需要加载如图13上的Creo 控件,然后定义API 的几个窗口同步的变
量,最后利用
Session.RunMacro(“%==”)来运行快捷键“==”完成程序
执行[3-4]。
3.4.3Creo parametric 母窗口启动器
该方法与第一种类似,区别是它直接用appactivate 激活Creo 的通用母窗口,并且用keybd_event 来模拟键盘事可以看到这类启动器上会加一个On error 报错修复
功能,由于VBA 无法快速判断Creo 窗口的状态。因此当它未打开时,该语句前会出现一个窗口未到的报错,这时,系统会进入修复模式,出现一个弹窗提醒用户打开Creo 并重新运行。
这3类启动器都能够实现程序的启动运行,利用Creo parametric 辅助窗口启动器运行程序的优点是运行状态较为稳定,效率也比较适中,但是由于开启辅助窗口需要用户手动操作,不够快速、直观。VB API 启动器状态为最稳定的,但是它和Creo 之间的连接时间过长,运行效率相对较差。而Creo parametric 母窗口启动器运行效率是最快的,并且用户使用十分方便,但是它和Creo 之间的连接稳定性一般。不同启动器特点对比如表2所示。
笔者推荐使用的是第三类启动器,由于用户在使用
的时候需要得到快速的输入响应,更多地关注使用效率的问题;其次,它无需安装或者激活任何第三方的控件,通用性强,能够在任何一台配置的工作站上进行开发使用;即使第三类启动器有时候连接稳定
性不够好,但是它在当前启动模式下是十分稳定的,更多影响它的是公司的登陆程序等第三方插件和网络连接断开等风险。
通常这类二次开发理念中,自定义宏文件、Mapkey 执行器及启动器都是固定不变的,开发者只需进行个性化定制的是自定义Mapkey 的创建及传递,从而达到开发效率的最大化,完成企业综合性CAD 软件自动化的应用。4该二次开发理念目前存在的不足
虽然结合Excel 和Mapkey 能够实现很多功能的自动化,但是这种技术仍有一些不足:1)Mapkey 目前只是一个执行模块单元,无法实现更高级的功能;2)不同Creo 版本的Mapkey 代码不太一样,很难完全统一;3)Mapkey 的编码目前没有官方的指导手册和学习平台,需要用户录制去完成整理;4)Excel 作为输入端,运行时需要兼顾其他
图10Creo 辅助窗口
图11辅助窗口启动器代码
图13Creo 控件激活
图14母窗口启动器代码
启动器类型
优势
劣势Creo parametric 辅助窗口
运行稳定、效率适中操作复杂VB API
运行最稳定运行效率差Creo parametric 母窗口
运行效率最高
稳定性一般
表2
不同启动器特点对比
(下转第89页)
Excel宏文件,代码的安全级别低。这些问题目前尚未有成熟的解决方案。
5结论
这类二次开发技术除了应用在一些简易的宏开发,还可以结合Excel其他的功能完成一些更复杂的数据运算和处理。在实际CAD模型设计中它能够完成Creo图样搭建、3D建模、装配体搭建等,在质量管理过程中也能够有效地监控各个设计环节,甚至可以结合其他Creo内置的编程模块进行跨平台项目的搭建,例如CAD软件结合PDM系统和项目管理文档等,让开发者根据企业实际应用需求去灵活地订制方案。
本文所阐述的二次开发的技术和理念,目的是为了满足工程师及其他领域设计人员的日常工作需求。其实际操作也只是引用了笔者常用的一种编程技术来进行描述,希望能够让读者从中得到一些启发,可以更高效、自由地利用这种技术和理念。
[参考文献]
[1]高娜,李铁军,仇春生,等.基于VBA的Pro/E二次开发技术与应用
[J].现代制造工程,2014(3):61-64.
[2]胡光明,熊信柏.基于Excel与Creo数据交互的机械零件参数化
设计[J].陕西理工学院学报(自然科学版),2016,32(3):21-25. [3]张文晓.基于ExcelVBA对Creo进行异步模式下的二次开发[J].电
脑知识与技术,2019,15(7):218-220.
[4]Parametric Technology Corporation.PTC VB API帮助文档[Z].
USA:Parametric Technology Corporation,2018.
(编辑马忠臣)
作者简介:庄志凡(1993—),男,本科,工程师,主要从事空调产品的机械结构设计工作;
陈宾宾(1981—),男,本科,工程师,主要从事空调产品的
机械结构设计工作。
收稿日期:2020-07-22
图7读取电动机转速值
图8变频器转速监控画面(上接第86页)量。速度给定和实测速度的显示分别关联到对应变量。
利用趋势
图可以观察变频器、电动机的运行数据的历史变化过程。趋势数据采集的方式多样,可以在操作员站下
插入趋势节点,或者在FGR画面中插入趋势图,或者用OPC趋势服务器和网关实现。一张趋势图最多可以显示6条测量曲线,可分别关联到对应的6个测量变量。以趋势节点插入的方式为例,其实现步骤如下:在FBD程序中插入趋势采集块(含标签名设置),将趋势采集块的输入信号连接到某个待观测的变量。然后在操作员站下插入趋势节点,设置参数时选中“使用采样功能块”,然后输入相应的趋势块的标签名。为了能在实际运行中观测到趋势曲线,还需在WinAdmin窗口中把计算机的运行时钟和过程站的时钟设置为“允许时间同步”。由于过程站的IP地址尾号小于计算机的IP地址,当开启“时间同步”并加载程序后,计算机的系统时间将发生变化,与过程站的内部时钟自动保持统一。这种方式记录的变频器运行数据曲线,默认为
5s更新一次。
4结语
WinCS系统的FBD块编程语言是一种便捷的编程语言,结合Modbus通信协议,可实现对ACS510变频器的远程操控、数据实时监视。编程过程中,应该注意以下内容:
1)FBD块的信号连接时,应做好整数、实数、布尔量等数据类型的匹配转换。字型数据类型转换为实数型时,不能直接转换,需要经过二次类型转换。
2)ACS510变频器用户手册所提供的Modbus通信地址应该减去1后才可用,这点容易被忽视。
3)WinCS系统的FBD块只提供了常用的功能码:01、02、03、04、05、06、08、15、16。其他的功能码在WinCS软件中没有对应的FBD块。
4)当操作连续地址的多个寄存器(或线圈)时,可以采用8或16个寄存器(或线圈)的FBD块,一次性读写所有变量,让程序更加简洁。
5)PM683的内置485接口应设置为Modbus主站,而不是从站。波特率、奇偶校验、停止位应该和从站保持一致。6)趋势曲线的采集和显示有多种手段可选,采用趋势节点的方式是较为简便的途径。
[参考文献]
[1]ABB电气.ACS510-01用户手册[Z].2004.
[2]曹鹏,俞士胜.集散控制系统工程实践———WinCS从入门到精
通[M].北京:人民邮电出版社,2015.
[3]李正军,李潇然.现场总线及其应用技术[M].北京:机械工业出
版社,2016.
[4]郭琼,姚晓宁.现场总线技术及其应用[M].北京:机械工业出版
社,2014.
[5]王石磊,吴必妙.基于WinCS控制的智能低压电器实验岛的开
发[J].冶金自动化,2019(5):35-39.
vb软件开发
[6]ABB电气.WinCS3.1通信与现场总线工程手册[Z].2016.
(编辑马忠臣)
作者简介:徐小品(1979—),男,硕士,高级工程师,研究方向为电动机与电器。
收稿日期:2020-07-24

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。