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

记录SKILL学习之旅

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-2-14 10:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

x
接触skill是2010的时候,历经这么多年,中间间有几次鼓起勇气说要啃一下SKILL,没人带,也一直不得入门,现在被push着,一定要把它啃下来,心理还是没有信心,所以在这里立个flag,时刻提醒自己,也想说出来,某种程度下会有被监督的感觉,虽然有难度,但只要坚持,应该可以的吧,哈,人不是说能做layout的,智商都要达到多少多少吗?那自认为还可以的layout智商应该更可以的吧,哈哈哈,勿喷,自测128,不高,但也够用了吧。我现在的初步行计划是:1 先搜集一些自认为实用的各种SKILL,整合在一起,然后研究下,最好能找到源码,啃啃。2 同步研读收集SKILL的基础函数 SKILL USER GUIDE
                                   3 上手写一些小程序练练手 4 最终目标是能做到自如开发自己想实现的各种功能。
哈,现在还在第一步阶段,一直以来在这件事上,三天打鱼,两天晒网的,如何能持之以恒?
开动 开动 开动
                                    



  • TA的每日心情
    奋斗
    2025-4-27 15:26
  • 签到天数: 81 天

    [LV.6]常住居民II

    2#
    发表于 2022-2-14 11:13 | 只看该作者
    加油。送你几个我自己刚入门级时写的程序给你玩玩

    1. ;;获取以D开头的器件,并打印出来。
    2. procedure(myGetCompName()
    3. prog(
    4. (myDesign myComponent item compName compNameList)
    5.         ;获取顶层设计ID并赋值给Design
    6.         myDesign = axlDBGetDesign()

    7.         ;获取设计中的所有器件
    8.         myComponent = myDesign->components

    9.         ;遍历所有器件
    10.         foreach(item myComponent
    11.                 ;获取器件的名称
    12.                 compName = item->name
    13.                 ;当器件名满足条件
    14.                 if(rexMatchp("^D[0-9]+$" upperCase(compName)) then
    15.                         compNameList = cons(compName compNameList)
    16.                 )
    17.         )

    18.         ;翻转所有元素
    19.         compNameList = reverse(compNameList)
    20.        
    21.         ;控制台打印所有元素
    22.         foreach(item compNameList
    23.                 printf("位号:%L,器件名:%L" item->name item->??)
    24.         )
    25.        
    26.         return(compNameList)
    27. ))
    复制代码

    1. ;;v1.0 初稿
    2. axlCmdRegister("laytop" 'dbSetTopLayer ?cmdType "general")
    3. axlCmdRegister("laybtm" 'dbSetBtmLayer ?cmdType "general")
    4. ;;---------------------------------------------------------
    5. ;;set_layer_visible.il
    6. ;;指令:laytop 和 laybtm
    7. ;;功能:只显示TOP层或者BOTTOM层
    8. ;;描述:v1.0
    9. ;;  可自行修改代码中的CLASS/SUBCLASS
    10. ;;  15.2未测试
    11. ;;---------------------------------------------------------               
    12.                
    13. procedure(dbSetTopLayer()
    14. (let ()
    15.         ;;清空所有层
    16.         axlVisibleDesign(nil)

    17.         ;;设置层可见
    18.         axlVisibleLayer("via class/soldermask_top" t)
    19.         axlVisibleLayer("pin/top" t)
    20.         axlVisibleLayer("via class/top" t)
    21.         axlVisibleLayer("drc error class/top" t)
    22.         axlVisibleLayer("etch/top" t)
    23.         ;;设置层可见
    24.         axlVisibleLayer("board geometry/soldermask_top" t)
    25.         axlVisibleLayer("board geometry/silkscreen_top" t)
    26.         axlVisibleLayer("board geometry/outline" t)
    27.         axlVisibleLayer("board geometry/design_outline" t)
    28.         axlVisibleLayer("package geometry/silkscreen_top" t)
    29.         axlVisibleLayer("package geometry/soldermask_top" t)
    30.         ;;生效
    31.         axlVisibleUpdate(nil)
    32. ))

    33. procedure(dbSetBtmLayer()
    34. (let ()
    35.         ;;清空所有层
    36.         axlVisibleDesign(nil)

    37.         ;;设置层可见
    38.         axlVisibleLayer("via class/soldermask_bottom" t)
    39.         axlVisibleLayer("pin/bottom" t)
    40.         axlVisibleLayer("via class/bottom" t)
    41.         axlVisibleLayer("drc error class/bottom" t)
    42.         axlVisibleLayer("etch/bottom" t)
    43.         ;;设置层可见
    44.         axlVisibleLayer("board geometry/soldermask_bottom" t)
    45.         axlVisibleLayer("board geometry/silkscreen_bottom" t)
    46.         axlVisibleLayer("board geometry/outline" t)
    47.         axlVisibleLayer("board geometry/design_outline" t)
    48.         axlVisibleLayer("package geometry/silkscreen_bottom" t)
    49.         axlVisibleLayer("package geometry/soldermask_bottom" t)
    50.         ;;生效
    51.         axlVisibleUpdate(nil)
    52. ))
    复制代码


    1. ;;v1.2 添加注释
    2. ;;v1.1 整理结构
    3. ;;v1.0 初稿
    4. axlCmdRegister("nextlayer" 'dbNextLayer)
    5. axlCmdRegister("lastlayer" 'dbLastLayer)
    6. ;;---------------------------------------------------------
    7. ;;change_layer.il
    8. ;;指令:nextlayer 和 lastlayer
    9. ;;功能:从第一层开始,让所有的非地层轮流显示。
    10. ;;描述:v1.2
    11. ;;  系统默认的+和-是用来轮循当前激活层(Active Class and Subclass),可以改成这个。
    12. ;;  该命令不改变当前激活层,而是改变可见层。
    13. ;;  15.2未测试
    14. ;;---------------------------------------------------------

    15. temp_curLayer = nil        ;全局变量,

    16. procedure(dbNextLayer()
    17. (let ()
    18.         _dbSetLayerVisible("Next")
    19. ))

    20. procedure(dbLastLayer()
    21. (let ()
    22.         _dbSetLayerVisible("Last")
    23. ))

    24. ;;设置层显示
    25. procedure(_dbSetLayerVisible(direction)
    26. (let (item allLayers itemClass)

    27.         foreach(item axlSubclasses("etch")        ;获取etch class下的的所有subclass的字符串
    28.                 unless(index(item "GND")        ;把字符串不含GND的层先收集起来
    29.                         allLayers = cons(item allLayers)        ;收集
    30.                 )
    31.         )
    32.         allLayers = reverse(allLayers)        ;因为cons是在list开头增加,所有颠倒一下

    33.         when(allLayers
    34.                 temp_curLayer = _dbSearchLayer(allLayers direction)        ;获取下一个要显示的层
    35.                 axlVisibleDesign(nil)        ;关闭所有层显示
    36.                 foreach(itemClass '("pin" "via class" "drc error class" "etch")
    37.                         axlVisibleLayer(strcat(itemClass "/" temp_curLayer) t)        ;打开这些层
    38.                 )
    39.                 axlVisibleUpdate(nil)        ;刷新层显示
    40.         )
    41. ))

    42. ;;寻找下一个要显示的层
    43. procedure(_dbSearchLayer(allLayers direction)
    44. (let (curIndex nextIndex)
    45.        
    46.         if(temp_curLayer then
    47.                 curIndex = lindex(allLayers temp_curLayer)        ;计算当前层在所有层中的序号
    48.                 if(direction == "Next" then                ;如果是NEXT,序号就+1
    49.                         nextIndex = curIndex + 1
    50.                         when(nextIndex > length(allLayers)        ;当序号超出list的长度,自动恢复到list开头
    51.                                 nextIndex = 1
    52.                         )
    53.                 else
    54.                         nextIndex = curIndex - 1        ;如果是LAST,序号就-1
    55.                         when(nextIndex < 1
    56.                                 nextIndex = length(allLayers)        ;当序号小于1,自动恢复到list尾
    57.                         )
    58.                 )
    59.                 temp_curLayer = nthelem(nextIndex allLayers)        ;根据序号,计算下一个层的层名
    60.         else
    61.                 temp_curLayer = car(allLayers)        ;如果第一次运行,就显示第一层
    62.         )
    63.         temp_curLayer                ;运行的最后一行表示返回值。这一行写不写都行,if和else里面最后一行本来就返回temp_curLayer了。
    64. ))


    65.        
    复制代码

    点评

    谢谢了,刚载了Vincent Skill V1.6,很多功能很不错,在看,与EDA365的相互补充使用,已经能满足能多使用场景了。  详情 回复 发表于 2022-2-15 14:36
  • TA的每日心情

    2022-3-7 15:01
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    3#
    发表于 2022-2-15 09:37 | 只看该作者
    好东西支持一下

    该用户从未签到

    4#
     楼主| 发表于 2022-2-15 14:36 | 只看该作者
    db-_- 发表于 2022-2-14 11:13
    加油。送你几个我自己刚入门级时写的程序给你玩玩

    谢谢了,刚载了Vincent Skill V1.6,很多功能很不错,在看,与EDA365的相互补充使用,已经能满足能多使用场景了。

    点评

    你的Vincent Skill V1.6现在还能用吗,我的用不了了  详情 回复 发表于 2022-3-10 11:40
  • TA的每日心情
    擦汗
    2021-10-21 15:19
  • 签到天数: 46 天

    [LV.5]常住居民I

    5#
    发表于 2022-3-10 11:40 | 只看该作者
    萧萧雨下 发表于 2022-2-15 14:36
    谢谢了,刚载了Vincent Skill V1.6,很多功能很不错,在看,与EDA365的相互补充使用,已经能满足能多使用 ...

    你的Vincent Skill V1.6现在还能用吗,我的用不了了
  • TA的每日心情
    奋斗
    2022-8-18 15:28
  • 签到天数: 14 天

    [LV.3]偶尔看看II

    6#
    发表于 2022-3-10 11:45 | 只看该作者
    加油,我也是想学,奈何总没空,只能用现成的先对付,楼主学习心得可分享啊
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-5-28 15:23 , Processed in 0.078125 second(s), 24 queries , Gzip On.

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

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

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