Creo二次开发自定义数值和字符串相互转换的关系式函数

creo的典型应用特征是参数驱动,其基础模块的命名是Parametric,意即“参数”,可见参数处理在creo应用中占据举足轻重的地位。creo提供了多种参数处理的途径,所谓“程序”、“关系式”、“辅助应用程序”等等,都具备参数处理的功能,处理方式、特点和侧重点各有千秋。其中,“关系式”的应用无疑较为基础,使用频率也颇高。

关系式应用中存在一种需求,即数值类型参数和字符串类型参数的相互转换。我们常常需要将模型中的尺寸、特征等数值参数转换为字符串,用于驱动注释或形成规范化的说明导入其它数据存储和分析系统,或者提取字符串中的特定字段用于驱动模型尺寸、特征参数以形成标准化、系列化的模型。标准关系式函数中有itos(),用于将整数类型参数转换为字符串,如下图所示,使用函数itos(),将整数类型参数“INT”转换为字符串类型参数“STR”,在这个示例中即将整数25转换成字符串“25”。

这里有两个问题:①itos()同时支持整数和实数的转换,但应用实数转换时,将四舍五入为整数,且对于数值“0”的操作结果表现不甚理想,如使用itos(-0.4),将得到一个内容为“-的字符串,而不是希望的字符串“0”(Creo Parametric 10.0.0.0测试结果);②不存在标准关系式函数用于将适当格式的字符串转换为整数或实数。

笔者曾在Creo Parametric 6.0.5.0环境下编制特殊的建模模板,用于规范化建模和标准化命名,其指导思路即参数驱动文件命名和文件名驱动模型尺寸,落实的具体措施即通过编制适当的关系式将参数数值和字符串联系起来,形成相互的驱动关系。当时采用了一个编译好的现成辅助应用程序实现关系式内的循环操作,不论数值转为字符串还是字符串转为数值,都使用辅助应用程序定义的扩展FOR循环进行处理,能够实现数值(包括整数和实数)和字符串之间的相互转换。定义扩展FOR循环的辅助应用程序相关信息可参考Creo关系扩展-for循环 - Pro/E 二次开发 - 野火论坛Creo关系扩展-for循环百度网盘链接:https://pan.baidu.com/s/1CyjNrx-xoQYITXW31L7dsQ 提取码:ztut [qq]626142293[/qq]一、函数介绍1) _init格式:_ini ... Creo关系扩展-for循环 ,野火论坛icon-default.png?t=N7T8http://www.proewildfire.cn/forum.php?mod=viewthread&tid=170667&extra=&highlight=%B9%D8%CF%B5%2Bfor&page=1

目前creo升级为10.0.0.0,使用6.0.5.0环境下编制的上述建模模板时,数值和字符串的相互转换出现错误,关系式中辅助应用程序定义的扩展FOR循环无法按照预期运行,推测是扩展FOR循环的二次开发程序源码中使用了已经弃用的ProToolKit函数,造成在高版本软件中无法正常使用。搜索扩展FOR循环的新版辅助应用程序无果,遂动了自编二次开发程序的念头,而且原来使用扩展FOR循环的关系式编制方法稍显复杂,这里准备直接定义数值和字符串转换函数对该问题予以解决。

使用C++编制ProToolKit二次开发程序自定义两个关系式函数CtoN()和NtoC(),分别用于字符串转实数(或整数)、实数(或整数)转字符串。两个函数都接受两个参数,第一个参数是需要转换的数据,即实数(或整数)类型参数或字符串类型参数;第二个参数是用于表示小数点的字符串,第二个参数可忽略,即上述两个函数可接受单一参数输入,忽略第二参数时默认表示小数点的字符串为“.”

使用自定义关系式函数CtoN()和NtoC()的效果如下图所示。

DOUBLE1为实数类型参数,值为0.085458,STR1=NtoC(DOUBLE1,“·”)代表将0.085458转化为字符串“0·085458”并赋值给STR1,这里参数DOUBLE1的显示值为0.085,是因为配置文件设置为小数取3位。

INT1为整数类型参数,值为-487,STR2=NtoC(INT1,POINT)代表将-487转化为字符串“-487”并赋值给STR2,其实,这里可以省略NtoC()函数的第二参数,因为整数转换的字符串一定不包含小数点,即写为STR2=NtoC(INT1),与STR2=itos(INT1)效果一样,STR4=NtoC(INT1)即采用了这种省略第二参数的写法。

STR3=NtoC(DOUBLE1,POINT)代表将0.085458转化为字符串“0_085458”并赋值给STR3,小数点“.”被POINT指代的“_”代替。

DOUBLE2=CtoN(STR1,"·")代表将字符串STR1(“0·085458”)转化为实数0.085458并赋值给DOUBLE2,这里参数DOUBLE2的显示值为0.085,也是因为配置文件设置为小数取3位。CtoN()函数中第二参数"·"代表识别字符串中的字段“·”为小数点进行数值转化。二次开发程序在这里加入了格式检查和校验,如果CtoN()函数转化的字符串不符合格式要求,即需要转化的字符串代表小数点的字段与第二参数不一致,将弹窗提示格式有误。

DOUBLE3=CtoN(STR2)代表将字符串STR2(“-487”)转化为实数-487.0并赋值给DOUBLE3。这里省略第二参数代表识别字符串中的字段“.”(标准小数点)为小数点进行数值转化,因为输入字符串STR2之前是使用整数转换过来的,不包含小数点,因此小数点任意格式均可,二次开发程序的格式检查和校验都能通过。

DOUBLE4=CtoN(STR3,POINT),DOUBLE5=CtoN(STR4,"·")代表转化STR3、STR4为实数,分别用POINT、"·"作为小数点识别字段,当然STR4和STR2情况一样,由整数转化而来,小数点格式无所谓。

STR5为字符串类型参数,值为“-41245581.04444”,DOUBLE6=CtoN(STR5)代表以标准小数点“.”作为小数点识别字段,转化STR5为实数-41245581.04444并赋值给DOUBLE6,这里参数DOUBLE6的显示值为-41245581.044,是因为配置文件设置为小数取3位。

STR6=NtoC(DOUBLE6)则将实数类型参数DOUBLE6再转化为字符串并赋值给STR6,省略第二参数表示以标准小数点“.”作为小数点标识字段,因此结果为字符串“-41245581.04444”。

文后附CtoN()和NtoC()关系式函数的辅助应用程序注册文件,解压后将文件夹MONK_Tools放置在任意目录下,最好路径中不包含中文,如果路径中有中文,CtoN()NtoC()关系式函数的辅助应用程序注册文件将会在启动应用后自动拷贝至C:\MONK_PTC下运行。注册文件为文件夹MONK_Tools下的MONK_Tools.dat,如果注册前将文件夹MONK_Tools设为工作目录,则无需修改MONK_Tools.dat,否则需按实际路径修改MONK_Tools.dat中的目录信息。也可单独加载CtoN()或NtoC()的二次开发程序,相应的注册文件需按实际路径自行编制。

CtoN()和NtoC()关系式函数的辅助应用程序注册文件链接:https://pan.baidu.com/s/1nzHpcZcGx1NmL5-J0l4HVA?pwd=0501 
提取码:0501

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值