找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 1811|回复: 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 支持!支持! 反对!反对!

8

主题

209

帖子

2752

积分

四级会员(40)

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

积分
2752
21#
发表于 2012-8-24 12:13 | 只看该作者
gpxknk 发表于 2012-8-24 10:56
你的要求很高哟,不过这不是无人值守系统装机啊,
我觉得能不能自动覆盖不重要吧,这不是定时保存呀
今天加 ...

嗯,加个日期就行了。

5

主题

56

帖子

1007

积分

四级会员(40)

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

积分
1007
20#
 楼主| 发表于 2012-8-24 10:56 | 只看该作者
mako88 发表于 2012-8-23 13:23
只能保存当前的时间,年份和月份不能改;还有,就是在一分钟内保存,不能自动覆盖。

你的要求很高哟,不过这不是无人值守系统装机啊,
我觉得能不能自动覆盖不重要吧,这不是定时保存呀
今天加上了日期,,不过对于你说的年份?是你打错了吗?板子名字有会加上年份的吗?一年365天,这周期长了点吧.

98

主题

1043

帖子

5951

积分

五级会员(50)

Rank: 5

积分
5951
19#
发表于 2012-8-23 16:46 | 只看该作者
这个很有用.

0

主题

222

帖子

1773

积分

四级会员(40)

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

积分
1773
18#
发表于 2012-8-23 15:26 | 只看该作者
这个貌似很有用的!

8

主题

209

帖子

2752

积分

四级会员(40)

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

积分
2752
17#
发表于 2012-8-23 13:55 | 只看该作者
gpxknk 发表于 2012-8-23 13:53
呵,
每个人的要求都可能会不一样,我发的是源码呀,你们可以按自己的要求去改的呀,
上面源码中的功能我 ...

请问 年月 是怎么加的。

5

主题

56

帖子

1007

积分

四级会员(40)

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

积分
1007
16#
 楼主| 发表于 2012-8-23 13:53 | 只看该作者
本帖最后由 gpxknk 于 2012-8-23 13:55 编辑
mako88 发表于 2012-8-23 13:23
只能保存当前的时间,年份和月份不能改;还有,就是在一分钟内保存,不能自动覆盖。


呵,
每个人的要求都可能会不一样,我发的是源码呀,你们可以按自己的要求去改的呀,
上面源码中的功能我应该说得很清楚了,只动时间,没有加年月,
框架都出来了,改改很容易的哈.....
至于你说的一分钟内你要覆盖.-----这样吧,你直接Ctrl+S,加回车,{:soso_e151:}
或者你判断一下是否已经存在同名文件,然后..........

8

主题

209

帖子

2752

积分

四级会员(40)

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

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

只能保存当前的时间,年份和月份不能改;还有,就是在一分钟内保存,不能自动覆盖。

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

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:}

27

主题

261

帖子

668

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

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

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

27

主题

261

帖子

668

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

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

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

5

主题

56

帖子

1007

积分

四级会员(40)

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

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

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类型,它是一个长整型,你自己用数学计算出年\月\日\时\分也可以,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

技术风云榜

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

GMT+8, 2025-1-10 09:57 , Processed in 0.070747 second(s), 34 queries , Gzip On.

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

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

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