前端如何排除中文字符_MasterCam(MC) 2020 后处理用正则表达式排除中文或任意定义允许输出的字符...

MC2020刚刚发布正式版,

d7b0c4a4925d0e4a764ba9c346e74fb2.png

中文用户这就吃了第一个bug了。有中文输出的行结尾的换行符可能被覆盖。。。如下图

762c6cbbb753b6e2cae4c0f2c030b85d.png

文件名有中文,最后面的换行符被覆盖了,

刀具名有中文,最后面的换行符被覆盖了,

这是一个小插曲,

实际上也有很多机床系统也并不支持中文如Fanuc,brother,有中文的话可能 根本传不进程序 或者运行中报警。

虽然 我们编程可以尽量避免使用中文来规避,但我们是中国人啊凭啥不能用中文=,=刀具名文件名全英文的,编程有时还真看不明白。

好在出程序的时候还得经过后处理这一过程MC2020的后处理新增加了一个regex函数,用code export 可查

2f910b9a6daa8b85a049a60d9906301f.png

这个函数对会C python什么的就比较熟悉了,中文名正则表达式,用来处理各种文本字符相当强大,比如从一堆文本中抓网址,电话号码什么的。

MC里的正则表达式,就我个人初步使用所用感觉还是阉割版,也就只有三个方法,匹配单个字符串,匹配整个字符串,替换字符串。

回到中文的问题上来,就MC正则表达式的这三个方法也就足够我们处理了。

以下为源码配点广

sreplas: " " #用于将中文字符替换成什么?此处为空格Srobin

sreg   : "A-Z0-9 +-/*//" #在引号里写什么字符就只允许输出什么字符

#A-Z表示26个大写字母,

#0-9表示数字

#+-/*//表示加减乘除,MP正则表达式转义字符是/

stemp  : ""

sreult : ""

srreg  : ""

sureg  : ""

stext  : "1sroibn- -2345345+SR*OBI/N-3SROBIN-4@???SROBIN罗宾 SROBIN第三adfaadsfasf第五5555"

punchn

stemp = ucase(stext)

sureg = "[" + sreg + "]+"

srreg = "[^" + sreg + "]+"

sreult = regex(sureg, stemp, 0)

while sreult <> stemp,

[

stemp = regex(srreg, sreplas, 2)

sreult = regex(sureg, stemp, 1)

]

*sreult

regex的三个用法都有用上了。

第一个模式为0

sreult = regex(sureg, stemp, 0)

sreult返回按表达式sureg规则匹配的stemp里的最前面的字符,后面的舍弃

sreult = regex(sureg, stemp, 1)

sreult返回按表达式sureg规则匹配的stemp的字符,但比较模式是和整个字符串相比较,也就是说setmp要完全匹配才有返回值和0模式下只返回第一次匹配的有所区别

stemp = regex(srreg, sreplas, 2)

用srcplas替换掉stemp里面,按srreg规则匹配的字符,stemp原值被修改。

解释完上面的再来看看这段源码怎么用

::找到所有可能有中文件的变量比如smcname$ 把输出 替换掉

比如Pheader文件头里的文件名输出

原文件

 sopen_prn, "MCAM FILE - ", *smcpath$, *smcname$,*smcext$, sclose_prn, e$

红名部分为修改前后

sopen_prn, "MCAM FILE - ", *smcpath$, stext = smcname$, punchn, *smcext$, sclose_prn, e$

再如刀具列表里的     pstrtool

这个是处理刀具名的

pstrtool        #Comment for tool

      if strtool$ <> sblank,

        [

        strtool$ = ucase(strtool$)

        *strtool$

        ]

红名部分为修改前后

pstrtool        #Comment for tool

      if strtool$ <> sblank,

        [

        strtool$ = ucase(strtool$)

        stext = strtool$

punchn

        ]

改了前后的对比

68525cb053202fb2bb3fa2f018a2fb91.png

3c7c1585d4ba246ea894b63bbf241cb0.png

完了,使用规则 就把把源码复制到任意地方(不要问我任意是什么地方)再把需要限制的变量名修改一下,stext = 输出变量名, punchn, 

关注请加公众号: CAMROBIN

交流请加人个微信号:SROBIN

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值