找回密码
 注册
查看: 3718|回复: 21
打印 上一主题 下一主题

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

[复制链接]

该用户从未签到

跳转到指定楼层
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

查看全部评分

  • TA的每日心情
    开心
    2022-5-13 15:06
  • 签到天数: 113 天

    [LV.6]常住居民II

    推荐
    发表于 2020-6-12 09:30 | 只看该作者
    請問各位大神 如果存檔日期時間要放在檔案名前方 小弟該如何修改此份skill

    该用户从未签到

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

    该用户从未签到

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

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

    该用户从未签到

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

    该用户从未签到

    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  

    该用户从未签到

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

    该用户从未签到

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

    该用户从未签到

    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类型,它是一个长整型,你自己用数学计算出年\月\日\时\分也可以,

    该用户从未签到

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

    该用户从未签到

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

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

    该用户从未签到

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

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

    该用户从未签到

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

    噢~  look look{:soso_e113:}

    该用户从未签到

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

    该用户从未签到

    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
    复制代码
    这一行应该是这样的

    该用户从未签到

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

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

    本版积分规则

    关闭

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

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-5-29 10:17 , Processed in 0.093750 second(s), 26 queries , Gzip On.

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

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

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