本文作者原创,因资料来源于EDA365,先发于EDA365,在本网站作一备份。

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

测试用的skill是来自论坛的http://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要加进去,不然是不会有菜单的。

完成了。本贴给新入门的同行看,高手请指正。

Skill加载和管理(设置相对路径与动态菜单)相关推荐

  1. stm32h7内存分配_stm32h7“分散加载方式管理多块内存”

    默认情况下,我们都是通过 MDK 的 option 选项设置 Flash 和 RAM 大小,如图1 图1 这种情况下,不方便用户将变量定义到指定的 CCM 或者 SDRAM 中.而使用attribut ...

  2. wemall app商城源码中基于JAVA的Android异步加载图片管理器代码

    wemall doraemon是Android客户端程序,服务端采用wemall微信商城,不对原商城做任何修改,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可随意定制修改.本文分享其中 ...

  3. WinXPSP2:IE浏览器加载项管理(转)

    WinXPSP2:IE浏览器加载项管理(转) 什么是Internet Explorer加载项? Internet Explorer加载项是一些为了风方便和有效的浏览而加载到浏览器上的组件.常见的加载项 ...

  4. HTML中首加载项,IE浏览器弹出加载项管理如何解决

    很多小伙伴们都不清楚IE浏览器弹出加载项管理如何解决,接下来小编带来解决IE浏览器弹出加载项管理方法说明,希望可以帮助到大家. IE是国内很多人使用的一款浏览器,由于稳定性方面不是很强,所以有的时候就 ...

  5. VS报错:未能加载项目文件。未能找到路径

    打开项目时提示" 未能加载项目文件.未能找到路径" 用"记事本"打开你的解决方案.sln文件 这个时候你就可以看见那些报错的路径名,一般是文件路径不对,修改后报 ...

  6. [转载]spring+mybatis加载属性文件设置数据源失败原因及解决方案 - 泡在网上的日子

    spring+mybatis加载属性文件设置数据源失败原因及解决方案 - 泡在网上的日子 http://www.jcodecraeer.com/a/chengxusheji/java/2013/062 ...

  7. element tree ui 全选_element-ui Tree之懒加载叶子节点设置半选效果

    本来是不太想动的... 无可奈何,看到一句话[业精于勤, 荒于嬉]便还是动手写一写加深理解的同时给以后的自己留个备份吧... element-ui Tree组件如何给具有懒加载的tree设置半选效果? ...

  8. unity webgl加载全屏设置

    unity webgl加载全屏设置 <body><div class="webgl-content"style="width: 100%; height ...

  9. android 动态加载sdk,LiteAVSDK集成,因此可以动态加载库

    在Android开发中,Android Studio用于集成第三方SDK(例如,腾讯视频云移动直播,播放器,短视频以及实时音频和视频). 通常有两种集成方法: aar集成和jar + so集成. An ...

最新文章

  1. 玩转车联网1---初识OBD和行车助手
  2. 【以太坊】深入理解智能合约(合约调合约)
  3. 修改openwrt 编译 image的大小
  4. win7计算机中丢失mfc120,mfc120.dll 64位
  5. publiccms中,怎么修改默认的端口8080以及默认上下文名称
  6. java zip ant 密码_java对 zip文件的压缩和解压(ant解决中文乱码)
  7. 想用好大数据,你需要先了解这些事
  8. html5手指点击速度,CPS手速测试 - 鼠标点击速度测试插件
  9. 【detectron】FPN网络输入
  10. 锂离子电池电压与容量的关系及容量计算方法
  11. Android studio开发一:三个页面简单实现QQ登录界面的延时跳转
  12. 主成分分析逆变换_主成分分析(PCA)
  13. (原創) 一個關於C語言字串有趣的小題目 (C/C++) (C)
  14. 字符识别引擎Calamari总结
  15. python 百度地图api_使用Python玩转百度地图Api
  16. objective-c delegate
  17. 史上最全Maven教程(一)
  18. c语言调试时出现的三种错误,C语言课件 第十四章 常见错误和程序调试
  19. ssm餐厅线上点菜系统、点餐系统的设计与实现
  20. 摊上事儿的网易邮箱和安全圈的那些“防御机制”

热门文章

  1. js 自定义图片上传
  2. arcmap提取dem高程_如何使用ArcGIS从DEM数据中提取水系
  3. python 递增递减数列
  4. PAT甲级真题1166
  5. 再见了微服务!K8S 云原生架构已成气候!
  6. VScode终止运行代码/程序/停止死循环
  7. ZJ-6型压电测试仪(准静态d33/d31(+d15)测量仪)
  8. 2.4、PHP数组与数组结构
  9. Mac 卸载 隐蔽软件 Core_Sync 的步骤
  10. Tkinter教程之Message篇