找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 1810|回复: 20
打印 上一主题 下一主题

发一个skill源码上来,好像有人想法跟我一样

[复制链接]

5

主题

56

帖子

1007

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
1007
跳转到指定楼层
1#
发表于 2012-8-22 15:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您!

您需要 登录 才可以下载或查看,没有帐号?注册

x
本帖最后由 gpxknk 于 2012-8-27 19:01 编辑
  1. axlCmdRegister("wxsf" 'wxSaveFileBT)
  2. axlShell("alias sf wxsf")
  3. ;axlShell("alias k wxsf")
  4. ;axlShell("alias kk skill 'load(\"wxSaveFileBT.il\")'")

  5. /*
  6. ├─
  7. │ ├─        程序名称:
  8. │ ├─        程序功能:保存文件,并注上(覆盖)当前时间
  9. │ ├─        创建时间:2012年08月22日
  10. │ ├─        修改时间:
  11. │ ├─        作    者:gpxknk
  12. │ └─        备    注:本来想保持原先格式才用了s1-s5,但后来觉得统一好点,即XXX-1630.brd
  13. ├─

  14. */
  15. procedure( wxSaveFileBT()
  16. prog( (tm sTime sDName sDNameNew s1 s2 s3 s4 s5)
  17.         tm= timeToTm(stringToTime(getCurrentTime()))
  18.         ;tm->tm_year        ;tm->tm_mon
  19.         sTime= sprintf(nil,"%2d%2d",tm->tm_hour,tm->tm_min)
  20.         rexCompile(" ")
  21.         sTime= rexReplace(sTime,"0",0)
  22.         sDName= axlCurrentDesign()        ;axlGetDrawingName
  23.         if(strlen(sDName)< 5 then
  24.                 sDNameNew= strcat(sDName,"-",sTime)
  25.         else
  26.                 rexCompile( "^\\(.+\\)\\([-_]+\\)\\([0-2][0-9]\\)\\([\\._-]*\\)\\([0-5][0-9]\\)$" ) ;-18.30.brd        _18.30.brd        _1830.brd
  27.                 if(rexExecute(sDName) then
  28.                         s1= rexSubstitute( "\\1" )
  29.                         s2= rexSubstitute( "\\2" )
  30.                         s3= rexSubstitute( "\\3" )
  31.                         s4= rexSubstitute( "\\4" )
  32.                         s5= rexSubstitute( "\\5" )
  33.                         sDNameNew= strcat(s1,"-",sTime)
  34.                 else
  35.                         sDNameNew= strcat(sDName,"-",sTime)
  36.                 );if
  37.         );if
  38.         axlSaveDesign(?design sDNameNew)
  39.         printf("Save:[%s]-->[%s]\n",sDName,sDNameNew)
  40. );prog
  41. );procedure
复制代码
以下为24日修改后的,增加了日期
  1. axlCmdRegister("wxsf" 'wxSaveFileBT)
  2. axlShell("alias sd wxsf date")
  3. axlShell("alias sf wxsf time")
  4. ;axlShell("alias k wxsf")
  5. ;axlShell("alias kk skill 'load(\"wxSaveFileBT.il\")'")

  6. /*
  7. ├─
  8. │ ├─        程序名称:
  9. │ ├─        程序功能:保存文件,并注上(覆盖)当前时间(日期)
  10. │ ├─        创建时间:2012年08月22日
  11. │ ├─        修改时间:
  12. │ ├─        作    者:gpxknk
  13. │ └─        备    注:
  14. ├─

  15. 2012年08月22日 统一格式,即XXX-1630.brd
  16. 2012年08月24日 添加日期,同时保持两种格式

  17. 命令行指令:
  18.         sd : 保存为 XXX_MMdd_hhmm.brd
  19.         sf : 保存为 XXX_hhmm.brd,也可能是 XXX_MMdd_hhmm.brd(只修改时间)
  20. 对于sD1 sD2 sT1 sT2:
  21.         sD1;日期前缀 eg: _X0824_1200.brd
  22.         sD2;日期后缀 eg: _0824X_1200.brd
  23.         sT1;时间前缀 eg: _0824_X1200.brd
  24.         sT2;时间后缀 eg: _0824_1200X.brd
  25.         1.以上也是无奈之举,不同的公司规则不一样,但连接符还是统一用"_",而"-"说实在的不规范
  26.         2.而日期(时间)中间不要插符号,如时间:_16.30.brd,"."用在基本文件名上说实在的也不规范
  27.         3.不要出现'空格','.','\',':','?'等等等等字符

  28. */

  29. procedure( wxSaveFileBT(@optional (mode "date") )
  30. prog( (tm sDate sTime sDName sDNameNew sPre sPost pt sD1 sD2 sT1 sT2)
  31.         sD1= ""
  32.         sD2= ""
  33.         sT1= ""
  34.         sT2= ""
  35.         sDName= axlCurrentDesign()        ;axlGetDrawingName
  36.         tm= timeToTm(stringToTime(getCurrentTime()))
  37.         sTime= sprintf(nil,"_%s%2d%2d%s",sT1,tm->tm_hour,tm->tm_min,sT2)
  38.         sDate= sprintf(nil,"_%s%2d%2d%s%s",sD1,tm->tm_mon + 1,tm->tm_mday,sD2,sTime)        ;;tm->tm_year
  39.         rexCompile(" ")
  40.         sTime= rexReplace(sTime,"0",0)
  41.         sDate= rexReplace(sDate,"0",0)
  42.         case(mode
  43.                 ("time" pt= strcat("^\\(.+\\)[-_]+",sT1,"[0-2][0-9]\\.*[0-5][0-9]",sT2,"$"),sPost=sTime)
  44.                 ("date" pt= strcat("^\\(.+\\)[-_]+",sD1,"[0-1][0-9][0-3][0-9]",sD2,"[-_]+",sT1,"[0-2][0-9]\\.*[0-5][0-9]",sT2,"$"),sPost=sDate)
  45.                 (t printf("ERROR:wxSaveFileBT: 'wxsf' argument error,\n"),return(nil))
  46.         );case
  47.         rexCompile(pt)
  48.         if(rexExecute(sDName) then
  49.                 sPre= rexSubstitute( "\\1" )
  50.                 sDNameNew= strcat(sPre,sPost)
  51.         else
  52.                 sDNameNew= strcat(sDName,sPost)
  53.         );if
  54.         axlSaveDesign(?design sDNameNew)
  55.         printf("Save: [ %s ] --> [ %s ]\n",sDName,sDNameNew)
  56. );prog
  57. );procedure
复制代码

评分

参与人数 1贡献 +5 收起 理由
langexie + 5

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏3 支持!支持! 反对!反对!

27

主题

261

帖子

668

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
668
2#
发表于 2012-8-22 16:59 | 只看该作者
我也正尝试些这样功能的skill。正在调试中,可以参考你的了。呵呵

5

主题

56

帖子

1007

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
1007
3#
 楼主| 发表于 2012-8-22 17:02 | 只看该作者
jekyllcao 发表于 2012-8-22 16:59
我也正尝试些这样功能的skill。正在调试中,可以参考你的了。呵呵

I Know,看了你连问了几个问题,便知个大概,于是写了个出来,以前也有这想法,不过没去写过

7

主题

444

帖子

4989

积分

EDA365版主(50)

Rank: 5

积分
4989
4#
发表于 2012-8-22 17:50 | 只看该作者
挺好的想法,可以整合到trigger的机制中,这样就不用每次保存文件还要调用其他的菜单了

27

主题

261

帖子

668

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
668
5#
发表于 2012-8-22 20:24 | 只看该作者
我的skill也差不多了,请高手帮我修改修改。
备注:我们公司的board file命名是有规范的,按照part number(5位数字)+revision(a01_date_time.brd   eg. 24238e01_0822_2022.brd

代码如下:
axlCmdRegister("savetime" 'savetime)
procedure( savetime()
         A=axlCurrentDesign()
         list=substring(A 1 8)
         B=getCurrentTime()
         list1=substring(B 1 3)
         list2=substring(B 5 2)
         list3=substring(B 8 2)
         list4=substring(B 11 2)
         sDNameNew= strcat(list,"_",list1,list2,"_",list3,list4)      
         axlSaveDesign(?design sDNameNew)      
         );end of procedure  

8

主题

209

帖子

2752

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
2752
6#
发表于 2012-8-22 20:32 | 只看该作者
和自动保存 有什么区别吗?

27

主题

261

帖子

668

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
668
7#
发表于 2012-8-22 20:32 | 只看该作者
现在有个问题困扰我,skill存的brd file的名字是:24238e01_Aug22_2027.brd
因为系统的时间格式是"Aug 22 20:31:59 2012",我还不知道怎样把Aug变成08.
请高手指教!

5

主题

56

帖子

1007

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
1007
8#
 楼主| 发表于 2012-8-22 21:42 | 只看该作者
jekyllcao 发表于 2012-8-22 20:32
现在有个问题困扰我,skill存的brd file的名字是:24238e01_Aug22_2027.brd
因为系统的时间格式是"Aug 22  ...

如果你要用这种方式,那么你就直接替换吧,很直接的方法,1-12月,执行12次替换,不过怕不同的系统设置不一样这个函数取得的字符串格式也不一样,太不保险了.

我建议你还是用我上面的那种方式吧,先将它转换为TM结构,然后用"->"取得年\月\日\时\分....再格式化成你要的格式,
不同的编程语言实现起来不太一样,skill-lisp里我觉得这种方式算可以了.只是我没有找到日期时间格式化函数,如果这个用得很多,自己去写一个格式函数也是可以的,

如果你转化为time类型,它是一个长整型,你自己用数学计算出年\月\日\时\分也可以,

5

主题

56

帖子

1007

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
1007
9#
 楼主| 发表于 2012-8-22 21:52 | 只看该作者
请deargds 出来再修改一下,这个网页的文本转代码显示的程序怎么把$变成了
[        DISCUZ_CODE_0        ]quot;
我怕我去改会丢失你改的格式.{:soso_e100:}

27

主题

261

帖子

668

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
668
10#
发表于 2012-8-22 23:05 | 只看该作者
gpxknk 发表于 2012-8-22 21:42
如果你要用这种方式,那么你就直接替换吧,很直接的方法,1-12月,执行12次替换,不过怕不同的系统设置不一样这 ...

你说的非常有道理,你不介意的话我拿你的代码为基础修改成我想要的样式,谢谢指教~~~

27

主题

261

帖子

668

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
668
11#
发表于 2012-8-22 23:11 | 只看该作者
mako88 发表于 2012-8-22 20:32
和自动保存 有什么区别吗?

自动保存只是把将文件以原来的文件名再存一遍,文件名没有改变,只是新保存的文件取代旧的文件。我们写的程式是在保存文件时时时跟系统的时间同步,每次保存的文件名都不一样。

8

主题

209

帖子

2752

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
2752
12#
发表于 2012-8-23 08:51 | 只看该作者
jekyllcao 发表于 2012-8-22 23:11
自动保存只是把将文件以原来的文件名再存一遍,文件名没有改变,只是新保存的文件取代旧的文件。我们写的 ...

噢~  look look{:soso_e113:}

8

主题

209

帖子

2752

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
2752
13#
发表于 2012-8-23 09:22 | 只看该作者
请问:怎么用啊?我怎么总是出现
Command > wxsf
E- *Error* toplevel: undefined variable - wxSaveFileBT
是什么原因啊?

5

主题

56

帖子

1007

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
1007
14#
 楼主| 发表于 2012-8-23 10:20 | 只看该作者
mako88 发表于 2012-8-23 09:22
请问:怎么用啊?我怎么总是出现
Command > wxsf
E- *Error* toplevel: undefined variable - wxSaveFile ...
  1. rexCompile( "^\\(.+\\)\\([-_]+\\)\\([0-2][0-9]\\)\\([\\._-]*\\)\\([0-5][0-9]\\)$" ) ;-18.30.brd        _18.30.brd        _1830.brd
复制代码
这一行应该是这样的

8

主题

209

帖子

2752

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
2752
15#
发表于 2012-8-23 13:23 | 只看该作者
gpxknk 发表于 2012-8-23 10:20
这一行应该是这样的

只能保存当前的时间,年份和月份不能改;还有,就是在一分钟内保存,不能自动覆盖。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

巢课

技术风云榜

关于我们|手机版|EDA365 ( 粤ICP备18020198号 )

GMT+8, 2025-1-10 00:37 , Processed in 0.088795 second(s), 37 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表