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

skill路径加载方法

  [复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-11-19 23:22 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

x
论坛中大神很多,但小白也不想花时间学怎么开发skill,只要可以加载使用就好了。群中的内容操作多数都可直接拿来使,可当下了一堆skill,如何管理这就是一个问题。
作为强迫症患者,不想把所有的skill文件一股脑全pcbenv文件夹下,这样文件太多太乱,还没有分类。又不想为每一个加载skill时,设置专门的路径,因而必须设定好专用的路径。不想修改candence安装文件中的allegro.mem文件,因为每次这样修改比较麻烦,还要找位置。
因而本文操作分为三块:
1.设置skill文件的加载路径(采用相对路径)。
2.设置菜单(动态菜单,以skill语言加载)。
3.加载skill文件。

测试用的skill是来自论坛的https://www.eda365.com/thread-100913-1-1.html


1.必须要对HOME变量有概念,这个全局变量是cadence加载一些文件的一个关键路径,一般安装时自动会创建。我们的全局pcbenv放在这个路径下,运行过程中如果需要调用这个文件路径以 "~/" 表示即可,这个就是HOME变量的路径。
    它的查阅方法,可右键单击计算机,在菜单中选  属性/高级系统设置/高级/环境变量 中查询到HOME值,这方面网上资料很多。

    我的HOME文件路径是 C:\Users\(User)\AppData\Roaming\SPB_Data ,在cadence中等价于 ~\
    为了方便管理,我在该文件夹下建立了skill文件夹,然后在里面建立不同的子文件夹,分类放skill。我在其中建立了文件夹UniNavSkill

    这里需要介绍一下skill中用到的几个文件,他们位于pcbenv下面。allegro.ilinit,这个文件可以自行用记事本创立,然后另存就可以了,注意不要和allegro.ini搞混了,我一开始就搞混了,总是弄不成。
   
    另一些是以.il为扩展名的文件,是我们的skill文件,我们需要在allegro.ilinit中加载它,这些文件放置在skill文件夹下对应的分类中。

采取这种分类方式,以后我们在其它系统上安装就简便了,只要把skill文件夹复制到HOME路径下,把allegro.ilinit文件复制到HOME\pcbenv\路径下,其它什么都不用做了。如果要合并,自己编辑allegro.ilinit文件就可以了。我们不需要考虑安装的绝对地址是什么。

2. 其次,我们需要设置目录,目录的设置我参考了很多文章,但是多数是用修改allegro.mem的方法,很麻烦。动态的方法有,但是不太好找。我们要做的是编写一个skill文件,在其中设置目录,然后我们加载就好了。因为设置了相对路径后,我们需要保证我们命名的skill不能重命,所以要为不同分类的目录取一个不同的名字。
这里我的取名是menu_UniNavSkill.il用记事本编辑它。
其中的原码如下:
defun(loadUniNavMenu (t_menuName)    ; loadUniNavMenu是函数名,建议取独一无二的名字。
        SKILLToolsMenu = '(
                (popup "UniNav")    ;这时是主菜单的名字"UniNav"
                        ("quick_view","quick_view")    ;前面一个"quick_view"是下一级子菜单名,后一个"quick_view"是我们调用skill所用的指令。以下相同不赘述
                        ("conv","conv")
                        ("ch_ref","ch_ref")
                        ("dumplib","dumplib")
                        ("scalpel","scalpel")
                        ("align_symbol","xasym")
                        ("cline2shape","c2s")
                        ("mc_ro_text","mc_ref")
                        ("split_shape","split_shape")        
                        
                        (separator)    ;这里是分割线
                        (popup "Change")  ;需要创建下一级子菜单Change
                                ("replace_via","replace_via")  ;在Change下创建下一级菜单
                                ("change_net_onvias","change_net_onvias")
                                ("change_lw","clw")        
                        (end)  ;返回上一级菜单,每进一级菜单,要返回上一级都要有(end)
                        
                        (popup "Check")
                                ("check_dir","check_dir")
                                ("orphannet","orphannet")
                                ("ch_text_overlap","ch_text_overlap")
                                
                                ("check_line90","line90")
                        (end)
                (end)  ;返回根菜单
        )
        let( (palMenu)
                palMenu = axlUIMenuFind(nil -1)
                axlUIMenuInsert(palMenu SKILLToolsMenu)  
        )
)
axlTriggerSet('menu 'loadUniNavMenu)  ;这里 loadUniNavMenu需要和上边函数名相同。


;是用来作注释的,这段代码我直接测试过,绝对可用。显示效果如下


3. 加载skill文件。
这里全部是写在allegro.ilinit文件的。原码如下:
;Uni skill
setSkillPath(append(getSkillPath() '("~/skill/UniNavSkill")))

load("menu_UniNavSkill.il")
load("ch_ref.il" "")
load("ch_text_overlap.il" "")
load("change_net_onvias.il" "")
load("check_dir.il" "")
load("conv.il" "")
load("dumplib.il" "deargds")
load("orphannet.il" "")
load("quick_view.il" "")
load("x_mc_ro_text.il" "www.eda365.com")
load("replace_via.il" "")
load("scalpel.il" "")
load("x_align_symbol.il" "deargds")
load("x_cline2shape.il" "www.eda365.com")
load("x_split_shape.il" "deargds")
load("fform.il" "")
load("x_check_line90.il" "www.eda365.com")
load("x_change_lw.il" "www.eda365.com")
;UniNav_END


为了区分是哪一组skill,所以前后用注释框住。
第一行是为了加载相对地址,我目前试过只有这个方式好使。网上给的多数方法是setSkillPath(buildString(append1(getSkillPath() "D:/skill")))。但这个方法,我试过,用绝对路径可用,但是相对路径总是报错,我查了半天的资料才发现找到这个加载方法。我们要用'()把路径包上,转换成一个串,然后才能用append函数(不是append1)。将相对路径认为skillpath后,加载sill文件就不需要输入路径了,直接用文件名就可以了。就如上文例子那样。
这里要注意,把菜单加载的skill  menu_UniNavSkill.il要加进去,不然是不会有菜单的。

完成了。本贴给新入门的同行看,为了减轻负担,也不设什么消耗的附件下载了,如果大家觉得有用,就给些支持吧。

该用户从未签到

推荐
发表于 2021-5-14 14:40 | 只看该作者
网上找来的源文件,知道密码,但不知到skill的运行命令,那我的动态菜单该怎么设置呢

该用户从未签到

推荐
发表于 2021-5-20 16:04 | 只看该作者
lc1234 发表于 2020-1-15 23:57
这怎么又两个 菜单

我也是出现了两个菜单

该用户从未签到

推荐
发表于 2019-12-29 19:03 来自手机 | 只看该作者
skill小白,说实在的,真是头大

该用户从未签到

3#
发表于 2019-12-24 19:51 | 只看该作者
支持支持,学习中
  • TA的每日心情
    开心
    2022-9-8 15:14
  • 签到天数: 12 天

    [LV.3]偶尔看看II

    5#
    发表于 2020-1-7 17:01 | 只看该作者
    非常感谢,谢谢

    该用户从未签到

    6#
    发表于 2020-1-13 10:09 | 只看该作者
    实在是太感谢了
  • TA的每日心情
    开心
    2021-4-29 15:31
  • 签到天数: 16 天

    [LV.4]偶尔看看III

    7#
    发表于 2020-1-15 09:23 | 只看该作者
    表示还是么有看懂

    该用户从未签到

    8#
    发表于 2020-1-15 23:56 | 只看该作者
    这怎么又两个 菜单

    该用户从未签到

    9#
    发表于 2020-1-15 23:57 | 只看该作者
    这怎么又两个 菜单

    QQ图片20200115235208.png (4.65 KB, 下载次数: 44)

    QQ图片20200115235208.png

    点评

    我也是出现了两个菜单  详情 回复 发表于 2021-5-20 16:04

    该用户从未签到

    10#
    发表于 2020-3-13 10:49 | 只看该作者
    支持学习,学习中
  • TA的每日心情
    擦汗
    2020-11-12 15:07
  • 签到天数: 40 天

    [LV.5]常住居民I

    11#
    发表于 2020-3-30 08:40 | 只看该作者
    学习学习谢谢

    该用户从未签到

    12#
    发表于 2020-9-3 09:54 | 只看该作者
    学习了,谢谢

    该用户从未签到

    13#
    发表于 2021-4-28 10:28 | 只看该作者
    实在是太感谢了 ^^
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-5-24 12:21 , Processed in 0.093750 second(s), 30 queries , Gzip On.

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

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

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