EDA365电子论坛网

标题: 怎么写一个skill, 在每次打开allegro时自动加载skill文件啊? [打印本页]

作者: caoqin    时间: 2020-12-7 15:31
标题: 怎么写一个skill, 在每次打开allegro时自动加载skill文件啊?
怎么写一个skill, 在每次打开allegro时自动加载skill文件啊?

作者: wwh950509    时间: 2020-12-7 16:16
如果要dk.scr文件适用所有项目,则做以下步骤
a.把dk.scr文件保存在安装目录下
D:\Cadence\SPB_Data\pcbenv\script
b.env文件中增加如下语句
Funckey dk replay D:\Cadence\SPB_Data\pcbenv\script\dk
作者: caoqin    时间: 2020-12-7 16:51
wwh950509 发表于 2020-12-7 16:16
如果要dk.scr文件适用所有项目,则做以下步骤
a.把dk.scr文件保存在安装目录下
D:\Cadence\SPB_Data\pcbe ...

但是每次要输入命令加载啊,如果是自动加载呢

作者: jet2001    时间: 2020-12-8 09:50
在你 allegro 安裝目錄 ex: E:\A16.6 ;  的 PCBENV 目錄下自己產生 Allegro.ilinit
E:\A16.6\PCBENV\Allegro.ilinit
內容如下
setSkillPath(buildString(append1(getSkillPath()  "C:/pcbenv/skill")))
load("aaa.il")
load("ccc.il")
load("eee.il")



然後將 aaa.il ccc.il eee.il 放在 C:/pcbenv/skill 即可 (allegro 啟動時就會自動載入, 如果有error 也會show出來)
作者: caoqin    时间: 2020-12-8 10:03
jet2001 发表于 2020-12-8 09:50
在你 allegro 安裝目錄 ex: E:\A16.6 ;  的 PCBENV 目錄下自己產生 Allegro.ilinit
E:\A16.6\PCBENV\Alleg ...

嗯嗯,是的,我知道这种方法。 我是想写一个skill,在ilinit里只加载这一个skill,就可以加载其他所有的skill.

作者: leilei4908    时间: 2020-12-8 11:27
caoqin 发表于 2020-12-8 10:03
嗯嗯,是的,我知道这种方法。 我是想写一个skill,在ilinit里只加载这一个skill,就可以加载其他所有的ski ...

给你提供部分源码,其实不难写
foreach(skillPath getSkillPath()
      foreach(file getDirFiles(skillPath)
            ext = car(last(parseString(file ".")))
            when(ext == "il"   ; 文件后缀名
                  load(file)        ; 加载无密码的skill文件
            )
      )
)

作者: 這侽孓譙悴丶    时间: 2020-12-8 12:13
caoqin 发表于 2020-12-8 10:03
嗯嗯,是的,我知道这种方法。 我是想写一个skill,在ilinit里只加载这一个skill,就可以加载其他所有的ski ...

这个很简单:比如skill文件b.il  c.il  d.il放在skill默认路径下,在A.il文件里面写入以下三行代码:
load("b.il")
load("c.il")
load("d.il")
然后在allegro.ilinit文件里面写入load("A.il"),启动allegro后b c d这三个skill文件就会自动被加载了!

作者: caoqin    时间: 2020-12-8 13:52
leilei4908 发表于 2020-12-8 11:27
给你提供部分源码,其实不难写
foreach(skillPath getSkillPath()
      foreach(file getDirFiles(ski ...

你这个只能一次加载无密码的啊,有密码的呢
作者: caoqin    时间: 2020-12-8 13:53
這侽孓譙悴丶 发表于 2020-12-8 12:13
这个很简单:比如skill文件b.il  c.il  d.il放在skill默认路径下,在A.il文件里面写入以下三行代码:
lo ...

试过,还是不能自动加载,要重新把写的这个加载skill 运用一次,才会加载其他的skill.

作者: 這侽孓譙悴丶    时间: 2020-12-8 13:56
caoqin 发表于 2020-12-8 13:53
试过,还是不能自动加载,要重新把写的这个加载skill 运用一次,才会加载其他的skill.

不需要,一直使用的方法,除非你说的有误或者没能理解我的意思!

作者: caoqin    时间: 2020-12-8 14:02
這侽孓譙悴丶 发表于 2020-12-8 13:56
不需要,一直使用的方法,除非你说的有误或者没能理解我的意思!

能不能看看你的编码,估计我的编码有问题
作者: leilei4908    时间: 2020-12-8 14:15
caoqin 发表于 2020-12-8 13:52
你这个只能一次加载无密码的啊,有密码的呢

源码都给你了自己改下程序就行了啊官方提供的 sklangref.pdf
就有介绍 load 这个函数功能


作者: aarom    时间: 2020-12-8 16:28
提示: 作者被禁止或删除 内容自动屏蔽
作者: 小Q啊啊啊啊啊啊    时间: 2020-12-16 09:40
fanyskill发过这样的教程
作者: digitzing    时间: 2022-1-31 18:55
本帖最后由 digitzing 于 2022-1-31 18:58 编辑

axlCmdRegister("Reload_Skill" 'Reload_Skill)
procedure(Reload_Skill()
load("MyToolbarChs.iltemp" "")
load("MyLayer.il" "")
load("Mycolor.il" "")         
)

Reload_Skill()

最后这句是让前面的跑起来,很关键



作者: db-_-    时间: 2022-2-8 18:38
本帖最后由 db-_- 于 2022-2-10 15:01 编辑

发帖重复,删除。。。
作者: db-_-    时间: 2022-2-8 18:41
自用的代码。供参考。可以加载所有il和ile,但ile需要手动录入(无法避免!)

  1. ;additional skill path be added here. one path for one line.
  2. setSkillPath(append1(getSkillPath() "D:/il" ))
  3. setSkillPath(append1(getSkillPath() "D:/allegro_skill"))
  4. ;load all the files of skill path.
  5. foreach(dir cdr(getSkillPath())        ;;use cdr to void duplicated loading
  6.         when(files = rexMatchList(".*\\.il$" getDirFiles(dir))
  7.                 printf("Loading Skill files from %L\n" dir)
  8.                 foreach(file files
  9.                         printf("loading: %s\n" file)
  10.                         load(strcat(dir "/" file))
  11.                 )
  12.                 printf("\n")
  13.         )
  14. )
  15. ;TO ADD
  16. ;encrypted files ADD here.
  17. foreach(file `(
  18.                 ("mytools.ile" "deargds")
  19.                 ("align_text.ile" "deargds")   
  20.                 ("ps_DanglingObjects.ile" "www.pcbskill.com")
  21.                 ("x_cline2shape.ile" "www.eda365.com")
  22.                 ("x_align_via.ile" "www.eda365.com")
  23.                 ("x_mc_ro_text.ile" "www.eda365.com")
  24.                 ("cline_segs_cut.ile" "www.allegro-skill.com")
  25.                 ("route_keepout_pad.ile" "sylar")
  26.                 ("ch_via_net.ile" "www.allegro-skill.com")
  27.                 ("x_check_line90.ile" "www.eda365.com")
  28.                 ("set_grids.ile" "www.allegro-skill.com")
  29.         )
  30. ;load encrypted files.
  31.         printf("loading: %s\n" car(file))
  32.         load(car(file) cadr(file))
  33. )
复制代码

作者: ashnoer    时间: 2023-4-18 23:50
db-_- 发表于 2022-2-8 18:41
自用的代码。供参考。可以加载所有il和ile,但ile需要手动录入(无法避免!)

我的p004版本用这个加载直接报错崩溃,是需要打补丁吗?

作者: db-_-    时间: 2023-4-20 09:46
ashnoer 发表于 2023-4-18 23:50
我的p004版本用这个加载直接报错崩溃,是需要打补丁吗?


你先把文件删掉。看报不报错。
然后再新建文件,一段一段加。看还报不报错。
就能知道是什么问题了。

作者: zhualuo2    时间: 2023-4-20 18:47
https://www.eda365.com/thread-668527-1-1.html




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2