EDA365电子工程师网

标题: Allegro中实现PADS无模Z命令层面切换(源码) [打印本页]

作者: laikelang    时间: 2011-5-28 15:32
标题: Allegro中实现PADS无模Z命令层面切换(源码)
在Command命令行中输入
L<n> [n] [n]...
n表示所在层序列,支持多层输入。例:显示第1,3层 Command > L1 3回车

axlCmdRegister("layernumvisible" 'layernumvisible ?cmdType "general")

procedure( layernumvisible( @rest num)
  _LCSetNumLayVis( num)
);end-procedure

;###########################################################
;#                 number layer visible                    #
;###########################################################

defun( _LCSetNumLayVis ( lnum, @optional msg)
prog( ( class, i, n, layer)
  n = 0
  ln = nil
  foreach( enum, lnum
           num = atoi( enum)
           if( num then
               if( num <= axlGetParam( "paramLayerGroup:ETCH") -> nChildren && num > 0 then
                   class = nthelem( num axlGetParam( "paramLayerGroup:ETCH") -> groupMembers)
                   i = makeVector( 11 nil)
                   i[0] = axlGetParam( "paramLayerGroup:ANTI ETCH") -> visible != nil
                   i[1] = axlGetParam( "paramLayerGroup:BOUNDARY") -> visible != nil
                   i[2] = axlGetParam( "paramLayerGroup:ROUTE KEEPOUT") -> visible != nil
                   i[3] = axlGetParam( "paramLayerGroup:VIA KEEPOUT") -> visible != nil
                   i[4] = axlIsVisibleLayer( "BOARD GEOMETRY/CONSTRAINT_AREA")
                   i[5] = axlIsVisibleLayer( "ROUTE KEEPIN/ALL")
                   i[6] = axlIsVisibleLayer( "ROUTE KEEPOUT/ALL")
                   i[7] = axlIsVisibleLayer( "DRC ERROR CLASS/ALL")
                   i[8] = axlIsVisibleLayer( "VIA KEEPOUT/ALL")
                   i[9] = axlIsVisibleLayer( "ANTI ETCH/ALL")
                   i[10] = axlIsVisibleLayer( "BOUNDARY/ALL")
                   if( n == 0 then
                       axlVisibleDesign( nil)
                     else
                       axlVisibleSet( layer)
                     );end-if
                   axlVisibleLayer( "BOARD GEOMETRY/OUTLINE", t)
                   axlVisibleLayer( strcat( "ANTI ETCH/", class), i[0])
                   axlVisibleLayer( strcat( "BOUNDARY/", class), i[1])
                   axlVisibleLayer( strcat( "ROUTE KEEPOUT/", class), i[2])
                   axlVisibleLayer( strcat( "VIA KEEPOUT/", class), i[3])
                   axlVisibleLayer( "BOARD GEOMETRY/CONSTRAINT_AREA", i[4])
                   axlVisibleLayer( "ROUTE KEEPIN/ALL", i[5])
                   axlVisibleLayer( "ROUTE KEEPOUT/ALL", i[6])
                   axlVisibleLayer( "DRC ERROR CLASS/ALL", i[7])
                   axlVisibleLayer( "VIA KEEPOUT/ALL", i[8])
                   axlVisibleLayer( "ANTI ETCH/ALL", i[9])
                   axlVisibleLayer( "BOUNDARY/ALL", i[10])
                   axlVisibleLayer( strcat( "PIN/", class), t)
                   axlVisibleLayer( strcat( "VIA CLASS/", class), t)
                   axlVisibleLayer( strcat( "DRC ERROR CLASS/", class), t)
                   axlVisibleLayer( strcat( "ETCH/", class), t)
                   if( class == "TOP" || class == "BOTTOM" then
                       axlVisibleLayer( strcat( "PACKAGE GEOMETRY/SILKSCREEN_", class), t)
                      );end-if
                   n++
                   ln = append1( ln num)
                 else
                   if( num == 0 then
                       if( n == 0 then
                           axlVisibleDesign( nil)
                           axlVisibleLayer( "BOARD GEOMETRY/OUTLINE" t)
                           class = nil
                           n++
                           ln = append1( ln num)
                         );end-if
                     else
                       axlMsgPut( "E- The %d etch layer is not exist.", num)
                     );end-if
                 );end-if
               else axlMsgPut( "E- %L is not number.", enum)
             );end-if
           if( n != 0 then layer = axlVisibleGet())
         );end-foreach
  if( n == 1 && class then axlSetActiveLayer( strcat( "ETCH/", class)))
  if( n != 0 && ! msg then
      axlVisibleUpdate( t)
      msg = ""
      foreach( n ln
               sprintf(layer "%d", n)
               if( msg == "" then msg = layer else msg = strcat( msg, " ", layer))
             );end-foreach
      axlMsgPut( "The %s etch layer display.", msg)
    );end-if
);end-prog
);end-defun

;###########################################################
;#                 customize shortcut key                  #
;###########################################################

prog( ( n, s, key)
  n = 0
  while( n < 255
         sprintf(key "l%d", n)
         sprintf(s "layernumvisible %d", n)
         axlSetAlias( key, s)
         sprintf(key "L%d", n)
         sprintf(s "layernumvisible %d", n)
         axlSetAlias( key, s)
         n++
       );end-while
);end-prog

作者: deargds    时间: 2011-5-28 15:36
感谢分享
作者: lh08101276    时间: 2011-5-29 13:12
谢谢分享~!
作者: lidin    时间: 2011-5-30 12:29
做个记号,谢谢分享
作者: penny190    时间: 2011-6-2 17:29
很好用,謝謝大大的分享
作者: gray    时间: 2011-6-3 10:32
感谢分享
作者: zwzlove    时间: 2011-6-8 14:14
感谢分享
作者: JIMDENG    时间: 2011-7-13 20:43
这个要如何加载到SKILL中?请问一下用过的朋友。谢谢!
作者: ayumi    时间: 2011-7-23 01:23
thanks!
作者: mingx    时间: 2011-7-25 13:49
thanks!
作者: dw4736    时间: 2011-8-1 09:32
好东西,谢谢分享!!!!!!!!!!
开放源码,楼主好样的
作者: askww    时间: 2011-8-14 12:12
感谢lz,很有学习价值
作者: love8488    时间: 2011-8-21 22:00
顶顶顶顶顶顶

作者: pmp_mcu    时间: 2011-8-22 23:51
多谢分享。。。。。。。。。。。。。。
作者: lcywzg2008    时间: 2011-9-8 13:10
谢谢分享
作者: yujian    时间: 2011-9-21 20:08
Thank you very much !
作者: suzhiyuan0418    时间: 2011-9-26 23:29
请问一下这些源码要放在那个文件里面才能使用啊?
作者: suzhiyuan0418    时间: 2011-9-27 21:21
deargds 发表于 2011-5-28 15:36
感谢分享

请问一下这些源码要放在那个文件里面才能使用啊?谢谢!!!
作者: david_kolo    时间: 2011-9-29 09:18
多谢了,有个问题,如果要显示所有的routing层呢,好像还不行????????
作者: chengxiaoyang    时间: 2011-10-31 11:16
谢谢分享
作者: chengxiaoyang    时间: 2011-10-31 11:38
怎么使用,能不能说明白点,怎么加载?
作者: 111寒夜叶    时间: 2013-9-11 18:06
好东西啊  找好久了
作者: qing_cheng    时间: 2013-9-12 09:24
感谢分享~~很好用
作者: newcomsky    时间: 2013-12-12 07:57
非常好
作者: JIMDENG    时间: 2013-12-19 23:59
很好,谢谢楼主!
作者: JIMDENG    时间: 2013-12-20 00:01
很好,谢谢楼主!
作者: hunterwang    时间: 2013-12-20 18:00
Great
作者: chengxiaoyang    时间: 2014-4-12 11:00
做个记号,谢谢分享
作者: Marcen521    时间: 2014-4-16 16:47
感谢分享
作者: hhit2009    时间: 2014-4-29 10:16
ok 好使
作者: YMLEI    时间: 2014-6-20 15:17
谢谢不错
作者: zjfc78154    时间: 2014-6-21 23:34
谢谢分享
作者: gl2050    时间: 2014-6-24 15:41
谢谢不错
作者: YMLEI    时间: 2014-6-25 21:03
感谢分享
作者: 飞天    时间: 2014-8-7 22:51
强啊
作者: 花心刺猬    时间: 2014-8-22 21:06
标记下,谢谢分享!
作者: kkman2000    时间: 2015-8-21 14:45
支持支持支持  非常感謝
作者: cooleechen    时间: 2016-1-11 19:04
感謝分享
作者: brady.lu    时间: 2016-1-12 08:43
谢谢.
作者: 迪亚波罗    时间: 2016-1-13 09:45
这个怎么用。。。。
作者: marscj    时间: 2016-1-14 01:48
感謝分享快樂多~~學習學習~~感恩收下
作者: zhengy    时间: 2016-1-31 11:16
感谢分享
作者: kszdw    时间: 2016-2-2 09:53
这个必须得好评。多谢分享源码。学习了。
作者: angelly    时间: 2016-3-14 14:07
好东西,感谢分享~
作者: purnedy    时间: 2016-3-17 09:32
厉害呀
作者: jyl518    时间: 2016-3-18 13:53
谢谢分享
作者: hy20060614    时间: 2016-7-18 13:27
谢谢分享
作者: mentorkk    时间: 2016-11-14 17:08
感谢分享
作者: wgs20120904    时间: 2017-7-19 01:30
强大
作者: ietdj2016    时间: 2017-7-20 17:38
很不错 谢谢分享
作者: happy666    时间: 2017-7-26 15:11
很實用,謝謝分享~




欢迎光临 EDA365电子工程师网 (https://bbs.elecnest.cn/) Powered by Discuz! X3.2